你應(yīng)該學(xué)習(xí)哪種編程語(yǔ)言?
學(xué)習(xí)一門(mén)新的編程語(yǔ)言是在你的職業(yè)生涯中繼續(xù)前進(jìn)的好方法,但是應(yīng)該學(xué)習(xí)哪一門(mén)呢?
如果你想要開(kāi)始你的編程生涯或繼續(xù)前進(jìn),那么學(xué)習(xí)一門(mén)新語(yǔ)言是一個(gè)聰明的主意。但是,大量活躍使用的語(yǔ)言引發(fā)了一個(gè)問(wèn)題:哪種編程語(yǔ)言是***的?要回答這個(gè)問(wèn)題,讓我們從一個(gè)簡(jiǎn)單的問(wèn)題開(kāi)始:你想做什么樣的程序?
如果你想在客戶(hù)端進(jìn)行網(wǎng)絡(luò)編程,那么特定語(yǔ)言 HTML、CSS 和 JavaScript(看似無(wú)窮無(wú)盡的方言之一)是必須要學(xué)習(xí)的。
如果你想在服務(wù)器端進(jìn)行 Web 編程,那么選擇包括常見(jiàn)的通用語(yǔ)言:C++、Golang、Java、C#、 Node.js、Perl、Python、Ruby 等等。當(dāng)然,服務(wù)器程序與數(shù)據(jù)存儲(chǔ)(例如關(guān)系數(shù)據(jù)庫(kù)和其他數(shù)據(jù)庫(kù))打交道,這意味著 SQL 等查詢(xún)語(yǔ)言可能會(huì)發(fā)揮作用。
如果你正在為移動(dòng)設(shè)備編寫(xiě)原生應(yīng)用程序,那么了解目標(biāo)平臺(tái)非常重要。對(duì)于 Apple 設(shè)備,Swift 已經(jīng)取代 Objective C 成為***語(yǔ)言。對(duì)于 Android 設(shè)備,Java(帶有專(zhuān)用庫(kù)和工具集)仍然是主要語(yǔ)言。有一些特殊語(yǔ)言,如與 C# 一起使用的 Xamarin,可以為 Apple、Android 和 Windows 設(shè)備生成特定于平臺(tái)的代碼。
那么通用語(yǔ)言呢?通常有各種各樣的選擇。在動(dòng)態(tài)或腳本語(yǔ)言(如 Perl、Python 和 Ruby)中,有一些新東西,如 Node.js。而 Java 和 C# 的相似之處比它們的粉絲愿意承認(rèn)的還要多,仍然是針對(duì)虛擬機(jī)(分別是 JVM 和 CLR)的主要靜態(tài)編譯語(yǔ)言。在可以編譯為原生可執(zhí)行文件的語(yǔ)言中,C++ 仍在使用,還有后來(lái)出現(xiàn)的 Golang 和 Rust 等。通用的函數(shù)式語(yǔ)言比比皆是(如 Clojure、Haskell、Erlang、F#、Lisp 和 Scala),它們通常都有熱情投入的社區(qū)。值得注意的是,面向?qū)ο笳Z(yǔ)言(如 Java 和 C#)已經(jīng)添加了函數(shù)式構(gòu)造(特別是 lambdas),而動(dòng)態(tài)語(yǔ)言從一開(kāi)始就有函數(shù)式構(gòu)造。
讓我以 C 語(yǔ)言結(jié)尾,它是一種小巧、優(yōu)雅、可擴(kuò)展的語(yǔ)言,不要與 C++ 混淆。現(xiàn)代操作系統(tǒng)主要用 C 語(yǔ)言編寫(xiě),其余部分用匯編語(yǔ)言編寫(xiě)。任何平臺(tái)上的標(biāo)準(zhǔn)庫(kù)大多數(shù)都是用 C 語(yǔ)言編寫(xiě)的。例如,任何打印 Hello, world!
這種問(wèn)候都是通過(guò)調(diào)用名為 write
的 C 庫(kù)函數(shù)來(lái)實(shí)現(xiàn)的。
C 作為一種可移植的匯編語(yǔ)言,公開(kāi)了其他高級(jí)語(yǔ)言有意隱藏的底層系統(tǒng)的詳細(xì)信息。因此,理解 C 可以更好地掌握程序如何競(jìng)爭(zhēng)執(zhí)行所需的共享系統(tǒng)資源(如處理器、內(nèi)存和 I/O 設(shè)備)。C 語(yǔ)言既高級(jí)又接近硬件,因此在性能方面***,當(dāng)然,匯編語(yǔ)言除外。***,C 是編程語(yǔ)言中的通用語(yǔ)言,幾乎所有通用語(yǔ)言都支持某種形式的 C 調(diào)用。
有關(guān)現(xiàn)代 C 語(yǔ)言的介紹,參考我的書(shū)籍《C 語(yǔ)言編程:可移植的匯編器介紹》。無(wú)論你怎么做,學(xué)習(xí) C 語(yǔ)言,你會(huì)學(xué)到比另一種編程語(yǔ)言多得多的東西。
你認(rèn)為學(xué)習(xí)哪些編程語(yǔ)言很重要?你是否同意這些建議?在評(píng)論告知我們!