2012年6月3日星期日

豆瓣在python和ruby之间为何选择前者?

问阿北兄一个问题,知道你在做豆瓣之前曾对python和ruby做过对比,最后选择了python和quixote。为何当初没有选择ruby和rails呢?
我不知道ruby有没有象twisted这样的产品,是不是用ruby做crawler没有python和twisted的优势呢?



A: 最主要的原因是ruby用的人太少了。至少python在中国有真正的使用者,有仨儿这些人吆喝着,还算有些气候。没有使用者,豆瓣以后的开发团队会是一个问题。从技术管理的角度来看,没有用java已经有些不切实际了,用ruby就太过理想主义了。 

还有一个问题是库。python有大量现成的库,而且很多库都经过大型商业应用。这点ruby还需要时间。比如rails在大访问量下的性能怎样,还不是太清楚。

从个人喜好来说,python更简洁,和我口味。python用缩位不知省去了我多少时间。我以前 { } ; 敲了十几年了,现在想起来真是不堪回首。

F1: 阿北兄在最初就能考虑到将来的开发团队让小弟深感敬佩。 
现在想来,豆瓣使用python而没有用java是非常正确的选择,技术上激进一点儿,只要风险在可控的范围内,也许能给系统带来全新的开发和使用体验。
豆瓣现在实际上已经成为国内使用python开发商业系统的典范。只要一提python做的站点,大家首先想到的是豆瓣,而不是用zope/plone架构的网站。提到有创新精神的站点,大家首先会想到豆瓣和土豆,而不是其他N多制造流量的网站。
我也一直关注学习拥戴python,当初北哥把豆瓣上线的消息发到python.cn邮件列表后,也参合测试过一下豆瓣。最近试用了一下rails,给我印象最深的是两点:一是ruby使用gem管理package的科学和方便,小弟以为这是python做的不好的地方,同样根植于*nix,python却没有吸收这样优秀的思想,程序安多了path和package容易造成混乱,也很难把握程序之间的依赖关系,而在安装rails的时候所依赖的Rake,ActiveRecord等等都会提示给你询问是否安装,真诚的希望将来python也可以学习这种包管理的方式;二是rails的体贴干练,把ORM,MVC等等都已经准备好了,甚至需要和apache集成的FastCGI只要安装一下就可以了,而python很多事情都要自己来做,有时还需要慢慢调试寻找依赖,python.org上罗列了很多应用,至少我目前还不知道有象rubyforge.org这样的站点。我觉得python象gentoo和debian,想要很好的使用必须要深入底层;而ruby象mandrake和radhat,深入底层会做的更好但是不下去也可以让你聚焦在应用上把系统run起来。希望python象ruby学习是真的,不过说实话,有了zope/plone,twisted,gmail,豆瓣这些成功的例子,如果做大型的皮实的系统的话,还是python更让人心里塌实些。ZQ兄在北京moc.anis不是发展的不错嘛,最近还看到发到邮件列表里的招聘消息呢,难道还要再回上海来?^_^

F2: Python 可能因为发展的太快,有些混乱,但是有一个本质可以令Python 永远的可爱下去,那就是Python 使用代码的缩进格式来进行层次判定,这样一来保证了所有的Python 脚本是格式统一的,并隐含的迫使你不能尝试太多的嵌套堆砌………… 

这比任何一种使用 {} 或是 begian end 来划分逻辑层次的语言要人性的多,我们在学习他人的代码时不用捏着鼻子来习惯别人古怪的代码习俗………………

没有评论:

发表评论