问题答案

前几天和一个看好 Python 的 Rails 开发者聊天,他看好 Python 的原因就是 PHP 统治今天的网络应用开发。而 Python 很像下一个 PHP 。

标签: PHP python
答案
『下一个 PHP』如何定义?是指流行程度么?如果是的话,我觉得 Python 不会像 PHP 那样流行。根本原因在与部署难易程度。
 
PHP 从语言层面上讲几乎是一无是处,具体实现的质量也乏善可陈,但它胜在最要命的部署上:没有任何其他语言有像 PHP 一样适合大规模部署的方式。基本上装好 Apache/mod_php 之后,PHP 应用的部署就简化为了复制文件。即便是考虑到性能原因等采用 nginx/FastCGI 等替代方式,额外的工作也只是在于最初配置。一旦配置完成,之后的部署都是文件复制。服务器重启后通常会自动启动 apache/nginx,fastcgi manager 负责启动 php-cgi 进程等,而 PHP 应用基于文件的调用方式并不需要操心更多的维护。这对于如 Dreamhost 之类的平台来说至关重要:他们通常要一台服务器处理成千上万的低流量用户,而且这些用户没有 root 权限去运行其他进程。PHP 脚本的生命周期很短,没有常驻进程,每次调用之后就被终止,对于应用作者的要求更低,不用太多的考虑资源管理问题。
 
这和 Python 之流的部署有天壤之别:大部分 Python 的网络应用如 Django, Tornado 等都需要单独的常驻进程(Apache/mod_python 似乎是个杯具)。这些进程需要额外的维护工作以管理其启动、停止,也需要额外的监控进程处理意外退出后的重启。这需要用户对系统有更深入的了解。常驻进程需要占用系统内存,通常不可能在一台服务器上运行成百上千个应用,对于 Dreamhost 这样的服务提供商来说不适合用来处理诸如 WordPress 博客之类的简单应用。常驻进程也要求作者对系统资源的管理、垃圾回收机制等有更深入的了解以避免内存泄露、资源占用过度等问题。现在 Python 网络应用部署最简单的应该是 App Engine,采用了类似 PHP 的生命周期(请求处理 30 秒限制,超时被终止,无法运行常驻进程),极大简化了管理难度,但是国内无法访问…
 
所以从流行程度上讲,Python 不会超过 PHP,因为数量庞大的服务提供商无法用 Python 支撑现有的用户规模。但是这个流行程度对于创业公司、专业人士来说没有什么意义。很多核心的网络应用不适合用 PHP 的短暂请求处理机制实现(比如准实时 push 提醒、网页即时聊天等),而更加适合由常驻进程来处理。这些才是 Python,Ruby 等语言实现发挥其能量的地方。
 
python的强大之处在于语言的简洁与优雅, 以及它强大的表达能力. hacker们愿意使用python来作为他们表达思维的方式. 
在web开发上面, 正如上面Rio所言, python部署成问题, 但是对于商业网站而言, 自己处理一台vps不成问题. 而python的通用性, 能保证完成各种非常规的应用.
简单地说, 如果你只是需要web1.0的内容展示网站, 考虑php, web2.0, 可以考虑python, 以及RoR.
举一反三