自从facebook的创始人adam d'angelo开始效力于这个大量使用了php的网站,我就一直在想他要用python而不是php来创造quora所遇到的技术挑战。
adam d'angelo,quora创始人:
我们非常确定我们不会用php。facebook因为历史遗留原因而使用php,并不是因为它是最好的选择。
从以往的经验看来,编程语言的选择是非常重要的,并且会付出非常昂贵的代价来改变它。
python是一个charlie和我都非常了解的语言(尽管我现在比刚开始的时候了解的更多了)。我们也简单地考虑过c#、java和scala,python最大的问题是运行速度和缺少数据类型检查。
c#似乎是很有前途,作为一个编程语言,它很伟大,但是:
我们不想在微软架构上,我们是为了学习新东西的,ms sql 确实是非常不错的,但是我们知道我们需要为.net集成很多有二等支持的开源代码,如果它支持的话。并且,现在大部分的工程师都习惯开源资源。我们不会在mono(c#/.net的一个开源代码的实现)上冒险。还不清楚这个项目会用多长时间,并且我还听说了不少已经表现出来的问题。总之,似乎一切在c#生态系统中的东西都表现出我们会在微软架构下。
‘另外两个我们简要考虑了的语言还有ocaml和haskkell(没有一个有足够大的生态系统或足够好的标准库,可能对于需要写代码的设计师/数据分析师/非工程师来说太难了)。
我们决定,对于大多数我们要做的事情来说,python已经足够快了(因为我们尽可能的把我们的后端服务的关键代码用c++来写)。至于类型检查,我们写了完善的单元测试,它值得写,并且实现了大部分相同的目标。从它过去的5年发展来看,python会继续向着好的方向发展。
所以,我们对于这个选择感到非常开心。虽然其中有一些小的分歧,但是之前使用其他语言的早期的员工非常高兴的过渡到了python,特别是之前使用php的。自从下面这些事情开始发生:
python2.6是一个转折点,它有了足够多的库进行兼容,我们很容易过渡到它tornado(web框架)被发布为开源,我们把实时更新网络服务迁移到它上面pypy看起来最终是可用的,并且会给我们一个显著的加速
总之,这些给了我们信心,让我们相信这个语言和生态系统正向着好的方向发展。
charlie cheever,quora的一个创建者
给adam的答案补充几件事情:
python有一堆相当好的提供了良好的调试器和重载的框架(django,pylons和其他一些),这些大部分都被很好的支持并且也变得越来越好。由于我们的主要工作是建设网站,这是很有吸引力的。python数据机构很好的匹配js数据结构,所以处理浏览器和服务器之间的数据非常直接和简单。这真是太好了,因为quora中涉及到大量的客户端和服务端之间的不加载页面的交互。python代码往往可读性很强,因为我们希望能在网站上和一帮人工作,这变得非常重要。有很多其他的python写的库,所以很容易在我们的代码中引入一些东西,比如:自定义邮件服务器、任务队列,等等。
ruby是另一个我认为比较合理的选择,因为它和python有很多相同的优点,但是adam和我都对python了解的更多一点。