丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
專欄 正文
發(fā)私信給不知
發(fā)送

0

編程語言與創(chuàng)業(yè)公司的關(guān)系并非那么簡單

本文作者: 不知 2015-04-07 10:35
導(dǎo)語:編程語言會塑造這門語言使用者的思維方式,這有助于解釋科技創(chuàng)業(yè)公司的運(yùn)行方式,以及它們能重新發(fā)明自己的原因。

編程語言與創(chuàng)業(yè)公司的關(guān)系并非那么簡單

編程語言會塑造這門語言使用者的思維方式,這有助于解釋科技創(chuàng)業(yè)公司的運(yùn)行方式,以及它們能重新發(fā)明自己的原因。

當(dāng)日本計算機(jī)科學(xué)家松本行弘決定創(chuàng)造 Ruby 時,他正在追逐 Samuel R. Delany 于 1966 年創(chuàng)作的科幻小說《巴別 17 語》(Babel-17)中的一個想法。這部小說的核心是一種與書名同名的人工語言,可以讓所有說這種語言的人的思想升級。小說里的主角曾說過:“巴別 17 語是一門非常精確的分析語言,幾乎能確保讓你掌握任何情況的技術(shù)細(xì)節(jié)?!彼杀拘泻胂胍ㄟ^ Ruby 實現(xiàn)同樣的事:重新改造并提高程序員的思維方式。

PHP與Facebook

這聽起來很宏偉,但松本行弘的想法并不少見。軟件開發(fā)者們傾向于認(rèn)為,編程語言能改變使用者思考問題的方式,甚至?xí)淖兪褂谜呦胍ソ鉀Q的問題。這也是他們擴(kuò)大公司、產(chǎn)品以及同事人數(shù)的方法:“你用什么語言?”

這能幫助外部人士理解已經(jīng)變得極其強(qiáng)大和有價值的軟件公司,以及充斥我們生活的產(chǎn)品和服務(wù)。哪怕是這些公司最內(nèi)部的決定,比如用 Ruby 或 PHP 或 C 打造了某個新產(chǎn)品,這個決定都能一下子影響到所有人。如果你想知道 Facebook 給人以現(xiàn)在這種印象和工作方式的原因,以及 Facebook 能為/對我們做什么,你就需要了解 PHP,這門馬克·扎克伯格創(chuàng)建 Facebook 所使用的語言。

PHP 可能是最不受程序員尊重的編程語言。一篇目前已經(jīng)成為權(quán)威的博文在描述 PHP 的缺陷時稱, PHP 是“支離破碎的糟糕設(shè)計”,愿意使用 PHP 的人都被視為外行。知名編程問答網(wǎng)站 Stack Overflow 聯(lián)合創(chuàng)始人 Jeff Atwood 表示道:“那些聰明的工程師們加入 Facebook,卻在 Windows XP 上編寫 PHP 代碼,這已然成迷。說他們是黑客簡直是在侮辱黑客這個詞?!痹诓坏?10 分鐘的談話里,Atwood 稱 PHP 是“拖沓的怪物”,“瘟疫”和一間住戶必須愛上鬼的鬼屋。

大多數(shù)成功的編程語言都有全局哲學(xué)或系列指導(dǎo)原則,以便將編程語言的詞匯表和語法組織成一個合乎邏輯的整體。PHP 則不然。PHP 的創(chuàng)造者 Rasmus Lerdorf 坦承,PHP 是他胡亂拼湊而成。他在 2003 年的一次采訪中說道:“我不知道該如何阻止它。我根本不知道該怎么編寫一門編程語言,在我覺得需要時,就往里面加?xùn)|西。”

程序員們最喜歡舉的一個例子是 PHP 的 mysql_escape_string 函數(shù),這個函數(shù)可以在惡意輸入查詢進(jìn)入數(shù)據(jù)庫之前將它排除掉。當(dāng)這個功能被發(fā)現(xiàn)有問題時,出現(xiàn)了一個名為 mysql_real_escape_string 的新函數(shù),但原來的那個函數(shù)并沒有得到替換。結(jié)果就像是飛機(jī)駕駛艙里有兩個很像的按鈕靠在一起:一個按鈕可以放下起落架,另一個按鈕則可以安全地放下起落架。這根本不合常理,是制造災(zāi)難的溫床。

然而,盡管對 PHP 的輕視普遍存在,但很多網(wǎng)站都是用 PHP 創(chuàng)建的。根據(jù)一項估計,有 39% 的網(wǎng)站使用了 PHP 語言。Facebook、維基百科、WordPress 都是 PHP 項目。這是因為盡管 PHP 有很多缺陷,但它卻很容易用在項目的起步階段。PHP 是“personal home page”(個人主頁)的縮寫。用戶可以很方便地使用 PHP 向靜態(tài) HTML 頁面中添加日期、用戶名等動態(tài)內(nèi)容。PHP 極大地縮小了修改網(wǎng)站和編寫網(wǎng)絡(luò)應(yīng)用之間的差距,你不必成為專家。

運(yùn)營維基百科的維基媒體基金會首席軟件工程師 Ori Livneh 表示,這種一路走來的特性對維基百科的成功至關(guān)重要。他告訴我:“我一直都討厭 PHP?!庇捎趯?PHP 的依賴,維基百科飽受大規(guī)模設(shè)計缺陷的困擾。但 PHP 可以讓非軟件工程師為維基百科貢獻(xiàn)新功能。埃及古物學(xué)的維基百科條目可以顯示象形文字就得益于此。

你不可能用 PHP 做出來谷歌,因為谷歌需要進(jìn)行精心設(shè)計,讓搜索可以快速高效地進(jìn)行。谷歌使用了更精確和強(qiáng)大的語言,比如 Java 和 C++。相反,F(xiàn)acebook 由眾多小試驗組成,是一個由按鈕、消息流和試圖引起你關(guān)注的元素組成的大雜燴。PHP 天生是用來快速開發(fā)出功能的。

幾乎可以想象,在 Facebook 誕生的那個命運(yùn)之日,扎克伯格在他的哈佛宿舍里肯定是想盡可能地省事,好讓網(wǎng)站上線。網(wǎng)絡(luò)變化的太快,用戶如此善變,你能抓住機(jī)會的唯一方法就是成為第一個,而無論做出了什么東西。扎克伯格完工了。人們能用 Facebook。扎克伯格當(dāng)時想的不是漂亮的代碼;他在想的是他的朋友們要登錄“Thefacebook”看美女照片。

如今 Facebook 的市值超過 2000 億美元,“完成比完美重要”、“快速行動,打破成規(guī)”的標(biāo)語遍布在 Facebook 辦公室的墻上。這些直率的消息是為了讓員工們與 Facebook 的“黑客”文化保持一致。但這些都是 PHP 的價值觀??焖傩袆雍痛蚱瞥梢?guī)就是 PHP 的精髓,任何“說”這一語言的人都會不可避免地這么想。也可以說,PHP 創(chuàng)造并維系了 Facebook 的文化。

秘密武器

如果你想要尋找 PHP 的反例,金融交易公司 Jane Street Capital 就是最好不過的例子了。這家 400 人的公司號稱處理了全美日股票交易量的 2%。

Jane Street 的技術(shù)負(fù)責(zé)人 Yaron Minsky 十分推崇一門名為 OCaml 的冷門編程語言。10 年前,身為計算機(jī)科學(xué)博士的 Minsky 說服了 Jane Street Capital 用 OCaml 重寫公司的整個交易系統(tǒng)。在此之前,幾乎沒有人在實際產(chǎn)品中用過 OCaml。OCaml 由一家法國研究機(jī)構(gòu)的學(xué)者們開發(fā),旨在改進(jìn)一個能自動證明數(shù)學(xué)定理的計算機(jī)系統(tǒng)。但 Minsky 認(rèn)為 OCaml 能取代驅(qū)動 Jane Street 交易系統(tǒng)的復(fù)雜 Excel 電子表格。

OCaml 的大賣點(diǎn)是其“類型系統(tǒng)”,對于不符合類型的數(shù)據(jù),程序不會運(yùn)行。對于一個在行情好的日子里每天能交易 300 億美元的程序而言,用類型系統(tǒng)編寫的程序要可靠得多。

Minsky 表示,通過捕獲錯誤,OCaml 的類型系統(tǒng)可以讓 Jane Street 的程序員專注于更大的問題。程序員們會想,他們是否修復(fù)了系統(tǒng)捕獲的錯誤,這樣 OCaml 就成了一種讓人不可能思考糟糕想法的新語。

這里的訣竅是,為了讓類型檢查器奏效,程序員們必須給代碼添加復(fù)雜的注釋。編寫對類型進(jìn)行限制的代碼很討厭,甚至?xí)屓藛蕷狻8愀獾氖?,OCaml 需要高深的抽象數(shù)學(xué)能力。但這種語言的精確性卻牢牢地吸引了一些人,這讓 Jane Street 在緊俏的程序員招聘市場中具備非同尋常的優(yōu)勢。盡管使用 PHP 作為開發(fā)語言,大部分軟件開發(fā)者還是會選擇加入 Facebook 和維基百科。但 OCaml 卻能穩(wěn)定地吸引到高質(zhì)量的求職者。這種吸引不僅源自語言,還和使用它的人有關(guān)。Jane Street 是一家允許員工在休息室里玩四人國際象棋的公司。這種競爭智慧的文化與花哨編程語言的使用交相輝映。

谷歌似乎打算在 Go 語言上實現(xiàn)類似的效果。Go 是谷歌開發(fā)的高性能編程語言,旨在讓互聯(lián)網(wǎng)的運(yùn)作更優(yōu)雅、更高效,很適合開發(fā)驅(qū)動大型互聯(lián)網(wǎng)服務(wù)的高并發(fā)軟件。Go 也很吸引對困難的新語言感興趣的程序員。

成長壯大

在 2010 年末時,F(xiàn)acebook 遭遇了一場危機(jī)。PHP 并不強(qiáng)調(diào)性能,但 Facebook 卻需要性能。Facebook 發(fā)展得太快,似乎如果不大改 PHP,F(xiàn)acebook 就會開始衰落。

徹底轉(zhuǎn)換語言不在考慮之列。Facebook 的 PHP 代碼數(shù)超過數(shù)百萬行,這些代碼由數(shù)千名工程師編寫而成,服務(wù)超過 5 億用戶。相反,F(xiàn)acebook 任命了一小隊高級工程師來發(fā)明一種方式,讓 Facebook 在不更換編程語言的情況下繼續(xù)保持運(yùn)作。

解決方案之一就是開發(fā)一個編譯器,將 Facebook 的 PHP 代碼轉(zhuǎn)換成運(yùn)行速度快得多的 C++ 代碼。另一種解決方法是創(chuàng)造一種 PHP 方言,這樣就不會改變 Facebook 的 PHP 文化,又能讓他們寫出更可靠的代碼。

于是 Facebook 開發(fā)出了名為 Hack 的 PHP 方言。Hack 是擁有可選類型系統(tǒng)的 PHP。Hack 的類型檢查器完全用 OCaml 編寫也絕非偶然。Facebook 想要自己的程序員繼續(xù)用 PHP 快速開發(fā),但不再想要他們像以前一樣打破成規(guī)了。

與此同時,Twitter 也經(jīng)歷了類似轉(zhuǎn)變。Twitter 最開始采用 Ruby on Rails 框架。但隨后用戶暴增。當(dāng)有成千上萬粉絲的用戶發(fā)布推文時,這些粉絲的時間線就必須立即得到更新。像這樣的大推文經(jīng)常會擠爆系統(tǒng),迫使工程師們將網(wǎng)站下線,以查找問題所在。Twitter 的工程師這么做了很多次,以至于 Twitter 維護(hù)頁面上的“失敗鯨”都出了名。Twitter 用 Scala 語言重寫了大部分服務(wù),從而阻止了情況惡化。和 OCaml 一樣,Scala 也是由學(xué)者們開發(fā)的,擁有一個強(qiáng)大的類型系統(tǒng),強(qiáng)調(diào)正確性和性能,哪怕是以犧牲程序員在代碼上的自由和愉悅為代價。

就像創(chuàng)業(yè)公司的“成熟”是以最終弄清楚了營收來源為標(biāo)志一樣,公司也能聰明地利用編程語言的威力來操縱組織心理。編程語言設(shè)計師 Guido van Rossum 表示,一旦一家軟件公司達(dá)到一定規(guī)模,避免混亂的唯一方法就是使用需要程序員預(yù)先投入很多的語言。van Rossum 說道:“這種語言會讓你覺得拖慢了速度,因為你必須把一件事說上三次?!边@也是許多創(chuàng)業(yè)公司盡可能拖延轉(zhuǎn)換語言的原因。因為轉(zhuǎn)換語言會失去一些幫助公司起步的牛人,小團(tuán)隊也不大可能快速推出新功能。但一門更精確的語言能幫助公司員工理解彼此的代碼,讓公司的產(chǎn)品具備穩(wěn)定性,從而成為人們?nèi)粘I畹慕M成部分。

軟件公司能進(jìn)行這類布局也許還能解釋為什么它們會變得這么強(qiáng)大。計算機(jī)不斷擴(kuò)展的邊界是原因之一。但這些公司也具備再造自己的特質(zhì)。隨著它們改變和壯大,它們將不局限于重繪組織結(jié)構(gòu)圖。因為它們建立在代碼之上,也就能做些更加激烈的事。它們可以改造自己、自己的文化以及思維方式。

via mit

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

編程語言與創(chuàng)業(yè)公司的關(guān)系并非那么簡單

分享:
相關(guān)文章

知情人士

當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說