Quora為何使用Python

發表於2016-01-17
不經意間在Quora看到這樣一個問題:Why did Quora choose Python for its development?2名Quora的創始人給出了答案,我覺得很有參考價值,所以摘錄在此。首先,Adam D’Angelo曾就職於Facebook,而這家公司是大量使用PHP的。但Adam D’Angelo幾乎對PHP沒有好感,說Facebook使用PHP是歷史遺留原因(我估計祖克伯最初只想用PHP快速搭建一個網站吧),它存在太多缺點(原文給出了不少文章,我就不列出了)。

其次是C#,這是一門很有前途的語言,但是選擇它就意味著加入了Microsoft的陣營(燒錢啊),而很多開源軟體對.NET只有第2級的支援(比如更新太慢,或者效能較差之類的),甚至根本不支援。另外,他們也不能冒使用Mono的風險(效能,更新,甚至可能會被Microsoft扼殺)。

而Java和Python比起來,程式碼寫起來太冗長和痛苦,且很難於非Java的(感覺確切來說應該是非JVM的)東西互動。Scala也有Java和JVM的很多缺點,儘管它沒有Java那麼糟糕。而且它有點新,可能會存在一些不必要的風險。

他們還考慮過OCaml和Haskell,也有著足夠的生態體系和標準庫,但是對可能要寫一些程式碼的設計師、分析師來說太難了。

Ruby也是個選擇,但他和Charlie Cheever都更懂Python一些。

Python最大的缺點是速度和型別檢查。對他們而言Python已經足夠快,而對效能有關鍵影響的部分都用C++寫了;對於型別檢查,他們寫了足夠多的單元測試來保證。
既然除去了這2個缺點,他們就很樂意選擇Python了:

  • 通過對過去5年的觀察,他們確信Python將繼續朝著對他們有利的方向發展。
  • 有很多用Python寫的庫,可以很容易地與郵件伺服器和任務佇列等通訊。他們採用了Python 2.6,這足夠支援他們的庫了。
  • Python有太多好框架(Django、Pylons等),且大都在不斷進步。他們選擇了Tornado(沒給原因,但估計是對長連線的支援。)
  • PyPy可以帶來顯著的速度提升。
  • Python的資料結構和JavaScript(JSON)對映得很好,所以瀏覽器和伺服器之間的通訊很輕鬆,而Quora大量採用了這種無需載入頁面的互動(還是長連線)。
  • Python的程式碼很易讀(還應該加上表達能力強)。他們需要和很多人一起工作,這顯得非常重要。

順帶一提,知乎可能也是因為這些理由選擇Python和Tornado的。Quora Infrastructure這個標籤可以知道很多技術內幕,真希望知乎也能增加一個;但國內的技術氛圍似乎不方便透露,畢竟得考慮山寨的問題。

相關文章