【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发挥巨大能量,这使得它可以被用于大规模系统当中。