星期一, 十月 09, 2006

天下大势,合久必分,分久必合

永远无休止的 Web 框架之战,几乎主流的编程语言都涉及了 Web 开发,从 ASP/PHP/JSP 的兴起,从 Model1 到 Model2 的转变,几年间大家从简单的 ASP + ADO + XXX 到使用各种框架,框架优劣的讨论几乎成了争论的焦点。

我也是从 ASP 时代过来的,记得高中用 ASP 写了第一个留言板程序之后发现编程原来竟可以这么简单,随之接触了 Linux,接触了 PHP,接触了诸多开源的东西,至少那几年来写 Web 程序从来没有涉及过框架一说。直到用起了 Java,接触了 JSP,才逐步从 Model1 向 Model2 转变。JSP 一点都不比 ASP/PHP 简单,甚至开发速度也很慢,从一开始接触 Struts 就没发觉那点好,也从来没用 Struts 正经做过什么东西。从 Struts 诞生到现在5年多了吧,其间大大小小的框架层出不穷,似乎代码的 copy-paste 开发散发出不好的味道,大家纷纷追求更高层次的代码重用,掌握各种各样的框架成了求职的必备技能。不知不觉我们在走向一个极端,Java 各式的框架是在太多了,光是 Web 框架就够让人看花眼的了。

并不是所有时候框架都能带给开发者方便,当我在用 Java 开发 Web 的时候总是第一感觉想到我熟悉的 Spring-MVC,想到 Spring + Hibernate,自己动手搭建这么一个环境大概20分钟就过去了。就算能够开始写东西了也无法快速的看到原型,层次太清晰了,以至于不得不一层一层写,一层一层测试,写到 Web 层的时候发现自己写的一大半代码都是重复的。在这点上,脚本语言要方便得多,写 PHP 的 ShiningRay 写一个相同功能的程序甚至只需要 Java 版本的 50% 代码行数还不到,而且速度可以快上1倍,这还是保守估计。

于是太多的 Java Developer 投奔 RoR 的怀抱了,虽然我没有亲自试过 RoR,但是用过类 RoR 的框架 CakePHP,开发效率的确很高,框架的作用被很好的隐藏起来了。Convertion over Configuration,着实 Pragmatic。想当年大家都在写 Model1 的 Web 程序,Model2 的出现促生了无数 Web 框架诞生,各种各样的新鲜想法诞生了,出现了一批优秀的 Web 框架,但都自成体系。时间长了,大家都累了,学一个框架已经远远不够了,至少也要了解另外几个才行。RoR 推行的概念很好,抛开其他因素,按照约定俗成的规范来写程序。可能在 DHH 之前已经有很多人这么做过了,只是没有能够像 RoR 宣传的这么好罢了。从合到分,从分到合,技术总是在不断变换中前进,大方向是好的,都是为了提高生产力,关于语言、平台方面的争论就少一点吧,与其无休止的口水战还不如踏踏实实的写好程序。

1 条评论:

匿名 说...

分有分的道理,合有合的道理,分分合合,就是这个道理:)