新聞中心
想知道語(yǔ)言的威力有多大,可以看看《通天塔-17》。里面星際戰(zhàn)爭(zhēng)的一方只需讓另一方學(xué)習(xí)了一門語(yǔ)言,即讓對(duì)方棄明投暗。編程語(yǔ)言也具有類似的威力,它賦予了軟件公司重塑自我的能力,它不僅能改變問(wèn)題的解決方式們甚至還可以改變提出什么樣的問(wèn)題。這也許是Google、蘋(píng)果等推出自己語(yǔ)言的原因所在,而初創(chuàng)企業(yè)想要成就什么樣的愿景,編程語(yǔ)言的選擇很關(guān)鍵。

創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站開(kāi)發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:18980820575
[[131357]]
Ruby語(yǔ)言幫助開(kāi)發(fā)出了Twitter、Hulu以及許多的現(xiàn)代Web網(wǎng)站。其發(fā)明者是日本人松本行弘。松本行弘發(fā)明Ruby則是受到了美國(guó)作家Samuel R. Delany發(fā)表于1966年的一部科幻小說(shuō)《通天塔-17》。
這 部小說(shuō)里面有一個(gè)核心的思想—語(yǔ)言會(huì)改變?nèi)说乃枷?、影響人的行?dòng)。故事里面講到,星際戰(zhàn)爭(zhēng)的一方發(fā)明了一種名為Babel-17的語(yǔ)言,敵方的人學(xué)了這門 語(yǔ)言之后,思想和感覺(jué)都會(huì)發(fā)生改變,從而變成了本方的叛徒。這本書(shū)說(shuō)明了語(yǔ)言的若干特點(diǎn)—即生活條件塑造了語(yǔ)言形式和意義,但是語(yǔ)言本身也會(huì)塑造人的行 動(dòng)。
小說(shuō)主角對(duì)通天塔-17的評(píng)價(jià)是:
Babel-17是那么精確的一門分析語(yǔ)言,幾乎可以確保你在技術(shù)上應(yīng)對(duì)面臨的任何情況。
松本行弘也希望實(shí)現(xiàn)同樣的事情—用一門語(yǔ)言重組并改進(jìn)程序員的思考方式。實(shí)際上開(kāi)發(fā)者這種群體也傾向于認(rèn)為,編程語(yǔ)言不僅能改變問(wèn)題的解決方式,甚至也能改變提出什么樣的問(wèn)題。所以這些人衡量公司規(guī)模、產(chǎn)品好壞或者同事強(qiáng)弱時(shí)往往會(huì)問(wèn)一個(gè)問(wèn)題:
你用什么語(yǔ)言?
這有助于外界理解軟件公司為什么會(huì)變得如此強(qiáng)大、為什么會(huì)那么有價(jià)值,有助于了解那些影響我們?nèi)粘I畹漠a(chǎn)品和服務(wù)。一項(xiàng)看似與我們無(wú)關(guān)的最內(nèi)部的決定,比方說(shuō)新產(chǎn)品的開(kāi)發(fā)究竟是用Ruby、PHP還是C語(yǔ)言,突然之間卻會(huì)影響到我們所有人。所以,如果你想知道Facebook為什么會(huì)是這個(gè)樣子,為什么這么運(yùn)作,接下來(lái)又會(huì)干什么,那就得了解一下PHP—扎克伯格開(kāi)發(fā)Facebook用的語(yǔ)言。
PHP 也許是所有編程語(yǔ)言當(dāng)中最不受程序員待見(jiàn)的語(yǔ)言了。編程問(wèn)答網(wǎng)站Stack Overflow的聯(lián)合創(chuàng)始人Jeff Atwood用了非常惡毒的語(yǔ)言點(diǎn)評(píng)PHP,稱PHP設(shè)計(jì)糟糕、東拼西湊,是 “步履蹣跚的怪物”、“瘟疫”、鬼屋,說(shuō)在里面住的人都是喜歡鬼的人,稱用PHP的都是業(yè)余愛(ài)好者?!坝腥苏`以為進(jìn)入Facebook的都是才華橫溢的工 程師,但其實(shí)他們是一群用Windows XP寫(xiě)PHP的人。說(shuō)他們是黑客幾乎跟罵人差不多。”
大多數(shù)成功的編程語(yǔ)言都有整體哲學(xué)或者一套用于組織詞匯語(yǔ)法的原則指南,但是PHP沒(méi)有—PHP的創(chuàng)始人Rasmus Lerdorf早在2003年就承認(rèn),自己不知道如何寫(xiě)編程語(yǔ)言,只是走一步看一步,想到什么加什么。
比方說(shuō)防止惡意數(shù)據(jù)攻擊的PHP函數(shù)“mysql_escape_string”被發(fā)現(xiàn)存在漏洞之后,其補(bǔ)救措施不是對(duì)這個(gè)函數(shù)打補(bǔ)丁,而是重新開(kāi)發(fā)了一個(gè)名為“mysql_real_escape_string”的函數(shù),這就好比是在飛機(jī)駕駛艙安裝了兩個(gè)類似的按鈕,按下其中一個(gè)可以讓飛機(jī)放下起落架,而按下另一個(gè)則會(huì)讓飛機(jī)掉下。
雖然很多人都說(shuō)PHP很爛,但是卻不能阻止它的火。據(jù)估計(jì)全球有39%的網(wǎng)站用PHP編寫(xiě),其中就包括了Facebook、Wikipedia、WordPress著名網(wǎng)站等。原因在于PHP盡管有缺陷,但是做動(dòng)態(tài)內(nèi)容上手簡(jiǎn)單,不需要專業(yè)人士也能弄。
PHP 的持續(xù)發(fā)展對(duì)于Wikimedia(維基百科)的成功非常關(guān)鍵。由于嚴(yán)重依賴PHP,維基百科遭遇了大規(guī)模的設(shè)計(jì)缺陷,并且直到2008年才推出了能適應(yīng) 移動(dòng)設(shè)備的版本,到2013年才做出對(duì)用戶友好的編輯界面。但是PHP讓那些不是軟件工程師的人也能貢獻(xiàn)新功能,維基百科之所以能展示古埃及的象形文字、 處理散頁(yè)樂(lè)譜正是因?yàn)榇恕?/p>
但是Google不能用PHP來(lái)開(kāi)發(fā),因?yàn)镚oogle要求搜索要快要精確,其實(shí)現(xiàn)需要更加精細(xì)和強(qiáng)大的語(yǔ)言,比 方說(shuō)Java或者C++。Facebook與之對(duì)比就相當(dāng)于是小型試驗(yàn)的集市,加幾個(gè)按鈕、feeds或者小玩意來(lái)吸引你的注意力。PHP是為了迅速炮制 出新功能而生的。
你幾乎可以想象得出在決定命運(yùn)的那一天里,扎克伯格在哈佛大學(xué)宿舍里是如何琢磨著以最快的速度和最小的代價(jià)讓 Facebook上線的。Web的節(jié)奏太快,用戶又太善變了,要想捕捉到這一刻唯有成為第一個(gè)。程序?qū)懙迷僭趺礌€都不要緊,最關(guān)鍵是把事情干完,讓別人用 上。那一刻他滿腦子想的不是如何把代碼寫(xiě)漂亮,而是讓他的朋友登錄上“Thefacebook”對(duì)認(rèn)識(shí)的姑娘評(píng)頭論足一番。
現(xiàn)在的 Facebook市值已超過(guò)2000億美元,辦公室的墻上貼的都是這樣的東西:“完成好過(guò)完美”,“快速行動(dòng)、打破陳規(guī)?!痹瞬裣M眠@些話讓員工與 Facebook的“黑客”文化保持一致。但其實(shí)這些恰恰是PHP的價(jià)值觀??焖傩袆?dòng)打破陳規(guī)實(shí)際上正是PHO的真髓,只要是“講”這門語(yǔ)言的人都不可避 免要按照這種方式思考??梢哉f(shuō)是這門語(yǔ)言本身造就和維系了Facebook的文化。
#p#
秘密武器
如果要找跟PHP這種自然實(shí)驗(yàn)語(yǔ)言完全相反的例子,沒(méi)有地方比下曼哈頓區(qū)的金融交易機(jī)構(gòu)Jane Street Capital更合適。這家400人的公司每天處理著美國(guó)大約2%的股權(quán)交易。
他們用的編程語(yǔ)言是OCaml,10 年前,公司的技術(shù)負(fù)責(zé)人Yaron Minsky說(shuō)服了老板用這門晦澀的語(yǔ)言重寫(xiě)了公司的整個(gè)交易系統(tǒng)。這語(yǔ)言原本由法國(guó)的一家研究機(jī)構(gòu)的學(xué)者開(kāi)發(fā),目的是想改進(jìn)某個(gè)用來(lái)自動(dòng)證明數(shù)學(xué)定理的 計(jì)算機(jī)系統(tǒng),此前幾乎沒(méi)人用這門語(yǔ)言進(jìn)行過(guò)實(shí)際工作。但是Minsky在讀研時(shí)接觸到OCaml之后,認(rèn)為這門語(yǔ)言可以替代Jane Street 交易系統(tǒng)的那些Excel表。
OCaml的一大賣點(diǎn)是它的“類型系統(tǒng)”,類型系統(tǒng)跟Word的語(yǔ)法檢查器有點(diǎn)類似,不同的是語(yǔ)法檢查器只是 用綠色波浪線標(biāo)出有問(wèn)題的文字,而類型系統(tǒng)檢查出錯(cuò)誤后會(huì)阻止系統(tǒng)運(yùn)行。寫(xiě)有類型系統(tǒng)的程序的可靠性往往要比沒(méi)有的高很多—這一點(diǎn)對(duì)于一個(gè)日交易量高達(dá) 300億美元的系統(tǒng)來(lái)說(shuō)是非常有用的。
OCaml的類型系統(tǒng)幫忙攔截了bug,Jane Street的程序員就可以專注于更加高級(jí)的問(wèn)題。有人甚至猜測(cè)隨著時(shí)間轉(zhuǎn)移這些人是不是已經(jīng)內(nèi)化了系統(tǒng)的不斷糾纏,OCaml變成了某種新語(yǔ)(Newspeak),沒(méi)人敢打任何壞主意。
其 要點(diǎn)在于,要想充分獲得類型檢查器的好處,程序員必須給自己的代碼增加復(fù)雜的注解。就好像Word的語(yǔ)法檢查器需要你對(duì)所有的句子進(jìn)行解釋一樣。寫(xiě)代碼還 要進(jìn)行類型約束是令人討厭甚至泄氣的事情。更糟的是,OCaml比大部分的編程語(yǔ)言要求都要高,需要對(duì)數(shù)學(xué)抽象有很深的理解,這已經(jīng)超出了大部分開(kāi)發(fā)者的 能力范疇。但是這種語(yǔ)言的嚴(yán)格對(duì)于某些人來(lái)說(shuō)卻相當(dāng)于貓薄荷,這反而讓Jane Street在緊張的招聘市場(chǎng)里有了一項(xiàng)與眾不同的優(yōu)勢(shì)。OCaml就像貓薄荷一樣替Jane Street源源不斷地吸引了一批批的高素質(zhì)人才候選人。那些人被吸引的不僅是因?yàn)檫@門語(yǔ)言,更是因?yàn)槭褂眠@門語(yǔ)言的人。人以群分,這里的人平時(shí)玩的都是 四人國(guó)際象棋??雌饋?lái)競(jìng)爭(zhēng)情報(bào)的文化與一門奇特語(yǔ)言的使用密切相關(guān)。
類似地,Google似乎也打算通過(guò)Go語(yǔ)言的推廣使用來(lái)達(dá)到類似目的。Go是Google開(kāi)發(fā)的一種高性能編程語(yǔ)言,目的是要讓W(xué)eb的處理工作更加優(yōu)雅和高效。開(kāi)發(fā)此類高風(fēng)險(xiǎn)軟件是有好處的,因?yàn)榇笮蚖eb服務(wù)背后的那一大群服務(wù)器的運(yùn)行需要這樣的語(yǔ)言。對(duì)于喜歡新奇和挑戰(zhàn)的開(kāi)發(fā)者來(lái)說(shuō)Go尤其具有吸引力。
成長(zhǎng)的煩惱
2010年末,F(xiàn)acebook遭遇了一次危機(jī)。PHP本身并不是針對(duì)性能優(yōu)化而開(kāi)發(fā)的,而Facebook網(wǎng)站又發(fā)展得太快,若不進(jìn)行相當(dāng)徹底的改造網(wǎng)站看起來(lái)快要癱掉了。
換語(yǔ)言根本不在考慮的范圍之內(nèi)。Facebook網(wǎng)站上有著數(shù)千專家工程師撰寫(xiě)的上百萬(wàn)行PHP代碼,還有超過(guò)5億用戶在使用它。因此Facebook派遣了一支由資深工程師組成的特種部隊(duì),讓這批人去攻關(guān)一個(gè)特殊項(xiàng)目,找出讓Facebook不放棄它那帶黑客口音(hacky)母語(yǔ)的情況下維持運(yùn)轉(zhuǎn)的辦法。
解決方案其中的一部分是開(kāi)發(fā)出一種編譯器軟件,將Facebook的PHP代碼編譯為更快的C++代碼。而項(xiàng)目的另外一項(xiàng)工作則成為了計(jì)算機(jī)語(yǔ)言工程的一大壯舉,它使得Facebook的程序員在保持PHP血統(tǒng)文化的同時(shí)還可以編寫(xiě)出更加可靠的代碼。
這 支救援分隊(duì)發(fā)明了一門PHP方言,名字叫做Hack。Hack是帶可選類型傳系統(tǒng)的PHP,也就是說(shuō),你可以還繼續(xù)寫(xiě)原來(lái)隨性寫(xiě)意的PHP,也可以選擇增 加注解讓類型系統(tǒng)檢查代碼的正確性。跟Jane Street一樣,這種類型檢查器完全是用OCaml編寫(xiě)的,這絕非巧合。Facebook希望自己的碼農(nóng)用感到舒服的母語(yǔ)繼續(xù)快速行動(dòng)(move fast),但是同時(shí)不希望他們?cè)谶@么做時(shí)不得不打破一些東西(break things)。(去年扎克伯格宣布了新的口號(hào):“穩(wěn)定結(jié)構(gòu)、快速行動(dòng)”)
與 此同時(shí),Twitter也經(jīng)歷了類似的變革。Twitter原先是用流行的Web框架Ruby on Rails開(kāi)發(fā)的,而后者則是在Ruby基礎(chǔ)上受PHP啟發(fā)做出來(lái)的。然后Twitter的用戶開(kāi)始暴漲。一旦大V發(fā)布了新的推特,數(shù)十萬(wàn)粉絲的 tinemline也必須馬上更新。此輪情況往往會(huì)令系統(tǒng)不堪重負(fù),Twitter工程師不得不把網(wǎng)站暫時(shí)關(guān)閉才能應(yīng)付。由于經(jīng)常干這種事情,維護(hù)頁(yè)面的 那頭失敗的鯨魚(yú)形象都變得臭名卓著了。后來(lái)Twitter用Scala語(yǔ)言替代了公司很大一部分的服務(wù)實(shí)現(xiàn)。不出意料,跟OCaml一樣,Scala也是由學(xué)者開(kāi)發(fā),一樣擁有強(qiáng)大的類型系統(tǒng),都是以程序員的自由和開(kāi)發(fā)的愜意為代價(jià)來(lái)確保準(zhǔn)確和性能。
跟 初創(chuàng)企業(yè)最終找到收入來(lái)源而走向“成熟”類似,他們同樣也可以借助編程語(yǔ)言的力量來(lái)操控組織心理。在Google干過(guò)7年、現(xiàn)在Dropbox工作的編程 語(yǔ)言設(shè)計(jì)師Guido van Rossum說(shuō),軟件公司到達(dá)一定規(guī)模之后要想避免陷入混亂,唯一的辦法是借助預(yù)先需要程序員做更多事情的編程語(yǔ)言?!熬褪悄欠N讓你放慢下來(lái)的感覺(jué),因?yàn)?所有事情你都需要說(shuō)上三遍。”這就是為什么許多初創(chuàng)企業(yè)盡可能拖延切換語(yǔ)言的原因所在。換上更嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言有可能會(huì)讓你失去一些NB的創(chuàng)業(yè)元老黑客,迸發(fā)出 新功能的可能性也會(huì)降低。但是這能幫助整個(gè)公司更好地理解別人的代碼,保證產(chǎn)品日常運(yùn)營(yíng)必要的穩(wěn)定性。
軟件初創(chuàng)企業(yè)能夠進(jìn)行這樣的機(jī)動(dòng)甚至 可能還解釋了他們?yōu)槭裁磿?huì)如此強(qiáng)大。部分原因是由于計(jì)算機(jī)規(guī)模的擴(kuò)大。但是這些公司也有著獨(dú)特的重塑自我的能力。隨著公司的改變與發(fā)展,這些公司能做的不 僅僅只有重寫(xiě)畫(huà)畫(huà)組織結(jié)構(gòu)圖而已。因?yàn)樗麄兪怯么a書(shū)寫(xiě)成的,所以可以做一些更加激進(jìn)的事情—他們可以重新組織自己、再造企業(yè)文化,改變思考方式。
網(wǎng)站標(biāo)題:用什么樣的語(yǔ)言就有什么樣的公司
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/cojedjo.html


咨詢
建站咨詢
