• 为什么Quora选择Python作为它的开发环境?
  • 发布于 2个月前
  • 158 热度
    0 评论
自从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了解的更多一点。
用户评论