是我把现在的应用移植到
PHP 的最主要的一个原因。我可以让 Rails 跑的跟 PHP 一样快,但
那需要提供
2 到 4 倍高的硬件条件。我估计五年内将还会这样,五年后我也许不必把程序移
植到
PHP。但现在,它不能满足我的要求。
第二,我讨厌
Active Record。Active Record 是一种模式,并不是 Ruby 固有的,在 Rails 的最
新版本里是可选择的,但是对它的使用和这种模式已经深入到了
Rails 的 DNA 里了。我之前
曾解释过为什么我认为这
上的
ORM 不是个好做法,所以我不会再重复解释,但有一
点我需要总结的就是你省去了手工写
CRUD 所获得的效能要大于 ActiveRecord 做傻事所损
失的效能,要花时间搞清楚它是怎么工作的,顺应框架原则,防止它做这样的事情。
第三,我十分的不信任代码自动生成。工具能帮你生成
却多出了成堆的毫无用处的代码来实现这些目的,这就变的不好了。代码生成喜欢
“神奇推
理
”,因为生成器并不确定代码某些特别有用的特征究竟是专门写出的还是语言环境固有自
带的。神奇推理是危险的。
代码生成让我想到了
Ruby on Rails 的一个可能是最根本的问题,就是它并不是一种语言 。
Ruby 是一种语言。但 Ruby,它在解决了 PHP 上的一些基本问题外,并没有解决核心问题,
那就是现代
web 应用需要一系列的改进:像 routing,model/view 分类,drop-in 功能性等都是
很常见的特征。
Rails 里有,但这跟 PHP 里的 Zend,Symfony 和 Code Igniter 之类的 MVC 框
架一样只是绑上去的绷带。
那么缺的是什么
? 能够取代 PHP 的语言必须十分优秀于 PHP,就如同 PHP 优秀于 Perl 一样。
它必须承担起
web 应用的主要实现任务,就像 PHP 那样,你的代码的主要功能就是输出网
页
—— 一个有点激进的要求,它要不适合去做其它的事情,例如当中 shell 脚本语言。我希
望有这样一种语言,它能够承担起我开发一个
MVC 式的 web 应用时的所有的任务,所有
功能都是核心内置的,不能仅是一个程序包。
问题是,没有这样的一种语言。有一段时间服务器端
t 看起来将会成为下一个重要
的语言,它能统一
web 应用前端和后端的编程语言。但是这些
上的伟大思想总是
徘徊在一些跑题的行为上,比如
:事件驱动模式非常的激进和强大,能让你开发出
高性能的应用程序,最大化的使用新式硬件,但这是一种开发服务器端应用程序的思路,
不是
web 页面。并且你仍然需要去写一大堆可怕的 web 页面。另外一些 CommonJS 的成果例
如
开始尝试着取代
PHP,但仍没有解决框架问题。
仍在等待
我不得不做出结论,PHP 的替代者还不存在。Ruby on Rails 很好,但并不比一个
PHP 之上的类似的 MVC 框架强多少,更别提由于 Ruby 自身的效率不高和 ActiveRecord 的
ORM 恶搞带来的双重打击。Python 看起来并不感兴趣于作为下一代的 web 语言,JavaScript
的服务器端解决方案还刚刚只是个开始。
我等待下一个大目标的出现。我希望能从
PHP 上转走,真的。我可不想成为 Perl 式的古董。
但不管怎样,这种语言看起来还不存在。我判断错了吗?