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