“動(dòng)態(tài)數(shù)據(jù)類型并不見(jiàn)得好。本來(lái)你可以在編譯時(shí)找出的錯(cuò)誤的,它(動(dòng)態(tài)數(shù)據(jù)類型)讓你只能在運(yùn)行時(shí)找出錯(cuò)誤,”他說(shuō)。
在上個(gè)月的usenix 年度會(huì)議上,gmail工程師adam de boor 出語(yǔ)驚動(dòng)了與會(huì)者。他說(shuō),公司的gmail服務(wù)完全是由javascript寫(xiě)的,總代碼全長(zhǎng)443,000行,全部手寫(xiě)。
借著這些觀點(diǎn),pike接下來(lái)描述了作為融合兩類語(yǔ)言集各自優(yōu)點(diǎn)的一個(gè)大膽嘗試--go語(yǔ)言。“go是把靜態(tài)數(shù)據(jù)類型語(yǔ)言的安全與效率和動(dòng)態(tài)數(shù)據(jù)類型解釋型語(yǔ)言的方便與輕松結(jié)合起來(lái)的一個(gè)嘗試,”他說(shuō),“它到底能做多少,還得你親自去嘗試了才知道。”
這類語(yǔ)言多為解釋型而非編譯型,它意味著用這類語(yǔ)言寫(xiě)的程序在運(yùn)行前是沒(méi)被編譯過(guò)的,因此運(yùn)行的緩慢得多。它們也傾向于使用動(dòng)態(tài)數(shù)據(jù)類型,即程序員無(wú)需定義他們變量所屬的數(shù)據(jù)類型。
pike還說(shuō),此類語(yǔ)言還是在多核處理器和網(wǎng)絡(luò)被廣泛應(yīng)用等大的事物出現(xiàn)之前被開(kāi)發(fā)出來(lái)的,因此它們不能簡(jiǎn)單地與這些新環(huán)境相容。
pike詳細(xì)說(shuō)明了此類語(yǔ)言的缺點(diǎn),以此展開(kāi)描述了他和其它谷歌工程師對(duì)所開(kāi)發(fā)的名叫g(shù)o的新編程語(yǔ)言所持的期望。
盡管pike承認(rèn)他自己有點(diǎn)愛(ài)開(kāi)玩笑,他聲明說(shuō)此類問(wèn)題確實(shí)應(yīng)該被提及。c++出現(xiàn)是因?yàn)槿藗儗?duì)使用低級(jí)語(yǔ)言c絕望,java出現(xiàn)是為了簡(jiǎn)化c++。隨著時(shí)間的推移,新的特性都加在了新出現(xiàn)的二者之上,使它們?cè)絹?lái)越復(fù)雜了。
“成熟(復(fù)雜)會(huì)帶來(lái)噪音(不可預(yù)知不被期望的錯(cuò)誤)”,他補(bǔ)充說(shuō)。
“我覺(jué)得這些語(yǔ)言太難用了,太精細(xì),太復(fù)雜,太冗長(zhǎng)。而且這些缺點(diǎn)似乎在與日俱增,”pike說(shuō),“它們被過(guò)度接受,被用得太廣了。”
“我們?cè)趺茨茏屵@種東西成為在學(xué)校里教、在產(chǎn)業(yè)里被使用的操控計(jì)算機(jī)的標(biāo)準(zhǔn)方式?”他問(wèn)道。這種語(yǔ)言“太官僚了(制度化)。每一步都必須要考慮編譯是否可通過(guò)”,他說(shuō)。
與會(huì)人員larry augustin, 客戶關(guān)系管理軟件提供商sugarcrm的ceo對(duì)pike所指出的c++和java變得太復(fù)雜了的觀點(diǎn)表示贊同,盡管他也說(shuō)這是在一切為應(yīng)對(duì)廣泛應(yīng)用需求而發(fā)展的語(yǔ)言身上所發(fā)生著(了)的。
javascript是為避免c++和java不斷增長(zhǎng)的復(fù)雜性,而在過(guò)去十年里被開(kāi)發(fā)出來(lái)的一批語(yǔ)言中的一支。其它支還包括ruby和python。但是盡管有了一個(gè)簡(jiǎn)化了的語(yǔ)法,這類語(yǔ)言也同樣有它的弱點(diǎn),他論證道。
“我很欣賞你們的目標(biāo),”他談及pike等人的努力時(shí)這么說(shuō)。“問(wèn)題是他能否達(dá)成那一目標(biāo),抑或是在被越來(lái)越多人用之后,它也會(huì)變得很復(fù)雜,”augustin說(shuō)。
他指出,盡管java更具有表達(dá)性,它也更加繁瑣。“在這個(gè)節(jié)骨點(diǎn)上,對(duì)我來(lái)說(shuō)所使用語(yǔ)言的選擇問(wèn)題是一個(gè)大問(wèn)題,”de boor說(shuō)。
谷歌高管rob pike 在oscon 開(kāi)源大會(huì)上打開(kāi)了簡(jiǎn)化式編程語(yǔ)言新議題 今天的商業(yè)級(jí)編程語(yǔ)言--尤其是c++和java--太過(guò)復(fù)雜而不能與今日計(jì)算環(huán)境充分相容。谷歌資深工程師rob pike 在周四于o'reilly開(kāi)源大會(huì)上的一次談話中發(fā)表了以上論點(diǎn)。
pike并不是谷歌唯一一個(gè)表達(dá)對(duì)傳統(tǒng)商業(yè)級(jí)編程語(yǔ)言不滿的人。
“這些語(yǔ)言在復(fù)雜度上增長(zhǎng)的原因是,它們用得越多,我們就會(huì)發(fā)現(xiàn)越多的錯(cuò)誤和二義性,然后為消除這些錯(cuò)誤和二義性而做的工作又創(chuàng)造出了一些更復(fù)雜的東西出來(lái),”具有軟件工程和程序語(yǔ)言設(shè)計(jì)背景的augustin這么說(shuō)。
為了證實(shí)此類語(yǔ)言的復(fù)雜性,pike展示了一些c++代碼示例。其中一例是一個(gè)幾乎占據(jù)了屏幕整行的變量聲明。
這類新語(yǔ)言要慢一些,伸縮性較差,還隱藏了更多的錯(cuò)誤,pike詳盡地描述道。