写这个主要是因为我做自己的这个网站用的就是 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# – 看起来不错但是 –
- 他们不想把基础搭建在微软的技术平台上。SQL Server 很好,不过 Quora 需要一大堆开源软件,这些代码即使支持 .NET, 也支持得比较差。
- 不想冒险使用 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 所说的。