Quora是國外知名的問答社區(qū),性質(zhì)與知乎類似。它的創(chuàng)始人Adam D'Angelo曾是Facebook的員工,眾所周知,F(xiàn)acebook大量地使用了PHP,而Adam在開發(fā)Quora時,使用的卻是Python。這到底是為什么呢?有人在Quora上提出了這個問題,而那個最佳答案自然就是來自Adam本人的了,對于那些猶豫要不要使用Python建站的開發(fā)者應(yīng)該有一定的參考意義。
Adam在回答中很明確地表明了不希望使用PHP,提到Facebook由于歷史遺留原因而不得不使用PHP,并不是因為PHP是目前最好的選擇。他從自己在Facebook供職的那段經(jīng)歷中,明白了一個道理:選擇哪個編程語言是非常重要的,變更的成本極其高昂。
Adam和另外一名創(chuàng)始人當(dāng)時對Python語言都比較熟悉。但還是考察了C#、Java和Scala等其他語言。
C#
在Adam看來,C#當(dāng)時是非常值得考慮的對象。作為編程語言來說,C#非常優(yōu)秀,但是選擇了C#,就意味著要被捆綁在微軟的技術(shù)棧上。而他們心里更傾向于嘗試新的技術(shù)方案。
另外,雖然微軟的SQL服務(wù)器也很好,但是考慮到他們要集成許多開源代碼,而這些代碼對于.NET平臺的支持較差。而且,當(dāng)時大部分最有優(yōu)秀的工程師都已經(jīng)習(xí)慣于使用開源的產(chǎn)品。
除此之外,他們還不愿意冒險使用Mono(C#/.NET的開源實現(xiàn)),因為不知道這個項目能持續(xù)多長時間,還存在一些性能問題。
Java和Scala
由于許多原因,Java程序比相同功能的Python程序,代碼寫起來更加冗長、更加痛苦,而且很難與非Java的代碼進行交互。另外,雖然Scala并沒有Java那么差,但是也有許多Java和JVM的缺點。Scala語言當(dāng)時也有點太新潮了,可能會帶來一些不必要的風(fēng)險,因為誰也不知道10年后對這個語言的支持會如何。
OCaml和Haskell
他們還考慮過OCaml和Haskell,但是二者都沒有足夠大的生態(tài)體系或是足夠優(yōu)秀的標(biāo)準庫,而且對可能要寫一些代碼的設(shè)計師、分析師來說太難了。
Python
Python最大的缺點是速度和類型檢查。經(jīng)過比較和分析,兩位創(chuàng)始人認為Python對他們而言已經(jīng)足夠快,而對性能有關(guān)鍵影響的部分都用C++寫了;對于類型檢查,他們最后編寫了非常完善的單元測試,確保不會出現(xiàn)類型錯誤。既然除去了這2個缺點,他們就很樂意選擇Python了。另外,通過過去5年的觀察,他們確信Python將繼續(xù)朝著對他們有利的方向發(fā)展。
Adam在回答中指出,Quora的員工目前對選擇的這門編程語言還是十分滿意的。雖然當(dāng)初在選擇時有一些傾向性,但是公司的所有早期員工對于轉(zhuǎn)型到Python并沒有怨言,尤其是之前的PHP程序員。最后他還提到了當(dāng)時Python語言的幾個好的發(fā)展趨勢。
·Python 2.6發(fā)布后,Quora使用的大部分庫都對該版本兼容,因此很快就遷移到了新版本Python
·Tornado Web開發(fā)框架正式開源,Quora則將實時更新網(wǎng)絡(luò)服務(wù)遷移到了Tornado上
·PyPy發(fā)展迅速,最終應(yīng)該可以正式用于生產(chǎn),相信以后會大幅提高性能
回答的最后,Adam表示自己對Python語言和Python生態(tài)系統(tǒng)的未來充滿了信息。