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