2015-06-14 130 views
4

这里是利用两个Unix工具的一个示例:现代Unix工具是用什么编程语言编写的?

ls | grep "MMC" 

lsgrep两种Unix工具。

我相信无论lsgrep是用C写(纠正我,如果我错了)

使用什么编程语言实现了现代的Unix工具?现代的Unix工具是否仍然在C中实现?或者,是否使用其他语言?

+1

'GNU Parallel'和'Exiftool'是用Perl编写。 –

回答

4

Unix工具是用多种语言编写的。大多数经典工具都是用C和C++等语言编写的,但Perl和Python也是流行的选择。 C仍然是主要的语言,但似乎Go可能会在编写Unix命令行工具时找到一些用处。

+4

更不用说Perl和(Python的最常见的实现)也是用C编写的,甚至C本身也是用C编写的;) – lcd047

+1

@ lcd047:确切地说,C的大部分*实现都是用C.没有其他语言无法使用的根本原因。特别是,gcc正在从C迁移到C++(我不知道迁移的当前状态)。 –

4

UNIX最初由Ken Thompson和Dennis Ritchie以汇编语言编写,但很快就被迁移到了Thompson的C语言。早期的UNIX内核,shell,文件系统和基本实用程序都是用C语言编写的,这一点对于我今天所知道的所有UNIX版本都是如此。

然而,并不是所有的东西都用C写成(那会很痛苦)。 UNIX的一个强大功能是它的外壳,其中的每一种风格(sh,bash,csh,tcsh ksh,zsh,...)都通过脚本实现了自动化。一些“UNIX工具”通过在shell脚本中将其他编译工具缝合在一起来实现。

其他工具的实现与shell脚本类似,但是由其他脚本语言(如perl或python)执行。 Python最近很流行,甚至被用来编写早期的UNIX程序员永远不会梦想用解释型脚本语言编写的前端图形程序。

由于传统和C的动力,C++在UNIX中较少见。 C++还需要安装单独的C++标准库。一个UNIX系统可以相处得很好,不用接触C++或它的标准库。一个主要的例外是GCC,因为4.8以后的版本是用C++编译的。

另请参见:

+1

GCC通过[4.8版本](https://www.gnu.org/software/gcc/gcc-4.8/changes.html)在内部切换到C++。 (4.0是在2006年。) – Potatoswatter