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