Quora創(chuàng)始人談:我們?yōu)槭裁词褂肞ython
不經(jīng)意間在Quora看到這樣一個(gè)問(wèn)題:Why did Quora choose Python for its development?2名Quora的創(chuàng)始人給出了答案,我覺(jué)得很有參考價(jià)值,所以摘錄在此。
首先,Adam D'Angelo曾就職于Facebook,而這家公司是大量使用PHP的。但Adam D'Angelo幾乎對(duì)PHP沒(méi)有好感,說(shuō)Facebook使用PHP是歷史遺留原因(我估計(jì)扎克伯格最初只想用PHP快速搭建一個(gè)網(wǎng)站吧),它存在太多缺點(diǎn)(原文給出了不少文章,我就不列出了)。
其次是C#,這是一門很有前途的語(yǔ)言,但是選擇它就意味著加入了Microsoft的陣營(yíng)(燒錢啊),而很多開(kāi)源軟件對(duì).NET只有第2級(jí)的支持(比如更新太慢,或者性能較差之類的),甚至根本不支持。另外,他們也不能冒使用Mono的風(fēng)險(xiǎn)(性能,更新,甚至可能會(huì)被Microsoft扼殺)。
而Java和Python比起來(lái),代碼寫起來(lái)太冗長(zhǎng)和痛苦,且很難于非Java的(感覺(jué)確切來(lái)說(shuō)應(yīng)該是非JVM的)東西交互。Scala也有Java和JVM的很多缺點(diǎn),盡管它沒(méi)有Java那么糟糕。而且它有點(diǎn)新,可能會(huì)存在一些不必要的風(fēng)險(xiǎn)。
他們還考慮過(guò)OCaml和Haskell,也有著足夠的生態(tài)體系和標(biāo)準(zhǔn)庫(kù),但是對(duì)可能要寫一些代碼的設(shè)計(jì)師、分析師來(lái)說(shuō)太難了。
Ruby也是個(gè)選擇,但他和Charlie Cheever都更懂Python一些。
Python***的缺點(diǎn)是速度和類型檢查。對(duì)他們而言Python已經(jīng)足夠快,而對(duì)性能有關(guān)鍵影響的部分都用C++寫了;對(duì)于類型檢查,他們寫了足夠多的單元測(cè)試來(lái)保證。
既然除去了這2個(gè)缺點(diǎn),他們就很樂(lè)意選擇Python了:
◆ 通過(guò)對(duì)過(guò)去5年的觀察,他們確信Python將繼續(xù)朝著對(duì)他們有利的方向發(fā)展。
◆ 有很多用Python寫的庫(kù),可以很容易地與郵件服務(wù)器和任務(wù)隊(duì)列等通信。他們采用了Python 2.6,這足夠支持他們的庫(kù)了。
◆ Python有太多好框架(Django、Pylons等),且大都在不斷進(jìn)步。他們選擇了Tornado(沒(méi)給原因,但估計(jì)是對(duì)長(zhǎng)連接的支持。)
◆ PyPy可以帶來(lái)顯著的速度提升。
◆ Python的數(shù)據(jù)結(jié)構(gòu)和JavaScript(JSON)映射得很好,所以瀏覽器和服務(wù)器之間的通信很輕松,而Quora大量采用了這種無(wú)需載入頁(yè)面的交互(還是長(zhǎng)連接)。
◆ Python的代碼很易讀(還應(yīng)該加上表達(dá)能力強(qiáng))。他們需要和很多人一起工作,這顯得非常重要。
順帶一提,知乎可能也是因?yàn)檫@些理由選擇Python和Tornado的。Quora Infrastructure這個(gè)標(biāo)簽可以知道很多技術(shù)內(nèi)幕,真希望知乎也能增加一個(gè);但國(guó)內(nèi)的技術(shù)氛圍似乎不方便透露,畢竟得考慮山寨的問(wèn)題。
原文:http://www.keakon.net/2011/09/04/Quora%E4%B8%BA%E4%BD%95%E4%BD%BF%E7%94%A8Python
【編輯推薦】