为什么Quora选择Python作为它的开发环境?

自从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了解的更多一点。

英文原文: https://www.quora.com/Why-did-Quora-choose-Python-for-its-development 译者: cmsl

*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

- END -

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2018-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏带你撸出一手好代码

框架是什么

「框架」一词在编程术语中使用的频繁程度绝对排前五, 框架的数量也成百上千倍于编程语言, 任何一门编程语言都会搭配上一定数据的框架用以提升开发软件产品的效率。 随...

51660
来自专栏ThoughtWorks

庖丁解牛:产品需求分析|洞见

在庄子的《南华经》中有一则寓言。说是有位叫丁的厨师,替梁惠王杀牛, 其技法之娴熟,有行云流水一般的顺畅感。惠王就问他为什么有如此高超的技术。他回答说:“臣所喜好...

38570
来自专栏非著名程序员

非著名程序员:微信小程序的开发与体验之旅

? 导语:在开始之前,先祝福大家新年快乐,祝福新的一年里工作顺利,身体健康,阖家欢乐。不知道大家这个元旦假期过得怎么样?反正我个人认为我过得很充实。先是爬山,...

278100
来自专栏我就是马云飞

一个 2 年 Android 开发者的 18 条忠告

我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有2年半了, 最初的时候,并没有人告诉我如何做才是正确的。我犯了很多错误,浪...

26980

想知道Tableau适不适合你?以下10点助你一臂之力

译者注:文章源址:https://blog.openbridge.com/is-tableau-right-for-you-10-point-checklist...

1.9K70
来自专栏企鹅号快讯

Linux运维工程师学习成长路线

昨天【送书3本】这本学习linux的书,至少我很喜欢的活动,大家的热情,完全超出了小编的预想。 之前小编送书 | 有人偷偷爱着你的送书活动号召力明显逊色了不少,...

63790
来自专栏Java学习123

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

854160
来自专栏AI科技大本营的专栏

厉害!这还是我认识的Python吗!

Python 可用的地方非常多。无论是从入门级选手到专业级数据挖掘、科学计算、图像处理、人工智能,Python 都可以胜任。或许是因为这种万能属性,周围好更多的...

17430
来自专栏数据科学与人工智能

【Python环境】人们对Python在企业级开发中的10大误解

在PayPal的编程文化中存在着大量的语言多元化。除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Braintree的收购也...

27270
来自专栏互联网数据官iCDO

活用GA的监测协议(Measurement Protocol)功能,实现你想不到的数据监测!

大约两年半以前,一位当时就已经从事互联网数据工作多年的前辈在笔者边上如是说:“最没有不可替代性的就是数据分析师,就是个锦上添花的。像什么策划啊、产品啊、美工啊、...

69380

扫码关注云+社区

领取腾讯云代金券