想自學一種編程語言,各種編程語言都有什麼區別?

 

 

C:1973年的貝爾實驗室中,Ken Thompson和Dennis Ritchie在做UNIX系統內核移植開發時,感覺使用匯編語言很難實現,於是使用BCPL開發,並對其改進推出了B語言,但B語言開發的UNIX內核無法達到預期要求,而後又在此之上開發了C語言,並用C語言重新編寫了UNIX內核。此外,Linux和Windows內核也是用C語言編寫的。
  • 應用領域:操作系統、編譯器、嵌入式硬件、網絡服務器;
  • 優勢:接近底層,跨平臺和可移植性良好;簡潔小巧,靈活可靠,運行效率高;幾乎所有編程語言都脫胎於C,直接或間接借鑑了C的概念,掌握C語言有助於瞭解其他語言;
  • 弊端:開發效率低,週期長;
C++:1979年4月,Bjarne Stroustrup在貝爾實驗室開始分析UNIX內核,設法將其分佈到由局域網連接的計算機網絡上。由於缺少現有工具,爲了便於描述內核的模塊化和通信模式,Bjarne Stroustrup開始設計一門新語言,設計目標是既能保持Simula的程序組織功能,又能兼顧C語言的效率和靈活性。1979年10月,一個名爲Cpre的預處理程序誕生,它是一個帶類的C(C with Classes)。1983年,C with Classes改名爲C++,並開始引入虛函數、重載、引用等新特性。1998年,C++標準委員會發布了C++的首個國際標準——ISO/IEC 14882:1998,簡稱C++98。C++仍處於不斷髮展中,特性越來越複雜,至今經歷了C++11/14/17等標準,C++20也即將到來,C++11及其之後的標準被稱爲Modern C++。
  • 應用領域:操作系統、虛擬機、瀏覽器、數據庫、編譯器、桌面應用、圖像處理、流媒體、高頻交易、區塊鏈、軍工軟件、搜索系統、遊戲引擎、服務器、虛擬現實、其他語言的庫;
  • 優勢:C++幾乎可以使用C的所有特性,並提供了大量新特性;C++保留了C的優點,靈活可靠,運行效率高,又有比C更高的開發效率;掌握C++能更深入地瞭解Java、Python的內存管理機制,並能快速上手其他編程語言;
  • 弊端:規模龐大,蘊含多種編程範式,學習曲線陡峭;C++幾乎提供瞭解決一切問題的組件,但幾乎沒有人能完全掌握,而只需要選用一部分子集;C++嘗試適用所有場景,反而導致對大部分場景的支持都不夠突出;必須兼容舊標準,歷史包袱重;
  • 如果大家對C/C++感興趣的話,可以加一下我們的學習交流Q羣:637  935  295,免費領取一套學習資料和視頻課程喲~
C#:1995年,Sun發佈Java,Java良好的跨平臺性使其逐漸成爲企業開發的首選。爲了對抗Java,微軟公司的首席架構師Anders Hejlsberg着手研發了一種名爲Cool(C-like Object Oriented Language)的編程語言,並於2000年在PDC(微軟專業開發者會議)上以C#(C Sharp)的名稱公佈。
  • 應用領域:桌面應用、遊戲客戶端;
  • 優勢:全面集成.Net庫,文檔豐富,易於上手;
  • 弊端:捆綁微軟,國內不如Java應用範圍廣泛;
Objective-C:1983年,Stepstone公司的Brad Cox和Tom Love發明了Objective-C,它遵循ANSI C的標準,基於Smalltalk改進,在C的基礎上加入了面向對象特性。1985年,被趕出蘋果的Steve Jobs創辦了NeXT公司,NeXT獲得了使用Objective-C來開發NeXTSTEP Toolkit的授權,這個工具包就是Cocoa的前身。1996年,蘋果收購NeXT,Steve Jobs重回蘋果,並使用Objective-C重新設計了Mac OS。2007,iPhone問世,3G/4G通信技術日趨成熟,2011年正式進入移動互聯網時代,Objective-C火爆一時。
  • 應用領域:iOS、Mac OS開發;
  • 優勢:開發蘋果程序的首選;能與C/C++/Swift混合編程;
  • 弊端:使用範圍有限,只能用於開發蘋果的程序;2014年WWDC(蘋果全球開發者大會)上,蘋果發佈了新的編程語言Swift,Objective-C未來可能被Swift取代;
Java:1991年,Sun公司爲了開拓消費類電子產品市場,開始啓動由James Gosling領導的Green項目。James Gosling在研發過程中發現,消費類電子產品要求高可靠、費用低、標準化、使用簡單,用戶不關心CPU型號,也不欣賞昂貴的RISC處理器。爲了使整個系統與平臺無關,項目從改寫C編譯器開始着手。在此期間,小組發現C語言經常被開發者錯誤使用,C缺少垃圾回收、多線程、移植安全性、分佈程序設計等特性。最終Sun的創始人Bill Joy決定開發一種集C和Mesa搭成的新語言,提議在C的基礎上開發一種面向對象的環境。起初James Gosling嘗試修改和拓展C的功能,並稱爲C--,後來他注意到辦公室窗外的一棵橡樹(oak),於是決定將新語言命名爲Oak。James Gosling的設計中,編譯後產生的代碼運行在操作系統的虛擬機解釋器上,從而實現平臺無關性和可移植性。項目起初用於機頂盒領域,但由於市場不成熟,初戰告敗。1994年,團隊決定將技術用於萬維網,正好趕上了互聯網時代的浪潮。由於Oak的商標已經被註冊過了,在命名徵集會上,排名第一的名字Silk被James Gosling強烈反對,排名第二和第三的仍有商標問題,最終排名第四的Java得以採用。Java是印度尼西亞爪哇島的英文名稱,爪哇島盛產咖啡,因此Java中的許多類庫與咖啡豆有關,如JavaBeans、NetBeans、ObjectBeans,Java的logo就是一杯冒着熱氣的咖啡。1995年5月23日,Java正式發佈。1996年1月,JDK1.0誕生。2010年10月24日,Oracle以74億美元收購了Sun Microsystems。ASF(Apache軟件基金會)呼籲JCP(制定Java規範的組織)反對Oracle提出的Java 7和Java 8路線圖,除了Google無人響應。ASF和Google反對的理由與技術無關,而是與Oracle的應用範圍和許可授權限制有關。2010年11月,ASF退出了JCP。
  • 應用領域:Android、Web應用、服務器、大數據、企業應用;
  • 優勢:易於學習,開發效率高,市場需求旺盛;垃圾回收機制安全可靠,不容易出現問題;依賴於JVM,跨平臺性良好;庫豐富,並在不斷髮展,社區資料完善;
  • 弊端:靈活性差,不能隨心所欲地控制內存;依賴於JVM,運行效率受其影響;除了語言本身外需要學習過多框架;
JavaScript:互聯網開始流行時,網頁變得越來越複雜,然而大部分因特網用戶還只能通過 28.8 kbit/s 的調制解調器連接到網絡。用戶填完一個表單,點擊提交按鈕,等待了30秒的服務器處理後,看到的可能只是某個地方填錯了的提示。爲了解決這個問題,Netspace公司計劃開發一種能在客戶端完成基本驗證的技術,當時Brendan Eich正着手爲將於1995年發行的Netscape Navigator 2.0開發一個名爲LiveScript的腳本語言,爲了趕在發佈日期前完成,Netscape與Sun成立了一個開發聯盟。此時Java正被媒體熱炒,Netscape爲了蹭Java的熱度,臨時將LiveScript改名爲了JavaScript。隨着Node.js和React的出現,JavaScript的應用領域也越來越廣泛。
  • 應用領域:Web前端、後端、移動應用、內嵌腳本語言;
  • 優勢:解釋型語言,反應快速,可立即運行;依賴於瀏覽器,與操作系統環境無關;
  • 弊端:代碼在用戶計算機上執行,可能被惡意活動利用,存在安全性問題;在不同瀏覽器上解釋方式不同,可預測性差;
PHP:PHP繼承自一個名爲PHP/FI的老工程,PHP/FI由Rasmus Lerdorf於1995年創建,最初只是一套用來跟蹤訪問他主頁的人們的信息的Perl腳本,這套腳本名爲Personal Home Page Tools。隨着更多功能需求的增加,Rasmus寫了一個更大的C語言的實現,它可以訪問數據庫,可以讓用戶開發簡單的動態Web程序,併發布了源代碼,以便每個人都可以使用並改進。最初PHP指的是Personal Home Page,如今PHP的含義是PHP: Hypertext Preprocessor。
  • 應用領域:Web後端、移動應用後端;
  • 優勢:易上手且功能豐富,開發效率高;開源,社區龐大活躍,解決方案充足;跨平臺性良好;與各類數據庫、文件系統協作順暢;
  • 弊端:學習門檻低,存在大量經驗不足的開發者的開源代碼;大量古老的開源代碼仍被使用;命名規範混亂;
Python:1989年聖誕節期間,在荷蘭首都Amsterdam的Guido von Rossum爲了打發時間,決定開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。Guido是喜劇團體Monty Python的愛好者,因此將電視劇《Monty Python's Flying Circus》名字中的Python作爲了新語言的名字。1991年,第一個Python編譯器誕生,它由C語言實現,並能調用C的庫文件。由於大量深度學習框架被封裝爲Python庫,伴隨人工智能的興起,加上自身簡單易學的特點,Python成爲了當下最受歡迎的語言之一。
  • 應用領域:Web、科學計算、機器學習、爬蟲、數據分析、量化交易、雲計算、運維;
  • 優勢:抽象度高,簡單易學,開發快速;開源,強大豐富的庫;代碼強制要求縮進,整潔規範;
  • 弊端:解釋型語言,運行效率差;代碼不能加密;縮進過多導致可讀性下降;
Ruby:松本行弘認爲編程應該專注於人而非計算機,要讓程序員感到編程是一件快樂的事,於是在1995年開發了一種更人性化的編程語言。最初的目標只是想實現Perl所具備的功能,因此松本行弘從Perl借鑑了很多內容,也因爲受Perl的影響,他決定用一種寶石來命名新語言,最終使用了一位同事的生肖石——代表七月的Ruby(Pearl代表六月)。Rails框架的出現使得Web的開發更爲簡單快速,因此Ruby on Rails常被作爲初創公司的技術選型。
  • 應用領域:Web;
  • 優勢:語法糖豐富,易於上手,開發快速;
  • 弊端:解釋型語言,運行效率差;小衆,常用於初創公司;
Lua:Lua是一個簡潔、輕量、可擴展的程序設計語言,由巴西里約熱內盧天主教大學的Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo所組成的研究小組於1993年開發而成,其設計目的是爲了嵌入應用程序中,從而爲應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平臺上都可以編譯,運行,它還有一個同時進行的JIT項目,提供在特定平臺上的即時編譯功能,但Lua並沒有提供強大的庫,所以不適合作爲開發獨立應用程序的語言使用。
  • 應用領域:遊戲、插件、配置文件;
  • 優勢:小巧簡潔;支持協程;
  • 弊端:應用領域侷限;
Go:程序員常常要在開發效率和性能中做出選擇,C/C++性能高但開發週期漫長,Python和Ruby適合快速開發但性能不足,谷歌首席軟件工程師Rob Pike說:“我們之所以開發Go,是因爲過去10多年間軟件開發的難度令人沮喪。”2007年,包括開發過C語言的Ken Thompson在內的一批Google工程師,開始將本職工作外時間的20%投入於Go項目。2008年5月,Google發現了Go的巨大潛力,開始全力支持這個項目,讓員工全身心投入Go的開發。2009年11月,首個Go版本以開源方式向全球發佈。2012年3月28日,首個正式版本Go 1發佈。Go在開發效率和性能之間架起了橋樑,它可以在不損失應用程序性能的情況下降低代碼的複雜性,編譯後Go代碼的運行速度與C語言非常接近,而且編譯速度非常快。
  • 應用領域:雲計算、大數據、分佈式系統、Web後端、區塊鏈;
  • 優勢:Google支持且開源;簡單易學;編譯快且運行快;支持併發;
  • 弊端:誕生時間晚,市場仍處於實驗階段;
Kotlin:Kotlin基於JVM,由JetBrains開發,於2010年首次推出,次年開源。2016年2月,Kotlin 1.0正式版發佈。2017年5月18日,Google I/O全球開發者大會上,Google宣佈Kotlin正式成爲Android開發的官方支持語言。
  • 應用領域:Android;
  • 優勢:兼容Java,且更加簡潔現代;
  • 弊端:誕生時間晚,市場仍處於實驗階段。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章