Quora为什么选择Python开发

原文链接:http://www.quora.com/Why-did-Quora-choose-Python-for-its-development

无意看到此文,有所启发,译之。

 

 

Quora上有人问了这样的问题:

 

作为Quora的创始人,Adam曾经在Facebook工作(按:Facebook的前VP),大家都知道Facebook就是个PHP作坊。 我想知道Quora为什么选择了Python而不是PHP作为开发语言?这样的选择又面临什么样的技术挑战?

 

 

Adam 站出来回复了:

 

PHP显然不在考虑之列。Facebook继续使用PHP完全是因为历史原因,并不是因为PHP现在是最好的选择。这件事让我们明白两个道理,那就是:

 

1.       开发语言的选择极其重要

2.       更换开发语言成本高昂。

 

Charlie(按:Quora的另一位创始人)和我都很熟悉Python(尽管我现在对Python的理解远比以前更加深刻)。事实上我们也曾经考虑过其他选择,比如C#, JavaScalaPython最主要的的问题是运行效率不高和缺乏类型检查机制。

 

C#看起来是不错的选择。作为一门程序语言,它非常棒,但是有以下顾虑:

 

1.       我们不想依赖于微软的技术链。 我们乐意学习新东西,MS SQL看上去也很不错。不过我们知道我们将集成很多开源程序,而这些开源程序对.NET顶多也就是提供二手的支持(如果有的话)。另外,现在最棒的程序员都习惯于使用开源的东东。

 

2.       我们也不想冒险去使用Mono(C#/.NET的开源实现)。 Mono项目的资金支持能持续到什么时候还是个未知数,而且也听说过它存在一些性能问题。另外一个很大的问题是,一旦你使用C#,它便假定你所有的东西都是基于微软的生态系统实现。

 

至于Java,也有一些并非根本的因素导致我们不乐意选择它。Java程序通常比同等Python程序要长,编写起来更加麻烦。如果需要集成非Java实现的东东,那就更头大了。Scala尽管会好一些,但还是从JavaJVM哪里继承了很多这样那样的毛病。同时Scala也太新了些,这会让我们冒不必要的风险(比如,天知道未来10年它会得到什么样的支持)

 

另外我们还考察过其它两种语言:OCamlHaskell。但二者都缺乏足够大的生态系统,标准库也不够完善。而且对于有时不得不写代码的设计师/数据分析师/非程序员来说,它们实在是太难于学习。

 

Python的性能已经能够满足我们绝大部分需要,而涉及性能关键的代码我们都尽可能使用C++实现,运行在后端服务器。至于缺乏类型检查的不足,我们通过详尽的单元测试来弥补,这非常有效,完全达到了目的。同时,过去5Python演进的方向也让我们对其未来的发展充满信心,这对我们的codebase非常有益。

 

到目前为止,我们很满意当初的选择。我们的选择或多或少有一些个人偏见,不过值得高兴的是,所有过去使用其他语言的团队成员都非常乐于转换到Python,特别是那些PHPer。还有一些值得一提的是:

 

1.       Python2.6发布时,我们用到的绝大部分库都保持了兼容,这是我们非常容易的完成升级。

2.       Tornado(web framework)开源了,我们马上把实时更新部分的web service迁移到Tornado实现。

3.       PyPy 看上去终于具有可用性了。这将给我们带来极大的性能提升。

 

所有这一切,都让我们相信Python及其生态系统在向好的方向发展。

 

 

另外一位创始人,Charlie,对Adam回复的一些补充,

 

1.       Python有许多很酷的框架,它们拥有很棒debuggerreloader,比如Django, Pylons等等。大多数框架都有良好的社区支持并变得越来越好。因为我们主要做的是web应用,所以这非常有吸引力。

2.       PythonJavascript的数据结构匹配得非常好(Python标准库内置对json的支持),因此browserserver间序列化和交互数据简单直接。由于Quora除了页面加载外, clientserver还有很多数据交互,所以这非常棒。

3.       Python代码有良好的可读性,这很重要,因为我们需要和很多人一起协作。

4.       Python有丰富的开源程序库,所以要集成mail servertask queue之类的到我们的codebase非常容易。

 

我想Ruby也是一个合理的候选,它同样具备很多Python具备的优点。只是Adam和我更熟悉Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值