Web开发纠结于编程语言是非常不必要的

01 Nov, 2011

在搞Web开发以来,混迹在V2EX和知乎,看到最多的就是关于进入Web开发,选择什么语言的问题,看来对于某些人来说,语言太多了也是一件头疼的事情,于是纠结在不同语言的各种特性比较之中,最后也没拿定个主意。就目前而言,搞Web开发,汇编、C、C++你就不要考虑了,如果你真要考虑,那允许我叫你一声“大神”,就目前而言,常被拿出来抉择的无非就是:PHP、Java、C#、Python、Ruby,而Ruby就目前看来,已经缩小到特指Ruby on Rails了。

下面我谈谈我的选择过程。最先考虑的是PHP了,在做Web开发之前,我主要学习的是前端,什么HTML、CSS、jQuery都能使用,而且也能遵循规范做到规矩,虽说不是熟练,但也能搞出个东西。在高二时接触PHP环境,当时主要是修改一下,从没有系统的学过,大一时也准备系统的学习一下PHP的,理由显而易见,这东西很流行,主机支持也多,入门也简单,开源程序多的很,不过看过教程过后,打消了这个念头,PHP入门确实简单,不过真要做出一个稍微大一点的东西,就必须考虑很多东西。PHP也有很多开发框架,不过最后还是放弃了,理由是感觉PHP程序确实不好读,想要写得优雅(主要指形式上的)比较难。

从高中接触互联网以来,尤其开始使用PHP的各种开源程序以后,经过各种开源理念熏陶,现在对Java、C#什么的靠大公司垄断或者支持的产品确实提不起兴趣,不是说这些不好,而是不太符合自己的想法,如果说以后为了混饭吃,必须去搞这些工业化的语言,还是会去的,但自己的东西,我是不会考虑这些东西的,至少现在是。我也有同学现在学的是Asp.Net开发,看着在集成开发环境里用用控件什么的,还是比较轻松的,不过相比轻松,我还是喜欢有趣的。

然后就是Python和Ruby了,无疑,我最先知道的是Ruby,在图书馆里瞎转是看到的,一看是日本程序员开发的,我就联想到机器人,结果翻开一看,并不是,草草翻了几页,感觉有些意思,不过也就到这里了。Python是在GAE时看到的,在今年暑假前实习时,我就一直纠结是选择Python还是Ruby,最后在网上搜索入门中文教程时,找到了Python的,而Ruby的则没有找到,于是就进入Python的世界了,刚开始的主意是使用Django框架。暑假就学了Python基础知识,并接触了Django,最后感觉,Django太繁琐了,我需要的是一个简洁的Web开发框架,于是找到了Webpy

有人对Python的最大不满就是,代码块以强制缩进来表示,认为这是顽固的毫无情趣的古板东西,而这却是Python的理念之一,解决一个问题有一种方法就行了——简洁和清晰。就目前我的性格来看,显然是极其喜欢这种富有层次的美感,你可以说我心里有严重的压迫症,不管怎么样,我现在就是觉得看着这种缩进十分舒服,以至于我看着C的大括号就觉得很是多余,很是刺眼。而Python的一些Web框架同样有这样的美感,Webpy,现在我使用的Tornado,它们的设计理念都十分对我胃口,既然对我胃口,为什么不用呢?

再说Ruby,实话说,我非常欣赏Ruby的一些语法特性,不过我觉得,Ruby没什么优势,而现在Ruby的流行主要取决于Rails框架。在Perl后,Ruby和Python的拥护者常常进行类似宗教战争的斗争,在各大讨论编程的论坛,都可以毫不困难的找到这样的争论话题,而在各种争论之中,Ruby拥护者实际上是ROR拥护者,它们强调着ROR的敏捷开发特性,强调着开发速度是多么的快,毫无疑问,现在的互联网的竞争就是速度的竞争,你能想到的创意别人也可能想到,然后关键就是谁最先将创意变成现实。我在看了各种阐述ROR神奇的介绍后,也开始尝试试用一下,我强忍着我所讨厌的有一串end的Ruby语法,开始了ROR之旅,最后我发现了一个问题,那就是它们强调的敏捷与高效,完全是要针对人的,不是每个人都习惯ROR的风格,比如我就不行,感觉是个很微妙的东西,说不出为什么,就是不习惯,于是不舒服,既然不舒服,为什么要使用呢。

上面只是针对我自己而言的,我估计大概没有人既喜欢Python又喜欢Ruby吧,说不定ROR就十分迎合你的胃口,那么,我推荐你学习Ruby,并使用ROR进行Web开发,如果适合你,那你可能会体会到效率与痛快了。Python的问题就在于,你纠结了那么多的语言最后选择了他,结果你还得纠结更多的开发框架,Python究竟有多少Web框架,我没有统计过,但至少和ROR一统Ruby Web开发框架的天下相比,说是七国混战也不为过了。选择了Python风格,你又要开始清楚你对Web框架的风格了,然而最重要的一点是,这些框架都是有共通性的,这个留到以后再谈。

说到这里,很明显我选择了Python,而业余之中,我会一直使用它,以后靠什么吃饭,现在就不清楚了。或许也说不定那天,我心情一高兴,受到什么刺激过后,风格大变,开始厌倦Python的风格,而喜欢上Ruby,那也是有可能的。

有人会抱怨说Python、Ruby什么的叫脚本语言,是不是太那个啥了,功能够用吗?速度够快吗?还是觉得Java、C#什么的要靠谱一点,我想说的是,你为Python、Ruby的功能和速度担心,还不如多关心一下自己的网站,快速实现,并加大推广,等你的站点达到这些语言的瓶颈时,再考虑将瓶颈的地方改用C或者C++实现,而对于Python来说,这点是很好满足的。说句实话,你的站点或许永远达不到所谓的瓶颈,想想如果Facebook刚开始时担心PHP的瓶颈问题,我估计马克现在还在纠结要不要使用PHP,而达到现在的规模过后,已经有足够的资金来扩展服务器或者改写某些功能使用更快的C或者C++实现了。

如果有创意,快速实现是非常重要的,而你也不必纠缠于不同语言的各种特性之中,找一个自己看着舒服,写着有趣的语言,用着方便的框架赶紧上吧,如果你已经会Java或者C#这些,那也上吧,不要犹豫了,如果你能保证你使用汇编或者C、C++哪怕是LISP能更快的搞定你的想法,那也上吧。纠结于实现的编程语言,是一件费时不讨好的东西。