程式語言:變革創業思維的工具

伊谢尔伦
發布: 2016-11-26 13:48:02
原創
911 人瀏覽過

《麻省理工科技評論》本週刊文稱,程式語言塑造了使用者的思維方式。這也可以反映科技業新創公司的策略,以及為何有能力實現自我變革。

以下為文章全文:

  作為Twitter、Hulu和許多當代互聯網服務的開發語言,Ruby備受關注。而當日本電腦科學家松本行宏決定設計這一語言時,他借鑒了薩莫埃爾·德拉尼(Samuel R. Delany)1966年科幻小說《Babel-17》中的概念。這部小說的核心是一種名為「Babel-17」的人造語言,能明顯提升使用者的思維層次。 「Babel-17是一種精確的分析語言,能讓你精通任何技術。」小說主角曾經這麼說。透過Ruby,松本行宏希望實現類似的目標:變革及優化程式設計師的思維方式。

  這個目標聽起來非常宏大,但松本行宏的觀點已經成為主流。軟體開發者通常都會相信,程式語言足以扭轉他們的思維方式,從而改變解決問題的方法,甚至改變他們對於應該去解決哪些問題的認識。這也是他們估計某家公司、某一產品和競爭對手規模的方式:「你們使用什麼語言?」

  對程式語言的審視將有助於外部人士了解,這些軟體公司為何能如此強大,有著如此高的價值,以及它們的產品和服務如何融入我們的生活。這些企業的內部決策,也就是使用什麼樣的語言,無論是Ruby、PHP或C,都會對我們所有人產生影響。如果你希望知道,為何 Facebook 看起來及用上去是目前的模樣,以及未來會有什麼樣的發展,你需要去了解馬克‧祖克柏(Mark Zuckerberg)所使用的程式語言PHP。

  在程式設計師之中,PHP或許是最不受尊重的程式語言。由於存在許多缺陷,知名技術部落格Eevee認為,PHP是“糟糕設計的一塊碎片”,而願意使用PHP的開發者很業餘。程式問答網站Stack Overflow共同創辦人傑夫艾特伍德(Jeff Atwood)則表示:「聰明的工程人才紛紛前往Facebook,這非常奇怪。他們在Windows XP環境中開發PHP程式碼。他們是駭客,但這裡的'駭客'是一種貶義。

  成功的程式語言有著整體化的哲學,或是一整套邏輯自洽的指導原則,以組織詞彙和語法(即提供給程式設計師的指令)。但PHP並非如此。這一語言的設計者拉斯姆斯·萊爾多夫(Rasmus Lerdorf)曾經承認,他只是將許多東西混合在一起。 「我不知道怎麼阻止這一切。」他在2003年接受採訪時表示,「我完全不知道如何編寫一款程式語言,我只是在這一過程中不斷加入新的邏輯步驟。」

  程式設計師最喜歡講的例子是PHP函數「mysql_escape_string」。在將資訊發送到資料庫之前,此函數能從中移除惡意輸入請求。 (惡意輸入的範例包括網站上表格請求使用者的電子郵件地址,以及駭客植入一段程式碼竊取網站使用者的密碼。)在發現該函數的漏洞之後,一個名為「mysql_real_escape_string」的新版本被建立出來,但舊版並未被取代。因此目前的情況就像是在飛機駕駛艙中並排放兩個功能類似的按鈕:其中一個按鈕用於放下起落架,而另一個則用於安全地放下起落架。這不僅違背常理​​,甚至會引起災難。

  儘管許多人都不喜歡PHP,但PHP仍是很大一部分網站的基礎。一項研究顯示,在目前網路的所有領域中,基於PHP技術的部分多達39%。 Facebook、維基百科,以及領先的發行平台WordPress都利用了PHP來開發。這是由於,儘管存在許多缺陷,但PHP對入門者來說幾乎完美。 PHP的名稱最初是「個人主頁」的英文縮寫。透過此語言,程式設計師可以方便地在靜態HTML頁面上新增日期和使用者姓名等動態內容。 PHP的興起推動了從網站開發到網頁應用程式開發的飛躍,而開發者甚至不必是專業人士。

  維基媒體基金會負責維基百科專案的首席軟體工程師奧利·利夫尼(Ori Livneh)表示,PHP易於上手的特點正是維基百科成功的關鍵。不過他指出:「我一直討厭PHP。」由於對PHP的依賴,維基百科在用戶規模擴大後出現了設計漏洞。 (正是由於這個原因,在2008年之前,維基百科一直沒有支援行動裝置。而直到2013年,該網站才提供了對用戶友好的編輯介面。)不過,基於PHP,一些不熟悉軟體程式設計的人士也可以開發新功能。例如,利用PHP語言,維基百科在「埃及古物學」條目上展示了象形文字,並且可以在頁面上實現音樂播放。

   Google 無法使用PHP語言,因為當前的谷歌需要非常出色地完成一項工作,即迅速而準確地進行搜索。因此,Google搜尋引擎採用了更強大的語言,例如Java和C++。與Google相比,Facebook是一個小規模實驗的集散地,一個按鈕、訊息流和小發明的大雜燴。在這種情況下,PHP可以更快地實現功能。

  你甚至可以想像,哈佛大學宿舍裡的祖克柏如何在決定性時刻選擇Facebook的開發方式。他需要以最小的成本使網站上線。網路發展速度很快,使用者的喜好變幻無常,把握機會的唯一方式就是成為市場的先驅。究竟要做成一盤大雜燴,還是一份精緻的義大利麵,這無關緊要。他首先需要完成這一網站,讓使用者可以使用。他考慮的並不是程式碼是否優美,而是如何讓好友們登上這一名為TheFacebook的網站,評價他們熟悉的女生。

  今天,Facebook的市值超過2000億美元,而該公司辦公室的牆上有這樣的標語:“完成工作比完美更重要”,以及“快速行動,打破僵局”。這些大膽的口號是為了確保員工符合該公司的「駭客」文化。而這也準確體現了PHP的價值。快速行動,打破僵局,這正是PHP的本質,代表了PHP程式設計師思考問題的方式。你甚至可以這麼說:PHP本身創造並維持了Facebook的文化。

  秘密武器:更強大的語言

  如果你希望找到與PHP截然相反的另一種理念,看看另一個極端是什麼樣,那麼金融交易公司Jane Street Capital位於紐約下曼哈頓的總部值得一看。這家有著400名員工的公司目前處理著美國每日證券交易量的約2%。

  當我見到Jane Street Capital技術主管雅隆·明斯基(Yaron Minsky)時,他正坐在辦公桌旁,旁邊放著一台恩尼格瑪密碼機,這是為數不多仍然現存的二戰時代裝備之一。我原本以為,這就是他房間裡最酷的秘密武器,但隨後我發現自己犯了錯。明斯基談到了一款名為OCaml的程式語言。身為電腦科學博士,明斯基於10年前說服自己的老闆,使用OCaml重新編寫公司的整個交易系統。

  在此之前,幾乎沒有人在實際應用中使用過OCaml。這一語言的設計者是法國一家研究機構,而最初目的是為了優化能自動證明數學定理的電腦系統。明斯基在自己的研究生階段就接觸到了這一語言。他認為,這一語言可以取代Jane Street Capital交易系統中使用的Excel電子表格。

  OCaml的最大特點在於「輸入檢查系統」。這類似於 微軟 Word的語法檢查功能,能在系統認為錯誤的程式碼下方使用綠色波浪線做出標記,隨後禁止這樣的程式碼運作。利用這系統開發出的程序有著極強的可靠性,而當所開發的軟體每天需要處理300億美元的交易時,這一點很重要。

  明斯基表示,透過捕捉漏洞,OCaml的輸入檢查系統使Jane Street Capital的程式設計師可以專注於更高大上的問題。而如果該公司能將OCaml的檢查功能進一步內化,那麼將培養出一種習慣,使程式設計師不可能再思考錯誤的想法。

  此外,為了讓輸入檢查工具發揮功能,程式設計師需要在程式碼中加入複雜的註解。這就好比說,Word的文法檢查工具要求你對所有句子進行標註。在輸入受限的情況下編寫程式碼有些麻煩,甚至會令人喪氣。而更糟的是,與其他程式語言相比,OCaml會涉及非常抽象的數學,這會給大部分程式設計師帶來困難。

  不過,這一語言的精確性對某些人來說極具吸引力,同時也為Jane Street Capital帶來了不同尋常的招募優勢。儘管一些軟體開發者不理會PHP的缺陷而加入Facebook和維基百科,但明斯基表示,OCaml語言以及他的著作《現實世界的OCaml》有助於吸引優秀的程式設計人才。吸引力不僅在於語言,也在於使用這語言的人群。在Jane Street Capital,員工在休息時間會去下棋。這種智力競爭的文化似乎與OCaml語言的使用密切相關。

  谷歌似乎也試圖憑藉自主設計的高效能語言Go來實現同樣的目的。為了讓網路服務更優雅、更有效率,針對大型網路服務背後的伺服器開發更先進的軟體頗有益處。此外,對於喜歡新鮮事物、喜歡挑戰困難的程式設計師來說,這也是一種吸引力。

  適當時機:發展壯大之後

  2010年底,Facebook曾遭遇過一場危機。 PHP並不是一種強調程式碼效能的語言,但當時Facebook出現了這方面的需求。 Facebook的發展速度很快,因此如果不做出一些重大改變,那麼該公司將會走向失敗。

  徹底改變程式語言並非可選方案之一。 Facebook使用PHP編寫的程式碼已達到數百萬行,從事這項開發的工程專家已有數千人,而所形成的產品已累積了數億用戶。因此,Facebook的多位資深工程師成立了一個小團隊。他們試圖發明一種方式,讓Facebook正常提供服務,同時不必放棄自己的「母語」。

  整個解決方案的一部分是開發一款編譯器,將Facebook的PHP程式碼翻譯成運行速度更快的C++程式碼。而另一部分則是電腦語言工程領域的壯舉:繼續為Facebook程式設計師帶來PHP風格的文化,同時讓他們編寫可靠性更高的程式碼。

  這一「救援小組」為此設計了PHP語言的一個變種,即Hack。 Hack是一種具有可選輸入檢查系統的PHP語言。你既可以像以往一樣,快速寫出程式碼混亂的PHP程序,也可以遵循系統需求,透過加入註解讓系統來檢查程式碼的正確性。這個輸入檢查工具完全使用OCaml來開發,而這並非巧合。 Facebook希望程式設計師使用熟悉的語言來快速編寫程式碼,但不希望他們將事情搞錯。 (去年,祖克柏公佈了Facebook新的工程口號:「在確保基礎設施穩定的情況下快速行動。」)

  與此同時,Twitter也在進行類似的轉型。 Twitter的開發最初是基於Ruby on Rails。這是一款採用Ruby語言開發的熱門網頁程式框架,並藉鏡了PHP的許多想法。然而,Twitter隨後也看到了用戶數的暴漲。如果某一用戶有著數十萬追蹤者,那麼當他發布訊息時,數十萬用戶的時間軸需要得到相應的刷新。以往,一些熱門Twitter訊息常常會壓垮系統,導致Twitter工程師不得不暫停服務,對問題進行修復。 Twitter也因隨之而來的頻繁宕機而「名聲昭著」。

  Twitter隨後用Scala語言重寫了服務的很大一部分程式碼,從而解決了這個問題。意料之中地,與OCaml類似,Scala也是一款由學術機構設計的語言,有著強大的輸入檢查系統,強調程式碼的準確性和性能,並因此犧牲了程式設計師個人的程式設計自由和娛樂感。

  在找到營收模式之後,新創公司將走向成熟。與此類似,它們也可以利用程式語言的力量來操縱企業文化。程式語言設計師圭多·範洛塞姆(Guido van Rossum)曾在Google任職7年,而目前加入了Dropbox。他表示,當軟體公司達到一定規模之後,避免混亂的唯一方法是使用對程式設計師有更多要求的程式語言。 「你的速度可能會因此減慢,因為你需要重複3次去表述同一件事情。」他說。

  因此,許多新創公司希望等待盡可能長的時間再做出改變。它們可能會失去一些起步初期的牛人,同時也不利於小型團隊迅速開發出新功能。不過,這樣的語言將幫助全公司的程式設計師相互理解彼此的程式碼,帶來更穩定的產品。如果希望你的產品成為人們日常生活的一部分,那麼這樣的穩定性就必不可少。

  視不同情況採取不同策略的能力在一定程度上推動軟體新創公司的發展。軟體的發展依賴於電腦的普及,而這些公司也有著獨特的方式去重塑自我。隨著變化和發展,它們所能做的並不僅僅是調整組織架構,還可以做出一些更深層的改變,即變革自身的文化及思維方式。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板