Linux 上启动时使用什么语言?

Linux 上启动时使用什么语言?

我即将开始在普渡大学攻读 4 年制信息安全学位。该学位不要求任何编程课程。因此,我唯一能选修的课程是偶尔的选修课。因此,我的大部分学习都将靠自己完成。在高中四年级开始时,我决定完全转向 Linux。到目前为止,我一直在学习一些 Linux 和安全知识。但是,我也相信学习几种编程语言对我来说也很重要。

基本上,我计划在学习使用 Vim 的同时学习编程。所以这很可能是一个缓慢的过程。不过,最终我认为这是值得的。正如我所说,我将进入安全领域,所以我将主要创建与安全相关的应用程序,其中大部分与网络相关。我还想开始开发 Android 应用程序,但那将是以后的事了。

话虽如此,我还是有几个想法。我考虑从 JavaScript 开始,因为它是跨平台的,而且我以前也看到过有人建议我使用它。我还听说了很多关于 Ruby 的信息,或者可以用 C 走 Linux 的自然路线。我应该朝哪个方向走呢?

答案1

首先:bash以及常用的命令行实用程序。Bash是操作系统的默认用户界面,Linux 系统上的许多程序都会在某种程度上被包装在 shell 脚本中。它可能很古怪,有一些怪癖,而且经常看起来非常愚蠢,但这是你必须处理的事情,所以要习惯它。诸如 、 、 、grepdiffheadtail标准sort工具uniq不仅对 shell 脚本非常有帮助,而且对提高命令行效率也很有帮助。

至少学习一些c。它是系统最低层所用的代码,它将帮助你更好地理解整个系统。

选择你喜欢的任何高级语言。,,,,Python随便什么——只要你喜欢。这是你真正开始学习如何“编程”的地方,从现在开始,学习更多语言会更容易,而且rubyperljava保持学习

答案2

你会发现每个人都会推荐他们最喜欢的语言。我最喜欢的语言是 Perl,所以我推荐它。:) 但是,除了我的个人偏好之外,还有一些很好的理由让你考虑使用 perl:

首先,perl 是一种出色的通用语言。通过编写简单的脚本来执行与 shell 脚本相同的操作(例如操作文件和根据用户输入做出决策),可以轻松开始使用 perl。这为编程的一般概念提供了非常简单且循序渐进的介绍。Perl 已经存在了很长一段时间,因此有很多资源(书籍和网站)可供入门。

其次,perl 是一种非常强大且富有表现力的语言,支持所有现代编程功能。我已经使用它超过 15 年了,并且仍在学习更高效的新方法。例如,如果您想探索面向对象编程,perl 可以做到这一点(特别是通过驼鹿)。

第三,perl 具有其官方附加存储库几乎无限的功能和灵活性,亚太网络。例如,为了遵循编写安全软件的想法,假设您想开发某种自定义网络安全扫描程序。您可以先使用NMAP::扫描仪作为扫描引擎,然后在其基础上编写自己的调整和改进。

最后,如果你想探索网络编程,Perl 也有这个功能。用 Perl 编写网络软件的一种流行现代方法是催化剂,它提供了一个现代的 MVC 网络框架,用于快速开发任何类型的网络应用程序。

综上所述,perl 的优势在于它允许您从编写小型命令行脚本和程序开始,逐渐发展为编写功能齐全的现代应用程序。当然,这种灵活性的代价是复杂性。您需要自行研究和学习如何以正确的方式做事,perl 不会像其他语言那样强制执行良好的做法。我个人喜欢这种自由,尤其是加上网络上所有关于如何使用 perl 的优秀资源。

答案3

三种语言将对你大有裨益。按重要性依次递减(即,第一种是最重要的):

  1. 伪代码。通常,您所使用的实现将是六种语言和工具的混合体,您只会直接了解其中的一些。但是,如果您知道正在实现的是什么模式,那么您就可以确定传递给某个部分的输入是什么以及它应该给出什么输出,对其进行排除性测试,并确定是否是该部分出现了问题。
  2. C。无论好坏,它都是运行(Linux)世界的,它为您提供了足够贴近地面的视角,让您可以理解任何高级语言实际上在做什么(例如 PHP 的传递引用,或 Java 的线程模型)。
  3. 除了 C++ 之外的任何东西. 函数式语言,如 SQL,或者更好的 Haskell,或者一些不那么 C 的语言(如果其他方法都失败了,Java 也可以,但它仍然非常程序化)在这里会得到高分;这个想法是让你的大脑理解一些与你以前所做的事情完全不同的东西,这样你就不得不意识到你以前所做的事情的局限性。就纯粹的实用性而言,狂欢可能也属于这个列表,但是如果你没有其他基础,你最终只会用 bash 语法编写 C 而不是真正探索它的强大功能。

答案4

我即将在普渡大学攻读 4 年制信息安全学位。该学位不要求任何编程课程。

此时此刻,只有我一个人觉得天哪!!!

我也相信学习几门编程语言对我来说也很重要

我会这么说。虽然你并不真正期望成为一名熟练的程序员,但你可能需要模拟/重现攻击所需的技能,并了解编程过程的工作原理。你还需要分析数据和从大量来源(如日志)中提取信息的技能。JimB 提到了 bash - 虽然你肯定会使用它 - 但只需大约几个小时就可以学习基本知识。实际上,你唯一可能看到 bash 的地方是在 Linux 系统上 - 但其他 shell 非常相似。

我建议学习 awk 和/或 Perl 进行数据处理。不必担心勾选面向对象框的任何要求 - 但我建议也查看非过程语言。

学习 C 还会让你了解到很多关于代码如何变成可执行程序的信息(编译只是一个非常复杂的过程的一个步骤)。

对于对 Android/移动开发感兴趣的人来说,Java 显然是最佳选择 - 但 Java 极力避免开发人员面对操作和协议的现实问题 - 根据我的经验,Java 应用程序的安全问题就出在这里。也就是说,Java 可能会帮助你实现最终目标,而且简历也会因此增色不少,但不要指望学习 Java 能对你的安全性知识有太大的补充。

相关内容