Quora – Python 驱动

写这个主要是因为我做自己的这个网站用的就是 Python 技术(基于简洁的 web.py 框架)。虽然 Python 只是业余爱好,不怎么熟悉(每次写代码都得上网查好多资料,包括语法),但是很喜欢它。这几天发现最近很火的新问答网站 Quora 也是用 Python 做的,它自己网站上有一个问题就是——

Quora 是使用什么语言和框架做的?

What languages and frameworks were used to code Quora?

创始人 Charlie 的回复:

  • 后端使用 Python 语言,Pylons 框架,但是框架一半左右被自己的系统替换(LiveNode/webnode2)
  • 前端 JavaScript 基于 jQuery
  • Thrift 做后端服务器之间通信
  • Comet Server 使用 Tornado
  • hosting 主要使用 Amazon EC2, S3
  • 目前数据库使用 MySQL,memcached 做缓存,还有两个用 C++ 写的服务一起作为 data store
  • 版本控制用 Git

这个组合看起来不错!(其实我就是看着酷,其中有好多技术都从来没有尝试过。) 有人接着问:

为什么 Quora 选择 Python 作为开发语言

Why did Quora choose Python for its development?. 下文只是简单整理,不是翻译。

创始人 Adam 的回复里,提到两个创始人正好都比较熟悉 Python. 另外他说明了排除其它语言的过程:

  • PHP 根本不考虑。Facebook 陷进去无法脱身,不代表它是目前最好的选择,由此得到的经验是编程语言的选择非常重要而且改变的代价非常大。Adam 此处给了其它几个链接,其中有指出 PHP 一大堆弱点的,也包括一个问题 “Do Facebook engineers enjoy programming in PHP?“. 我很赞同 Facebook 的工程师说的,familiarity breeds contempt. 没有完美的语言,每一种语言都有长有短,当把它用到极限的时候,短处就变得很显眼并让人烦恼。我个人认为 PHP 也仍然是不差的选择。

  • C# – 看起来不错但是 –

    1. 他们不想把基础搭建在微软的技术平台上。SQL Server 很好,不过 Quora 需要一大堆开源软件,这些代码即使支持 .NET, 也支持得比较差。
    2. 不想冒险使用 Mono,因为不知道它能撑多久,而且据说有性能问题
  • Java 程序因为一些原因很容易变得更长,写起来比 Python 痛苦多了。

  • Scala 太新,也是一种冒险,另外虽然不像 Java 那么差,它也天生继承 JVM 的一些弱点。

Python 虽然有性能问题,但是 Quora 一些性能很关键的代码都用 C++ 写(Python 的优势,Java 做起来相对困难)。至于类型检查的缺乏,Quora 通过完善的单元测试来弥补。

Quora 另一位创始人 Charlie 加了几点:

  • 创立 Quora 的时候,Python 有许多很好的 web framework
  • Python 的数据结构跟 JavaScript 映射很好,这样 CS 之间交互数据很方便
  • Python 代码更易读
  • Python 在各方面有很多成熟的 library

还有一个问题:

为什么 Quora 要用 Pylons 做开发

Why did Quora choose to develop in Pylons?. Charlie 说他们想把 Pylons 的很多东西替换成自己的,比如他们不需要模版和 ORM. 在这方面,Pylons 比 Django 之类的要好。

说到这个,我个人也很不喜欢 ORM,比如 Hibernate, 比如 RoR 的 ActionRecord. 如果认真做一个网站,不使用 ORM 不会让你的速度变慢多少。而使用了 ORM 必然会有额外的负担,数据库也更加不透明,定制变得更困难。


希望 Python 这个语言发展得越来越好,如链接中 Adam 所说的。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.