Python适合大型应用吗?
从我第一次接触Python开始,我只能说“它太棒了”。我在使用Django框架,真的很惊讶事情进展得有多快,以及这个语言对开发者有多友好。不过,我听到很多人说Python是一种脚本语言,主要适合做一些小项目、实验之类的。
所以问题来了,能不能用Python(和Django)来开发一个大型、负载很重的应用呢?因为我主要关注的是网页开发,像Stack Overflow、Facebook、亚马逊这样的应用就是很好的例子。
附注:根据很多回答的意见,也许我需要重新表述一下这个问题。其实有几个大型应用是用Python开发的(最好的例子就是YouTube),所以它是可以处理这些应用的,但为什么它在大型项目中不如Java、C++和.NET那么受欢迎呢?
12 个回答
YouTube的后台几乎完全是用Python写的。这里有一段Cuong Do Cuong的演讲,他是YouTube扩展团队的工程经理,里面详细讲述了他们遇到的问题以及解决这些问题的方法。他提到,编程语言的速度几乎从来不是瓶颈。
我觉得YouTube的负载要比你正在做的项目大得多。
谷歌经常使用Python,所以我觉得它已经准备好大展身手了。我们把Python当作我们产品之间的“粘合剂”,所以我们对它很满意。
用Python来做大项目真的是很舒服。跟其他企业常用的编程语言比起来,你会发现:
- 没有编译时间。如果你曾经做过大型的C++项目,你就知道这会耗费多少时间。
- 语法简洁明了,读代码变得更容易。这在阅读别人的代码或者你自己很久以前写的代码时,能节省很多时间。
- 在不同平台上运行的能力很强。如果你的应用需要在多个平台上运行,这一点特别有用。
- 大部分情况下速度足够快。如果某些地方不够快,可以用C语言重写关键部分,这个过程很简单,像Cython和numpy这样的工具能帮你做到。那些因为速度问题而反对动态语言的人,可能忘了80-20法则(或者根本没听说过)。我认为,选择一个性能要求高的应用语言时,最重要的是能多容易地接触到C语言的层面,而Python在这方面表现得很好。
不过,Python并不是魔法语言,你还是需要用到其他语言大项目中常用的技巧:测试驱动开发(TDD,虽然有人认为因为缺乏类型检查,这一点比其他语言更重要,但这并不是其他语言的优势,单元测试在大项目中始终重要),干净的面向对象设计等等……否则维护你的应用将会变得很麻烦。
Python在企业中不如.NET、Java等语言受欢迎的主要原因,可能是因为没有一大堆顾问和“认证专家”在夸自己的工具是世界上最好的。我还听说Java容易被接受是因为它的语法和C++相似……考虑到C#也选择了这条路,这可能并不是个愚蠢的想法。