谷歌高管對(duì)Java、C++的復(fù)雜性不滿

2010/7/26 15:42:50    編輯:軟媒 - vivi     字體:【

Win7之家afsion.com.cn):谷歌高管對(duì)Java、C++的復(fù)雜性不滿

谷歌高管Rob Pike 在OSCON 開源大會(huì)上打開了簡化式編程語言新議題 今天的商業(yè)級(jí)編程語言--尤其是C++和Java--太過復(fù)雜而不能與今日計(jì)算環(huán)境充分相容。谷歌資深工程師Rob Pike 在周四于O'Reilly開源大會(huì)上的一次談話中發(fā)表了以上論點(diǎn)。

“我覺得這些語言太難用了,太精細(xì),太復(fù)雜,太冗長。而且這些缺點(diǎn)似乎在與日俱增,”Pike說,“它們被過度接受,被用得太廣了。”

Pike詳細(xì)說明了此類語言的缺點(diǎn),以此展開描述了他和其它谷歌工程師對(duì)所開發(fā)的名叫Go的新編程語言所持的期望。

為了證實(shí)此類語言的復(fù)雜性,Pike展示了一些C++代碼示例。其中一例是一個(gè)幾乎占據(jù)了屏幕整行的變量聲明。

“我們?cè)趺茨茏屵@種東西成為在學(xué)校里教、在產(chǎn)業(yè)里被使用的操控計(jì)算機(jī)的標(biāo)準(zhǔn)方式?”他問道。這種語言“太官僚了(制度化)。每一步都必須要考慮編譯是否可通過,”他說。

盡管Pike承認(rèn)他自己有點(diǎn)愛開玩笑,他聲明說此類問題確實(shí)應(yīng)該被提及。C++出現(xiàn)是因?yàn)槿藗儗?duì)使用低級(jí)語言C絕望,Java出現(xiàn)是為了簡化C++。隨著時(shí)間的推移,新的特性都加在了新出現(xiàn)的二者之上,使它們?cè)絹碓綇?fù)雜了。

“成熟(復(fù)雜)會(huì)帶來噪音(不可預(yù)知不被期望的錯(cuò)誤),”他補(bǔ)充說。

Pike還說,此類語言還是在多核處理器和網(wǎng)絡(luò)被廣泛應(yīng)用等大的事物出現(xiàn)之前被開發(fā)出來的,因此它們不能簡單地與這些新環(huán)境相容。

Pike并不是谷歌唯一一個(gè)表達(dá)對(duì)傳統(tǒng)商業(yè)級(jí)編程語言不滿的人。

在上個(gè)月的USENIX 年度會(huì)議上,Gmail工程師Adam de Boor 出語驚動(dòng)了與會(huì)者。他說,公司的Gmail服務(wù)完全是由JavaScript寫的,總代碼全長443,000行,全部手寫。

他指出,盡管Java更具有表達(dá)性,它也更加繁瑣。“在這個(gè)節(jié)骨點(diǎn)上,對(duì)我來說所使用語言的選擇問題是一個(gè)大問題,”de Boor說。

JavaScript是為避免C++和Java不斷增長的復(fù)雜性,而在過去十年里被開發(fā)出來的一批語言中的一支。其它支還包括Ruby和Python。但是盡管有了一個(gè)簡化了的語法,這類語言也同樣有它的弱點(diǎn),他論證道。

這類新語言要慢一些,伸縮性較差,還隱藏了更多的錯(cuò)誤,Pike詳盡地描述道。

這類語言多為解釋型而非編譯型,它意味著用這類語言寫的程序在運(yùn)行前是沒被編譯過的,因此運(yùn)行的緩慢得多。它們也傾向于使用動(dòng)態(tài)數(shù)據(jù)類型,即程序員無需定義他們變量所屬的數(shù)據(jù)類型。

“動(dòng)態(tài)數(shù)據(jù)類型并不見得好。本來你可以在編譯時(shí)找出的錯(cuò)誤的,它(動(dòng)態(tài)數(shù)據(jù)類型)讓你只能在運(yùn)行時(shí)找出錯(cuò)誤,”他說。

借著這些觀點(diǎn),Pike接下來描述了作為融合兩類語言集各自優(yōu)點(diǎn)的一個(gè)大膽嘗試--Go語言。“Go是把靜態(tài)數(shù)據(jù)類型語言的安全與效率和動(dòng)態(tài)數(shù)據(jù)類型解釋型語言的方便與輕松結(jié)合起來的一個(gè)嘗試,”他說,“它到底能做多少,還得你親自去嘗試了才知道。”

與會(huì)人員Larry Augustin, 客戶關(guān)系管理軟件提供商SugarCRM的CEO對(duì)Pike所指出的C++和Java變得太復(fù)雜了的觀點(diǎn)表示贊同,盡管他也說這是在一切為應(yīng)對(duì)廣泛應(yīng)用需求而發(fā)展的語言身上所發(fā)生著(了)的。

“這些語言在復(fù)雜度上增長的原因是,它們用得越多,我們就會(huì)發(fā)現(xiàn)越多的錯(cuò)誤和二義性,然后為消除這些錯(cuò)誤和二義性而做的工作又創(chuàng)造出了一些更復(fù)雜的東西出來,”具有軟件工程和程序語言設(shè)計(jì)背景的Augustin這么說。

“我很欣賞你們的目標(biāo),”他談及Pike等人的努力時(shí)這么說。“問題是他能否達(dá)成那一目標(biāo),抑或是在被越來越多人用之后,它也會(huì)變得很復(fù)雜,”Augustin說。

Joab Jackson 負(fù)責(zé)為IDG News Service報(bào)道企業(yè)軟件和一般技術(shù)突破的新聞。您可以在推客上跟隨他:@Joab_Jackson。他的Email地址是:Joab_Jackson@idg.com

英文原文:http://infoworld.com/d/developer-worl ... ted-java-c-complexity-375
轉(zhuǎn)載請(qǐng)注明:Linux人社區(qū) 編譯