分崩離析的編程語言帝國:開發者“投誠”要謹慎!

jopen 9年前發布 | 21K 次閱讀 編程語言

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        獵云網 12 月 22 日報道 (編譯:清華人)

        獵云網注:計算機語言日新月異,從C語言,到C++,Java 語言,到現在的 Go 和 Swift 語言,計算機公司也是大力投資計算機語言的開發和升級。互聯網機構、大學更是計算機語言的領軍。現在社會就是科技社會,拼的是軟實力,誰掌握了語言代碼 (標準),誰就掌控著這個時代。好比在戰爭中,總是勝利者書寫歷史。

        如今,如果你是一個非常大的,很富有的技術類公司,似乎擁有自己的數據中心,豪華車和公司的午餐吧是遠遠不夠的,你也需要你自己的程序設計語言。

        谷歌有 Go 語言,早在 2009 年谷歌公司就開始設想了。非死book 在去年春季也引進了 Hack 語言,而蘋果公司不久前也揭開了 Swift 語言的面紗。

        正如英國小說家喬治·奧威爾提出的,在戰爭中,勝利者書寫歷史。在技術上,成功的公司在編寫編程語言。互聯網是按照公開的標準和編碼建立的,但 是社交網絡和云是被巨頭公司控制的。并且把他們獨一無二的標志貼在數碼科技的思維材料上,就像占領者威廉姆和他的諾爾曼人把早期法語的一部分輸入給初期的 英語語言中一樣,在許多方面,這也形成了我們法律和金融語言。

        無可否認,這些新的語言給了編程人員一些有益的幫助。谷歌的 Go 語言結構的目的是,使代碼同時運行的工作變得簡單化,為編程人員創造和篡改同時運行的程序一部分鋪平了道路。而且這樣就充分利用了今天的多芯片和多處理器的機器。

        蘋果公司的 Swift 語言,為 iPhone 的開發者們提供了一些簡潔靈活,很流行的網絡編輯語言。每個都有自己的 logo(標識):Swift 是一個格式化的鳥,Go 是一個笨拙的地鼠。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        這些方案的目的都沒有使現狀發生大的變化。反而,他們正在為今天主流的技術,使其平滑,并且優化了代碼。如果我們想了解它對我們的數字生活意味 著什么,當大公司控制和形成語言,技術發展必須用的語言,這就是一個線索。如果這就是程序帝國時代,我們應該是隨聲附和,還是揮舞我們的拳頭反對呢?

        讓我們從谷歌禁止分號和擁抱括號開始。

        Go 語言的精髓

        肯·湯姆森、羅博·派克、羅伯特·格里塞默,谷歌公司的三個代碼權威人物,在 2009 年,想象出了 Go 語言。然而,當他們僅僅是半開玩笑的說,在等待他們的 C++ 和 Java 代碼的匯編。這些廣泛使用的初級的程序語言正在變得遲鈍,特別是當遇到了谷歌正在有效利用的這種龐大的程序。每次,當你要加上或改變某個東西,你就不得不 等編譯程序“建立”一個二進制的版本,把你的代碼溶入到它的機器可以讀的核心部分。

        派克解釋說“建立二進制的版本要花費 45 分鐘,我認為這是很痛苦的,當建立過程花費這么長的時間,你有許多時間考慮,你也許能做的更好的事情。”

        設計一個程序語言是一個全面權衡的方法——對程序員來說是更容易,而對機器來說最適合。

        制作一個運行更快的代碼需要程序員更多的努力。人們用來編寫運行快的代碼應該花費多長時間和多少精力呢?反過來,你讓開發人員交給電腦多少工作 和多繁重的工作呢?另外一個重要的權衡在于這個語言提供給機器存儲的直接途徑的量。正如在很多其他的地方,這個語言的發明者必須選擇:你給于程序員多大的 自由?要知道他們也許會搞砸的。你給他們周圍放了多少支柱來緩沖他們潛在的跌倒,要知道你加的每一個都會使程序變慢。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        語言設計好比是做彌散,整個過程既正式又嚴肅,而且往往充滿了困境和矛盾。設計編程語言沒有對錯之分,只是不同的選擇來適合不斷變化的硬件,變化無常的用戶和吹毛求疵的程序員。

        Go 語言的創造者們有很多做如此選擇的經驗。湯普森合作發明了 Unix,在 Bell Labs 工作的他和經驗豐富的同伴派克 Pike, 設計出了字符編碼,叫做 UTF-8, 現在絕大多數網站都在使用。因此他們知道很小的一個決定可以有很大的成果。今天增加的每個規則,可能意味著給明天的程序員許許多多的未來的敲擊鍵盤,省略 的每個規則可能意味著無數的崩潰的降臨。

        例如:程序語言通常都使用分號來把陳述句隔開,括弧群把陳述句聯系起來。在莊重的C語言中有 “Hello,world” 這樣經典的程序。

main ()
    {
        printf (“hello world”);
    }

        Go 語言的創造者們感到,括弧群是必要的。一些語言,尤其是流行的 Python 語言,已經把括弧群棄之不用了,讓程序員們使用縮格——白色空格,或者看不見的字符,把代碼展示給人的眼睛和機器,而 Go 團隊認為那是個“嚴重的錯誤”。括弧群意味著,程序員可以告訴電腦,怎樣明確地和毫不含糊地把大塊的代碼歸在一起。(在和瑟奇·賓的一次會面中,谷歌的創 始人建議 Go 語言的設計人員們使用方括弧而不是圓括弧,可以免除開發人員無數的使用 shift 鍵過程。派克回憶到:“他不是每次都贏的。”)

        所以括弧使 Go 語言簡潔,但是在 2009 年 12 月,Go 語言的智囊團決定,中斷要求程序員們用分號來結束陳述句。他們的常見問題解釋是:“分號是為分析器的,而不是為人的,而且我們應盡可能多的淘汰分號”。今 后,語言的機械裝置可能在你給它輸入你的代碼后,會給你添加分號。

        Go 宏大的分號凈化,節約了勞動力也緩解了眼睛的疲勞。但是為了分號的輸入不要陷于混亂,程序員們現在不得不在嚴格一點地使用他們的括弧,否則,一個分號也許被在一個錯誤的地方注入。

        這些選擇不是無可爭議的,一位評論員在派克的一次講座中解釋道:“他們用多余的括弧毒害了這個語言。”這種語言好像很容易被設計,所以,僅僅透 明的空間,在分隔不同的代碼片段中,可以起到括弧的相同的作用。對于這一點,谷歌的安德魯·杰勒德回應說:“每天都有大量奇怪的、亂七八糟的事情發生,這 也意味著,半有規律地,有人將一個隱形的字符潛入到基礎代碼,這能引起一個微小漏洞(bug),這在谷歌的 Python 程序中出現過不止一次。“

        正如威廉姆·布萊克所設想的:從一粒沙子中看待世界,程序員把標點符號看做量度之間的門。當然,對于我們其余的人來說,不是這樣。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        無論如何陶醉,句法規則也許使程序員陶醉,他們的軟件論壇充滿了對它的細微差別而引發的激烈爭論,對于 Go 或者其它任何一種語言,最使大多數人感興趣的是,使這個語言飛起來的 “超級能量”。對于 Go 語言,那可能是其接近并發性。

        不像我們說話的語言,程序員們把它叫做“自然的”語言,這些自然語言出現了很久,程序語言是為具體的終端和使用創造的。Go 語言,正如派克解釋的那樣,是由谷歌設計,用來幫助解決谷歌的問題。谷歌有很多問題……我們需要一種能使我們更容易完成我們工作的語言,我們的工作就是編 寫服務器軟件。

        在云中,谷歌公司運行自己的全球超級電腦,那恰好是 Go 語言最優化的那種計算機運行方式。 但是谷歌從來沒有在銷售軟件中賺一分錢,而且 Go 語言從一開始,就一直是一種免費的,公開源代碼的項目。這已經幫助它很快走進了其他全套設備的技術兵工廠。它正在發生變化,像一位在雷德蒙咨詢公司解釋 的,“云基礎設施的語言在不斷出現”,因為,在 2014 年,每個平臺可能在服務器上使用一點額外的性能和活力。

        而且,這也變得流行起來,例如,Dropbox 公司從 Python 到 Go 都已經運行了自己大部分的后臺代碼。而 Automattic 公司,這個公司經營 WordPress.com,也開始搗鼓 Go 語言,即使 WordPress 公司本身一直總是在使用 PHP,一種有 20 年的腳本語言。Demitrious Kelly, 一位 Automattic 的開發人員,他已經開始使用這種語言。他說:“這些日子,一周就有一打新的框架,方法論和類似的東西,似乎,每一個都是一種新的殺手,你不得不問:它比我 們擁有的更好嗎?但是,那本身是一個很復雜的問題,怎么個更好?它能讓我們做我們以前不能做的什么嗎?它值得爭論嗎?” Kelly 說,Go 語言在這些測試上進展的很順利,部分原因是因為這種語言很小:“其實,Go 語言真地在一周之內就可以學會,匆匆做出一項目,放回去,然后再回到 PHP。”

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        假定,當初在腦海里,Go 語言只是為谷歌的獨有的問題設計的,句法的選擇——分號和括弧哲學系統——也許似乎像一個“多少個天使能在標點符號的頭上翩翩起舞”的那種問題了。然而, 這些問題并非那么的不重要。對細節要花熱情,具有代表性地是,對一個程序員來說,要把一種新的語言帶到這個世界上來是要愿意蔑視傳統。最終,也許驅使一種 語言被采用的東西,是它的設計者對日常編程代碼粗糙的地方那種細心的照料,就是各地的程序員們稱作“痛點”的東西。

        Swift語言的起源

        每個編程語言都有很痛苦的過程。但是,iOS 的迅速崛起給了開發者比過去更多的痛苦。直到今年夏天 Swift 語言的面世,如果你想為 iOS 編寫一個程序,你必須使用 ObjectiveC。在 19 世紀 80 年代,斯蒂芬·喬布斯的 Next 語言已經采用了處于青春期的 ObjectiveC,在喬布斯回到蘋果公司后,這個語言成長為蘋果的 Max OSX 的重要開發工具,當 iOS 出現時,Objective C 與它恰當地一起運行。

        如今,研發者們說這種語言正在表現出它的衰老,安迪·赫茲菲爾德,一位資深的軟件人員,他編寫過最初的 Mac 操作系統,最近從谷歌退休,他說:“面對任何想給他們的平臺編寫代碼的人,蘋果有幾十年不整齊的東西。當我看到 Swift 的發布,我非常激動,因為,我總是鄙視 ObjectiveC,我喜歡他的原理,但是,我不喜歡它的句法,而且,從來不能用它真正地享受編程。

        蘋果公司把它的下一代編程語言項目委托給了計算機科學家克里斯·拉特納,他被稱贊為一個領軍人物,帶領著一個強大的,很流行的開放源代碼的項目 的,被稱作 LLVM,這是一種編輯器工具包,它能在完全不同的平臺運行,(蘋果和谷歌都在廣泛使用它)。在 2005 年加入蘋果公司后,拉特納繼續致力于 LLVM 和相關的項目,然后從大眾視線中消失了幾年,去年六月帶著他的 Swift 出現在蘋果世界開發者大會上。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        Swift 語言目標為“像腳本語言一樣,能有表現力的和感覺愉快的,第一款達到工業質量的系統編程語言。”換句話說,Swift 語言是很有前景的,你可以更方便地編寫出防止崩潰的代碼程序,而且這一過程比之前要快的多。并且,你將能用一個大約 2014 年網頁開發者的本能和習慣來編程,而不是絞盡腦汁的把自己拉回到上世紀 90 年代或更早的時期。

        模仿著來自大批 iOS 的研發者和旁觀者的歡呼聲,赫茲菲爾德說:“做的太漂亮了,這解除了每個人臉上的巨大的痛苦表情。所以,只有那些還沒有登上 Swift 語言之頂的 iOS 的研發者們現在啞口無言。”因為,為了與面向對象語言代碼共存,Swift 語言是建立在相同的項目之內,淺嘗輒止是很容易的,即使墨守成規的對研發者。

        但是,如果你決定使用 Swift 語言,你就在買進一整套蘋果公司開發且擁有的東西。你將在蘋果公司建立和銷售的工具箱里開發自己程序;你將在蘋果公司的機器上運行你的程序,而且,如果你 想讓你程序在任何其他地方運行的話,你就不得不用另外一種語言重寫你的代碼;你的命運就由蘋果公司掌握了。

        赫茲菲爾德說:“你不得不固定在帶有圍墻的花園里。”所以,他正在抵制用 Swift 語言工作的誘惑,他補充說:“如果他們有一個開放源代碼的成就,并且已經展現了一點點的興趣使其能在交叉平臺上運行,我可能會使用它。”

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        Swift 語言的一個開放源代碼的版本,原來計劃,開發者能找到方法把程序語言轉到不同的平臺,并且可能提供一些保證,即使蘋果公司在途中失去興趣,Swift 語言也能有一個未來。那些過去在其他的“圍墻花園里”逗留受過傷的開發者,通常對此非常關心。而蘋果公司對開放源代碼的途徑并不完全厭惡,盡管,公司好像 堅定的抓住控制 iOS 世界的韁繩。在 Swift 語言的預告后不久,開發者們在 LLVM 項目上,就 Swift 語言的隔離性質上開始為難蘋果公司和拉特納。拉特納回應道:

        伙計們,如果你想制作,就無拘無束的制作你自己的龍吧,但是你的投機就是那樣:投機。我們真正地還沒有討論這個,因為我們有大量的工作要做,來 回復大量的我們不斷得到的反饋,并且,在今年秋季 1.0 版本發布之前,不得不把大量的事情做完,(例如,存取控制!)你可以想象,我們許多人想讓它成為開放源代碼而且是 LLVM 的一部分。但是,這個討論還沒有發生,而且,在一段時間之內都不會發生。很遺憾讓你們大家久等了,但是,太遙遠了不能立刻處理。

        到目前,Swift 語言 1.0 的發布已經到了和過去了,我不能洞察蘋果公司 PR 的靜錐區,從拉特納那里獲得進一步的評論。但是像這樣的注解給出了在他靈魂中,以及蘋果公司的靈魂中,也許正在產生的公開和所有權之間斗爭的某種感覺。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        Swift 語言,不像 Go 語言那樣久,還不突出,所以它的強力還有待進一步考察。不管怎樣,在蘋果公司的地盤上,它的未來還是安全的,它是蘋果自主編程語言的掌上明珠。如果蘋果說 Swift 是 10 億 iOS 設備的未來,那么它就是有前途的。事實上,這個必然性是它的超級能力。人們喜歡大衛·惠勒,一位俄勒岡州波特蘭市的獨立 iOS 開發者,人們將接受它,不僅因為從長遠來看,他們幾乎沒有選擇,而且因為它有意義。惠勒說,Swift 意義給他帶來驚喜,他認為蘋果公司可能僅僅會給面向對象編程語言不斷的打新的補丁來改良。“它有很大的希望,而且看到它的用處,我很激動,我期望在未來幾 周,用它寫我的第一個應用。”

        但是,在別的地方,它的接受能力或許會面對很大的問題。那是因為 Swift 語言繼承了太多的蘋果的 DNA:像太多的蘋果創造的應用語言一樣,這個語言創造性地給世界架起了橋梁——在這種情況下,那些系統程序編寫和腳本編寫的世界。但是它保護那些在不能 通過的壕溝后面的優美的橋梁。

        (編程)語言的天性

        對那些生產大量程序語言的大型技術企業來說,沒有什么特別新。在中央處理器的電腦時代的主流語言都有相似的起源:FORTRAN 語言(公式翻譯程序語言),從 IBM 公司出現,COBOL 語言(面向商業的通用語言)主要是基于 GraceHopper 的 Flow-matic 語言,是為 Remington Rand 的大型計算機創造的語言。在 20 世紀 90 年代,Sun 給我們創造了 Java 語言,在 21 世紀,微軟公司給了我們 C# 語言。

        事實是,壓倒大多數的計算機語言是都大機構,大公司或者大學的產品,因為他們不得不是。

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        赫茲菲爾德說:“一種新程序語言的誕生要花很多資源,一種語言能成為完全的工具,能建成和使用,是一個長達十年的項目。不能像小公司那樣做它。”

        盡管有各種障礙,至少從 20 世紀 60 年代起,當計算機協會首次把一個通天塔(Babel)印在期刊的封面上時,“有太多的語言”這樣的哀歌已經在電腦業回響。而今天,這個哀歌一樣的無用。程 序員們不可能停止設計新的語言,或者同樣分享一種語言,因為,正如 推ter 的早期開發者亞歷克斯·佩恩,他是“新興語言”會議的共同創始人,他解釋說:“沒有誘因,語言的歷史充滿了標準化的努力,這種努力大錯特錯了,浪費了大量 的時間,也不能真正地產生令任何人都滿意的結果。 我認為這將是一個暫時的通天塔。”

        我本意不是要忽視黑客 Hack, 非死book 已經開放的新語言,非死book 什么都沒有做當然應該被忽視。但是即使 Hack 是公開源代碼,而且,從根本上來說,是一個廣泛使用的 PHP 語言的變異或擴展,在公司以外還沒有培養出更多的熱情。非死book 無疑可能會明白那種變化,但是,它不是社交網站正在激烈的推動事,目前,在 非死book 公司以外的對 Hack 語言的最積極反應是“等著瞧”。

        在和我談論這個語言,不止一個的開發者都強烈地感到,程序語言的新浪潮代表著一個贊助他們的那些公司的競爭力。反而,他們指出,每一種新的語言 開始都擺脫不了在開發者個人或者小組腦海中的種子。這總是讓我煩惱,我們可以做到更好。學習一種新的代碼語言要有耐心和努力;開發者們細心地做出選擇。佩 恩說:“當挑選一種新的語言時,我尋找更多的是其他人都成群結隊前往的語言,因為那些人是你打算依靠作為圖書館的人,作為參考資料的人。我想,如果你打算 搬到合適的城鎮,你就想知道。”

分崩離析的編程語言帝國:開發者“投誠”要謹慎!

        我們能有某種信心說的一件事是這些新的語言是不錯的。這些語言幫助程序員生活的更容易一些;這些語言使編程的技術流水線化;這些語言包含著很有前景的新想法;而且,這些語言贏得了公司內外的開發者們的尊重。

        因為這些原因,對這波新的程序語言作出帝國主義的比喻,可能是錯誤的歷史比喻。反而,我們正在談論更像外交政策上稱作軟實力的東西:通過例子培 養有影響力的人或事,外交手腕,你的世界觀的延伸和傳播。很具體的方式就是,Go 語言和 Swift 語言使建立在這種語言上的公司精髓典型化和具體化:服務器集群與個人設備;開放的網絡與應用商店;一個交叉的平臺世界與一個企業生活區。在所有的分界線 中,它分清了程序語言—是匯編語言還是解釋語言?靜態與動態可變打字?記憶管理/垃圾收集或者不是?這些也許是今天最重要的事情。

        換句話說,對任何擔心由大公司孕育的程序語言的真正原因都是不可能的,“OMG 他們想統治世界!”那就是,不管他們成長到多么大,他們總是會被依據自己公司的核心精神所成型。

        關于程序語言的事就是,一旦他們進入程序員的頭腦,你從來都不會真的知道他們會在哪里終止。在 20 世紀 80 年代那些創造了面向對象編程語言的狂熱者們,也許還不知道在 25 年后會成為龐大的全球手機生態系統必不可少的編程語言。當 Sun 公司在 1995 年發布 Java 語言,每個人都認為它可能會成為建立瀏覽器中使影像優美的動起來的小程序的好看的工具,然而,它的命運最多是服務器的外圍。Javascript 腳本,在剛剛發布后,就緊接著被普遍地忽視了,然而,今天還能使大多數網頁運行。

        然而,對那些研發者,選擇一種語言就好像選擇一個國家的國民身份。 你不僅是在購入語法規則和語義學。你在購入經濟學和文化,形成你怎么樣謀生的規則和形成你希望和夢想的力量。

        像他們曾經說在死的語言里,那曾經統治過世界:選擇請留心!

        Source:Medium

                <span id="shareA4" class="fl">                         </span> 

</div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!