其次是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這個標籤可以知道很多技術內幕,真希望知乎也能增加一個;但國內的技術氛圍似乎不方便透露,畢竟得考慮山寨的問題。