2015-06-14 89 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