【51CTO獨家報導】豆瓣網對網際網路使用者來說是知名的Web 2.0社群,但對開發者而言,更重要的是一個應用Python打造的非常成功的Web 2.0站點。

Python誕生已有20年的歷史,目前國內的Python發展狀況如何?與其他語言(平臺)相比,Python有哪些顯而易見的優點?豆瓣應用Python進行Web開發有哪些成功經驗可以借鑑?帶著這些問題,51CTO記者在Qcon 2010會場有幸採訪到豆瓣網首席架構師洪強寧先生,由他來向我們講解Python的Web開發之道。

Python正在成為一門主流語言

Python在國內的興起已經有近五年的時間,在2004年底豆瓣剛剛開始起步的時候,國內Python使用者已經初步形成一個小圈子,集中在CPUG社群(CPUG是中國第一個正式成立的Python社群,聚集了大量Python愛好者,為Python的普及和推廣起到重要作用);現在,GPUG的老使用者散佈在國內各大軟體公司,在他們的推動下,現在國內非常多的軟體公司在使用Python。

除了社群的推動,榜樣的力量也很重要。隨著豆瓣的成功,瞭解Python、學習和應用Python的人也越來越多,它已經不再是幾年前的一門小眾語言。洪強寧說:“Python在國內的使用已經像前幾年在國外的發展一樣,逐漸成為一門主流的語言”。

Python簡單的力量

近年,Python的應用範圍越來越廣,也吸引了.NET和Java平臺的注意,比如.NET平臺上的IronPython和JVM上的Jython。Python的哪些特性吸引了這些平臺對它的引入?

“因為Python的簡單,它比Java簡單,比C#簡單”,洪強寧說道:無論在JVM平臺還是.NET平臺,用Jython和IronPython來做開發,從開發效率上講,Python的開發上是要比直接使用Java和C#的開發效率高。

在.NET或Java平臺,語言上的選擇更多的是從效能角度來考慮,Java和C#在效能上的優勢Python可能無法追趕,但從實現業務邏輯和功能的角度看,Java和C#可以做的,Python也可以做,而且更加簡單。

Python vs Ruby

Python是一門動態語言,在開發效率上有著先天的優勢;但我們也會想到近年大熱的Ruby語言,同樣具有動態特性,同樣長於敏捷,它們兩者之間有哪些差別呢?

洪強寧指出,豆瓣在剛開始技術選型時考慮過Ruby,但在當時看來,Python的庫要比Ruby更成熟;Ruby強於Rails框架的應用,但涉及到後臺計算方面的能力,Python的優勢更加明顯。Python和Ruby兩種語言本身沒有好壞之分,兩種語言都有非常成功的案例,都能做出好的Web應用,更多的選擇還是開發者的個人喜好問題。

豆瓣Python應用開發經驗談

豆瓣是一個Web 2.0網站,這類網站的特點就是“Always Beta”,不斷有新的產品和功能升級來為使用者提供更好的服務。作為使用Python進行開發的網站,豆瓣有效的程式開發配置和版本控制值得我們學習。

豆瓣的主要開發環境配置就是SVN+Trac+Bitten。豆瓣的版本管理系統使用的是Subversion(SVN),使用Trac來管理協同開發,同時使用Trac的Bitten外掛進行持續整合。

在開發模式方面,由於是Always Beta,豆瓣採用的方式是:站點執行在主分支上,開發者在開發新功能時會建立一個子分支,新功能開發並測試完成後,會更新伺服器的主分支版本,之後上線。

在開發框架方面,豆瓣主要使用Quixote(被稱之為“堂吉訶德”,一個輕量級的Python Web框架,簡單、高效,程式碼簡潔);後臺執行的Web服務主要使用Web.py(web.py也是一個Python的Web框架,簡單且功能強大)。

後記

最近有一本新書叫《豆瓣,流行的祕密》,我想,豆瓣的流行不僅是依靠成功的產品,對於開發人員而言,產品的背後是實現它的技術——Python。在此次Qcon大會上,洪強寧先生與參會者分享了Python於Web 2.0網站的應用,強調了Python簡單的特性。對於技術而言,簡單也是一種力量。

關於Python

Python語言的歷史可以參考51CTO的Python創始人小傳《Guido Rossum:打造Google第三大開發語言

關於Subversion

Subversion(簡稱SVN)是一款開源的版本控制管理系統,被認為是CVS的替代者。Subversion的版本庫可以通過網路訪問,從而使使用者可以在不同的電腦上進行操作。從某種程度上來說,允許使用者在各自的空間裡修改和管理同一組資料可以促進團隊協作。

關於Trac

Trac是一個開源軟體平臺,整合了Wiki和問題跟蹤管理系統。Trac以簡單的方式建立了一個軟體專案管理的Web應用,以幫助開發人員更好地寫出高質量的軟體。Trac採用Python語言開發的,因此Trac的在執行的時候,需要有Python環境的支援。

關於Quixote

Quixote是一個Python的Web框架,它基於簡單靈活的方案設計,可以進行快速地開發專案,而且使用很多Python第三方模組。通過恰當地配置,可以讓Quixote發揮巨大能量,這使得它可以被用於大規模系統當中。