自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十種可能改變IT行業(yè)走向的編程語言

譯文
開發(fā) 開發(fā)工具 新聞
作為開發(fā)人員,我們真的還需要學(xué)習(xí)那么多的新型編程語言嗎?現(xiàn)在所擁有的選擇已經(jīng)是相當(dāng)?shù)呢S富,命令語言、函數(shù)語言、面向?qū)ο笮驼Z言、動(dòng)態(tài)語言、編譯語言、解釋型語言以及腳本語言等等。這些身處業(yè)界前沿的編程語言為軟件開發(fā)工作的未來提供了獨(dú)到的解析視角。

【51CTO 1月5日 外電頭條】我們真的還需要那么多新型編程語言嗎?當(dāng)前開發(fā)人員們所擁有的選擇無疑已經(jīng)相當(dāng)豐富。命令型語言、函數(shù)型語言、面向?qū)ο笮驼Z言、動(dòng)態(tài)語言、編譯語言解釋型語言以及腳本語言等等似乎已經(jīng)完全罩得住我們可能面對(duì)的一切任務(wù),而且時(shí)至今日也幾乎沒有哪位專業(yè)人士能夠通曉上述全部語言。

然而,新型語言仍然在以驚人的速度不斷涌現(xiàn)。有些是學(xué)生或者愛好者以個(gè)人項(xiàng)目的形式所設(shè)計(jì),另一些則是來自大型IT供應(yīng)商的產(chǎn)品。甚至連中小型企業(yè)也不甘勢弱,積極針對(duì)其所在行業(yè)的需要開發(fā)出服務(wù)用語言。為什么人們?nèi)绱藷嶂杂谶@種重復(fù)性勞動(dòng)呢?

答案其實(shí)很簡單,盡管目前大家手頭的語言在功能性與通用性方面已經(jīng)相當(dāng)強(qiáng)大,但仍然沒有哪種單獨(dú)的語法規(guī)則能夠最大程度迎合任何一種實(shí)際需求。更重要的是,編程行為自身也處于不斷的發(fā)展變化當(dāng)中。多核CPU的崛起、云計(jì)算的升溫、高流動(dòng)性與分布式體系結(jié)構(gòu),這一切的一切都向開發(fā)人員提出了新的技術(shù)性挑戰(zhàn)。要為現(xiàn)有語言——尤其是當(dāng)下流行的語言——添加最新功能、范例以及模式可以說比登天還難。有時(shí)候直接搞一套新語言往往是最佳解決方案。

那么在這里,我將帶大家一同縱覽十種位居業(yè)界前沿的編程語言;其中每種方案都從全新的視角詮釋了軟件開發(fā)工作的藝術(shù)性,并以各自不同的特色解決了某些具體問題或是彌補(bǔ)了當(dāng)下某款主流語言的獨(dú)有缺憾。它們中有些是已經(jīng)頗為成熟的項(xiàng)目,而有些則尚處于自身發(fā)展的初級(jí)階段。有些可能對(duì)于大家來說還相當(dāng)陌生且顯得晦澀但懂,但毋庸置疑的是,它們很可能在未來給開發(fā)業(yè)界帶來顛覆性的突破,并徹底改變今年數(shù)年的編程工具發(fā)展趨勢——至少在新一代語言面世前,它們就是未來的生力軍。

實(shí)驗(yàn)性編程語言第一位: Dart

JavaScript在為網(wǎng)絡(luò)頁面添加基本交互功能方面表現(xiàn)拔群,但當(dāng)網(wǎng)頁應(yīng)用程序的體積達(dá)到數(shù)千行代碼時(shí),該語言的局限性就將暴露無遺。谷歌正是基于這種缺憾而推出了Dart,而這種語言也承載了谷歌為網(wǎng)頁編程帶來全新標(biāo)準(zhǔn)的雄心壯志。

[[55197]]

與JavaScript相似,Dart采用了與C語言相似的語法及關(guān)鍵字。然而Dart與JavaScript最為顯著的區(qū)別在于,前者中的對(duì)象明確指向類及接口,這與C++及Java頗有異曲同工之妙。Dart還允許程序員們利用靜態(tài)式有選擇地聲明變量。追溯設(shè)計(jì)者的思路,他們應(yīng)該是希望Dart與JavaScript一樣更易于學(xué)習(xí)、保有動(dòng)態(tài)特色以及流暢的執(zhí)行效果,這樣一來開發(fā)人員就能夠在編寫代碼方面投入較少的時(shí)間,產(chǎn)品維護(hù)也將更為便捷,同時(shí)細(xì)小的錯(cuò)誤帶來的影響也將被降至最低程度。

目前我們還不能用Dart解決太多實(shí)際問題。其設(shè)計(jì)理念是希望該語言能夠同時(shí)運(yùn)行于客戶機(jī)與服務(wù)器之上(與Node.js差不多),但現(xiàn)在惟一能夠讓Dart代碼在客戶端上運(yùn)行的辦法是將其通過編譯轉(zhuǎn)換為JavaScript。甚至它還不能正確作用于每一款瀏覽器。不過由于Dart以BSD類開源許可方式進(jìn)行發(fā)布,因此任何購買了谷歌版本的廠商都可以隨意將其構(gòu)建于自己的產(chǎn)品當(dāng)中。谷歌要做的只是說服業(yè)界接受這個(gè)編程領(lǐng)域的新生兒即可。

實(shí)驗(yàn)性編程語言第二位: Ceylon

Gavin King并不承認(rèn)Ceylon這款他在紅帽公司中創(chuàng)造出來的語言肩負(fù)著“Java終結(jié)者”的歷史使命。在King的從業(yè)經(jīng)歷中,最為耀眼的一頁正是他作為Hibernate——Java對(duì)象關(guān)系映射框架的創(chuàng)建者所贏得的贊譽(yù)。他喜歡Java,但他仍然認(rèn)為Java還有很多提升空間。

King對(duì)于Java的抱怨主要集中在冗長的語法結(jié)構(gòu),這種語言缺乏一級(jí)與高端功能,而且對(duì)元編程的支持也相當(dāng)薄弱。而更令他感到沮喪的是,Java中對(duì)于結(jié)構(gòu)化數(shù)據(jù)定義的聲明性語法極為欠缺,用他的話來說這使得Java“與XML根本無法分割。”Ceylon的目標(biāo)就是解決上述疑難雜癥。

King與他的團(tuán)隊(duì)并不打算完全從零做起。Ceylon虛擬機(jī)就不會(huì)出現(xiàn),此類功能將通過Ceylon編譯器將內(nèi)容轉(zhuǎn)換為Java字節(jié)代碼,進(jìn)而運(yùn)行于JVM當(dāng)中。不過Ceylon絕不會(huì)止步于一款編譯器這么簡單。該項(xiàng)目的一大雄心是打造一套全新的Ceylon SDK體系來取代Java SDK,引用King對(duì)于后者的評(píng)價(jià)——結(jié)構(gòu)臃腫、笨拙,且從來沒有得到“適當(dāng)?shù)?、與時(shí)俱進(jìn)的調(diào)整。”

這是一項(xiàng)艱巨的任務(wù),因?yàn)榧t帽公司到目前為止還沒有發(fā)布過任何一款Ceylon工具。King表示自己期待著能在年內(nèi)看到一款編譯器出現(xiàn),但不會(huì)指望短時(shí)間內(nèi)會(huì)有“百分之百由Ceylon編寫”的軟件問世。

實(shí)驗(yàn)性編程語言第三位: Go

解釋程序、虛擬機(jī)以及托管代碼如今正風(fēng)靡一時(shí)。我們真的需要另一款用于將目標(biāo)內(nèi)容編譯為本地二進(jìn)制文件的老式語言嗎?來自谷歌工程師團(tuán)隊(duì)的小組——由Robert Griesemer以及貝爾實(shí)驗(yàn)室的傳奇式人物Ken Thompson與Rob Pike共同執(zhí)掌——給出的答案是肯定的。

[[55198]]

Go是一種通用型編程語言,且適用于從應(yīng)用程序開發(fā)到系統(tǒng)編程等各種工作需求。從這種意義上來說,它更接近于C語言或C++,而不是Java或是C#。但與后兩者一樣,Go中也包含著各類現(xiàn)代化功能,包括垃圾收集、運(yùn)行時(shí)間映象以及對(duì)并行性的支持。

同樣重要的是,Go在設(shè)計(jì)上有意降低了編程難度。其基礎(chǔ)語法與C語言非常相近,但卻消除了多余的語法及樣板文件,同時(shí)簡化了對(duì)象定義等常用功能的操作。Go項(xiàng)目小組的目標(biāo)是打造出了一款像動(dòng)態(tài)腳本語言那樣擁有親切代碼的語言,并且能夠像編譯語言那樣提供強(qiáng)大的功能性。

Go尚處于創(chuàng)建過程之中,而且其語言規(guī)范也仍可能發(fā)生變動(dòng)。也就是說,我們目前已經(jīng)可以開始嘗試使用了。谷歌已經(jīng)為其打造了對(duì)應(yīng)的可用工具與編譯器,說明文檔之類也相當(dāng)豐富;舉例來說,Effective Go教程就是大家了解Go與其它早期語言不同之處的上佳起點(diǎn)。

實(shí)驗(yàn)性編程語言第四位: F#

函數(shù)型程序設(shè)計(jì)在計(jì)算機(jī)科學(xué)家以及學(xué)術(shù)界一直都相當(dāng)流行,但像Lisp以及Haskell這樣的純函數(shù)型語言通常被人們認(rèn)為無法作用于實(shí)際應(yīng)用中的軟件開發(fā)工作。對(duì)于函數(shù)型代碼,大家抱怨最多的是它們很難與由C++及Java等命令型語言所寫成的代碼與庫相整合。

說起F#(發(fā)音為“F=sharp”),這款微軟推出的語言在設(shè)計(jì)上可謂兼顧了功能性與實(shí)用性。由于F#在.Net公共語言運(yùn)行(簡稱CLR)中屬于一級(jí)語言,因此能夠訪問其它CLR語言的所有同類庫及功能,包括C#及Visual Basic等。

F#代碼與OCaml多少有些類似,但它同時(shí)擁有不少相當(dāng)有趣的特色語法。例如,F(xiàn)#中的數(shù)字型數(shù)據(jù)可以通過分配獲得計(jì)量單位,進(jìn)而為科學(xué)類計(jì)算服務(wù)。F#還為異步式I/O、CPU并行處理以及GPU負(fù)載分擔(dān)等功能提供了必要的理論支持。

在度過了微軟研究中心中漫長的醞釀期后,F(xiàn)#現(xiàn)在終于同Visual Studio 2010一同面世了。更妙的是,微軟這一次不按常理出牌,將F#編譯器與代碼庫通過Apache開源許可呈現(xiàn)在我們面前;大家不僅能夠免費(fèi)使用這款語言,更可以將其引入Mac及Linux系統(tǒng)(通過Mono運(yùn)行工具)。

實(shí)驗(yàn)性語言第五位: Opa

Web開發(fā)工作是公認(rèn)的繁雜無比。就算是最簡單的一款Web應(yīng)用程序也需要不計(jì)其數(shù)的代碼行與多種語言交替使用:HTML與JavaScript處理客戶端、Java或PHP應(yīng)對(duì)服務(wù)器、SQL負(fù)責(zé)數(shù)據(jù)庫等等。

Opa其實(shí)并不打算單獨(dú)取代上述任何一種語言。相反,它存在的目的是希望通過為Web編程設(shè)定一套全新規(guī)范的方式一次性將各類方案直接抹殺。在Opa應(yīng)用程序中,客戶端UI、服務(wù)器端邏輯以及數(shù)據(jù)庫I/O都由同一種語言負(fù)責(zé)實(shí)施——也就是Opa本身。

而要完成這一目標(biāo),Opa需要將客戶端與服務(wù)器端框架進(jìn)行整合。由Opa編譯器來決定某個(gè)特定程序是否應(yīng)該運(yùn)行于客戶端、服務(wù)器端或是同時(shí)運(yùn)行于二者之上,其后該編譯器將輸出運(yùn)行所必需的代碼。對(duì)于客戶端型程序而言,編譯器會(huì)將Opa的代碼內(nèi)容轉(zhuǎn)換為相應(yīng)的JavaScript代碼,包括其中的AJAX調(diào)用。

當(dāng)然,這樣規(guī)模的整合型系統(tǒng)也暗藏著一些后臺(tái)機(jī)關(guān)。Opa的運(yùn)行環(huán)境將其Web服務(wù)器與數(shù)據(jù)庫管理系統(tǒng)捆綁在一起,也就是說我們無法用其它獨(dú)立的備選方案取代它們的位置。這當(dāng)然可以算是一點(diǎn)缺憾,但為了保持標(biāo)準(zhǔn)的細(xì)致化與完整性,并使得數(shù)據(jù)驅(qū)動(dòng)的Web應(yīng)用程序能夠以短短數(shù)十行代碼得以表達(dá),這一切都是值得的。Opa項(xiàng)目完全開源,并且目前已經(jīng)支持64位Linux以及Mac OS X平臺(tái);今后隨著工作的深入還將有更多端口得以開放。

#p#

實(shí)驗(yàn)性編程語言第六位: Fantom

我們是否應(yīng)該在開發(fā)自己的應(yīng)用程序時(shí)考慮對(duì)java及.Net的支持?如果使用Fantom來編寫代碼,那么一切都不必?fù)?dān)心,甚至連交換機(jī)平臺(tái)也不在話下。這是因?yàn)镕antom在設(shè)計(jì)上兼顧到了跨平臺(tái)的可移植特性。Fantom項(xiàng)目中不僅包括能夠?yàn)镴VM或者.Net CLI輸出字節(jié)代碼的編譯器,同時(shí)也擁有一組能夠容納Java及.Net接口的抽象化API,也就是創(chuàng)建了一套額外的可移植層。

Fanrom的可移植性還有著進(jìn)一步的擴(kuò)展規(guī)劃。目前由Fantom到JavaScript編譯器已經(jīng)可以使用,而接下來我們還可以期望看到包括LLVM編譯器、Parrot虛擬機(jī)以及iOS版Objective-C在內(nèi)的各類延展型項(xiàng)目。

不過千萬別把可移植性當(dāng)作Fantom語言惟一的存在理由。雖然它在本質(zhì)上仍然是以C語言為基礎(chǔ),但它同時(shí)也對(duì)該原始模型進(jìn)行了充分改良。Fantom語言試圖在某些頗具爭議的語法討論——例如牢固與動(dòng)態(tài)或者接口與類——之中獲取中立身份。它不僅增加了對(duì)數(shù)據(jù)結(jié)構(gòu)說明及序列化對(duì)象的簡化說明,還囊括了對(duì)函數(shù)型程序設(shè)計(jì)及并行性創(chuàng)建工作的有力支持。

Fantom是基于Academic免費(fèi)許可3.0版本的開源項(xiàng)目,并且現(xiàn)在在Windows以及Unix類平臺(tái)(包括Mac OS X)上已經(jīng)可以付諸使用。

實(shí)驗(yàn)性編程語言第七位: Zimbu

大多數(shù)編程語言都從其它早期語言中借用到了某些功能或是語法。而Zimbu則把這種拿來主義精神發(fā)揮到了極致。作為Vim文本編輯器作者Bram Moolenaar的另一款得意之作,Zimbu的目標(biāo)是成為一款速度快、語法簡潔、適應(yīng)移植需求且便于閱讀的語言,并最終使得來自任何圖形用戶界面的應(yīng)用程序代碼得以運(yùn)行于目標(biāo)操作系統(tǒng)內(nèi)核當(dāng)中。

由于Zimbu與生俱來的雜交血統(tǒng),其語法也相當(dāng)獨(dú)特,但同時(shí)卻又功能豐富。它采用與C語言相似的表達(dá)式及運(yùn)算符,但卻使用自己的一套關(guān)鍵字、數(shù)據(jù)類型及塊狀結(jié)構(gòu)體系。另外,它還支持內(nèi)存管理、線程及通道等功能。

可移植性一直是個(gè)關(guān)鍵問題。盡管Zimbu是一款編譯型語言,但其編譯器輸出的是ANSI C碼,這就使得文件只能由具備本地C編譯器的平臺(tái)來生成。

遺憾的是,Zimbu項(xiàng)目如今尚處于起步階段。而其編譯器雖然已經(jīng)能夠?yàn)樽陨砑捌渌绦騽?chuàng)建一些演示范例,但并不是全部Zimbu有效代碼都能夠正確運(yùn)行。不過預(yù)期功能目前還不完善,其中一些還只是加以草草設(shè)置,因此我相信只要假以時(shí)日,這些問題都能得到妥善解決。另外語言規(guī)范也很可能隨著時(shí)間的推移而產(chǎn)生變化,例如在必要時(shí)添加新的關(guān)鍵字、類型以及語法等。所以說明文檔等材料目前還沒有統(tǒng)一的結(jié)論。不過如果大家對(duì)這種語言有興趣的話,其初始工具已經(jīng)在Apache許可基礎(chǔ)上得以公布。

實(shí)驗(yàn)性編程語言第八位: X10

并行處理一度作為軟件開發(fā)領(lǐng)域中的獨(dú)特生態(tài)圈存在,但隨著多核心CPU及分布式計(jì)算技術(shù)的日益普及,并行化也崛起成為未來發(fā)展的主流方向。遺憾的是,時(shí)至今日,編程語言仍然沒能跟上時(shí)代的步伐。而這正是IBM研究中心苦心開發(fā)X10的原因,這是一種以提高開發(fā)人員生產(chǎn)效率為主旨的實(shí)用型語言,希望在現(xiàn)有基礎(chǔ)上將開發(fā)效率提高“十倍”。

X10利用劃分式全局地址空間(簡稱)編程模型來解決并行類任務(wù)。代碼與數(shù)據(jù)作為各自獨(dú)立的單位,分別位于一個(gè)或多個(gè)“空間”當(dāng)中,這就使得將單線程字節(jié)代碼(單獨(dú)空間)向高性能集群中單核心或多核心處理器(多個(gè)空間)的多線程處理能力轉(zhuǎn)化的過程更為簡便。

X10代碼總體來說與Java比較相近;事實(shí)上,X10運(yùn)行環(huán)境可以直接作為本地可執(zhí)行文件以及類文件應(yīng)用于JVM當(dāng)中。X10編譯器能夠輸出C++或是Java類型的源代碼。達(dá)成與Java語言之間的直接操作性是該項(xiàng)目的努力方向。

就目前而言,這種語言雖然還處于發(fā)展變化中,但也已經(jīng)算得上相當(dāng)成熟。其編譯器與運(yùn)行環(huán)境支持一系列平臺(tái),包括Linux、Mac OS X以及Windows。包括基于Eclipse的IDE及調(diào)試工具等都已經(jīng)以Eclipse公共許可為基礎(chǔ)進(jìn)行發(fā)布。

實(shí)驗(yàn)性編程語言第九位: haXe

大多數(shù)語言都可以用來編寫可移植代碼。C語言編譯器能夠作用于幾乎每一種CPU架構(gòu),而Java字節(jié)代碼則能夠在一切具備JVM的環(huán)境中發(fā)揮功效。但haXe(讀音為“hex”)能做的則比可移植性更多。它是一款跨平臺(tái)語言,能夠適應(yīng)各種不同類型的運(yùn)行環(huán)境——包括本地二進(jìn)制解釋程序及虛擬機(jī)。

開發(fā)人員可以利用haXe編寫程序,然后將結(jié)果編譯為對(duì)象代碼,例如時(shí)下流行的JavaScript、PHP、Flash/ActionScript或者NekoVM等等;而像C#、Java等其它輸出模塊目前仍處于研發(fā)階段。在核心語言之外有haXe標(biāo)準(zhǔn)庫作為補(bǔ)充,其指向各類目標(biāo)的功能也同樣齊全,而且還為目標(biāo)平臺(tái)的獨(dú)特功能配備了專用的函數(shù)庫。

haXe在語法上與C語言相似,函數(shù)集合相當(dāng)豐富。它的主要優(yōu)勢在于規(guī)避了目標(biāo)平臺(tái)自身固有的缺陷。舉例來說,haXe具備JavaScript所欠缺的嚴(yán)謹(jǐn)歸類;它在ActionScript的基礎(chǔ)上增加了通用語句及類型推導(dǎo);它還完全消除了PHP語言在語法方面的設(shè)計(jì)疏漏與雜亂無序。

雖然仍處于開發(fā)階段,但haXe在其創(chuàng)造者M(jìn)otion Twin游戲工作室的推動(dòng)下已經(jīng)進(jìn)入商業(yè)化運(yùn)營,因此我們已經(jīng)應(yīng)該用嚴(yán)肅的眼光看待它。它支持Linux、Mac OS X以及Windows平臺(tái),并采用數(shù)款開源類許可相結(jié)合的分布模式。

實(shí)驗(yàn)性編程語言第十位: Chapel

在高性能計(jì)算領(lǐng)域,很少有哪家企業(yè)的風(fēng)頭能夠蓋過Cray,因此Cray公司的原始編程語言Chapel能夠上榜也就毫不奇怪了。這是一款在設(shè)計(jì)上主要考慮到超級(jí)計(jì)算機(jī)及集群實(shí)際需求的語言。

Chapel是Cray公司Cascade Program項(xiàng)目的一部分,該項(xiàng)目可謂野心勃勃,其部分計(jì)劃內(nèi)資金甚至是由美國國防部高級(jí)研究計(jì)劃局(簡稱DARPA)所提供。其目標(biāo)主要是從底層硬件中提取抽象并行算法,進(jìn)而提高現(xiàn)有架構(gòu)的性能表現(xiàn),并使得并行類程序具備更好的可移植性。

Chapel的語法脫胎自許多來源。除了幾款我們常見的主流語言(例如C、C++以及Java),它還從像Fortran及Matlab這樣的科學(xué)類編程語言中借鑒了不少概念型內(nèi)容。它的并行處理能力在一定程度上與ZPL及高性能Fortran密切相關(guān),另一些Cray早期項(xiàng)目也是它的學(xué)習(xí)目標(biāo)。

Chapel最引人注目的特色之一是其“多分辨率編程”功能,這項(xiàng)功能使得開發(fā)人員能夠在應(yīng)用程序中引入更多抽象化代碼,并在實(shí)施中添加更多細(xì)節(jié)闡述以使得定義本身更加明確。

Chapel仍處于開發(fā)階段。目前它能夠運(yùn)行于Cray超級(jí)計(jì)算機(jī)及各類高性能集群之上,并且可以移植到大多數(shù)Unix類系統(tǒng)(包括Mac OS X以及安裝了Cygwin的Windows系統(tǒng))當(dāng)中。該語言源代碼采用BSD型開源許可。

原文鏈接:http://www.infoworld.com/d/application-development/10-programming-languages-could-shake-it-181548?page=0,0

【編輯推薦】

  1. JavaScript將成為計(jì)算機(jī)學(xué)習(xí)第一語言
  2. 學(xué)習(xí)一門新語言的二三事
  3. 軟件開發(fā)工具推薦:Eclipse Color Themes
  4. 多態(tài)在 Java 和 C++ 編程語言中的實(shí)現(xiàn)比較
  5. 提交中的罵聲:哪種編程語言最遭罵?
責(zé)任編輯:林師授 來源: 51CTO.com
相關(guān)推薦

2012-01-10 15:40:10

開發(fā)技術(shù)周刊

2021-07-02 21:53:23

物聯(lián)網(wǎng)開發(fā)編程語言開發(fā)

2013-10-08 17:01:40

開發(fā)技術(shù)周刊

2022-07-20 14:26:01

人工智能數(shù)字教育

2022-10-08 07:30:17

網(wǎng)絡(luò)安全編程語言C++

2011-12-21 21:16:58

2020-07-10 10:48:51

編程語言JavaPython

2016-03-18 07:21:56

網(wǎng)站體驗(yàn)設(shè)計(jì)錯(cuò)誤

2024-02-19 23:10:46

TIOBE編程語言

2011-05-25 13:29:20

數(shù)據(jù)庫備份

2023-04-26 21:09:59

2024-02-19 15:59:56

2013-11-05 15:24:39

開發(fā)技術(shù)周刊

2015-08-19 13:40:58

編程編程更有效

2020-01-10 09:00:00

開發(fā)者編程習(xí)慣編程方式

2016-12-08 10:53:46

程序員編程

2018-09-06 15:37:09

區(qū)塊鏈無人駕駛汽車共享

2021-10-27 10:50:14

人工智能AI機(jī)器學(xué)習(xí)

2024-11-13 13:20:44

2014-08-01 10:39:52

大數(shù)據(jù)程序語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)