编程要不要美

mujiang

在《GAE 添加 PHP 支持引发的一波讨论》中,有篇挺 PHP 的文章,第四部分,作者提出了:编程不一定要美(因为 PHP 被诟病的原因之一就是很多 PHP 代码是丑陋的)。

先翻译出来,再说说我的观点。

翻译开始 {

多年前,我开始看到人们赞美 RoR(Ruby On Rails),相对于使用 Java 或 PHP 这些语言,他们认为 RoR 是 Web 应用开发的最佳选择。

我看到在 RoR 创建者 David Heinemeier Hansson 的一些言论中,他在推行这样一个概念:编程必须要美。我想知道这是什么意思,是指代码风格么?还是指项目架构?还是指开发方法学?或者其他?

可能我没抓住要点,但我会这样设想:RoR 在推行一种开发方法学,作为一种正确和多产的方式。如果你不离开 Rails 平台,你的“火车”可以行驶得飞快。

但在我看来,持续地使用一种开发方法学并不依赖于你使用哪种开发语言或者框架。

我使用同样的方法学开发 PHP 项目很多年了。我觉得自己是多产的,因为我也是一贯遵循同样的方法学。我开发项目相当的快,因为工作已趋于机械化。

看起来,RoR 给那些没有方法学可遵循的同学的 Web 项目开发带来了一致性。

但是,遵循方法学的开发并不一定要基于 RoR,也不需要基于 Ruby。在 PHP 中也同样可以,你可以选择使用一个类似的框架或者不用也可以。事实上,现在出现的很多 PHP 框架都从 RoR 中学习引进了一些东西。

RoR 也从 PHP 中引进了些东西。例如,已经整合到 RoR 项目中的 ERB 模板系统,其实这就是一套模板解析机制,在 PHP 中早就有了。

有些人还布道说,你不能将代码和 HTML 模板混在一起,如果那样,就是丑陋的,在你死后你会被打入地狱的。所以,我猜 RoR 的同学也会同意:编程不一定要美。

还有一件被人们认为丑陋的事情是,在应用中使用全局代码而不是用类封装。好吧,你看看 WordPress 的源代码,你会看到遍地的全局代码。

我写过一篇为什么《用类组织你的代码》比使用全局代码要好,但也不是一种强制性的规则。

全局代码并不美,但它能工作,PHP 允许它的存在,很多开发者还在使用它,还靠它谋生。

} 翻译结束。

 

下面是我的观点。
一、作者提及的几个事实:

1、确切的说,RoR 是指一套开发框架,而 PHP 是指一门脚本语言,但在文章中,大家应该都能看出,作者是在比较两个开发平台(或者说环境、生态)。

2、RoR 推行了一套开发方法学,能提高生产力。这也是 RoR 流行的重要原因之一。

3、PHP 因为诞生的早,使用广泛,也遗留下来很多原始的特性;而 RoR 诞生在行业更加成熟的时期,是更先进的。解释型语言很多方面可以互相学习,但 RoR 有更多值得 PHP 学习的地方。

4、开发方法学等理论知识,都是跨语言的,这些知识比掌握一门语言语法更有价值。当然语言对理论的支持程度有高低,RoR 对开发方法学的支持应该不错(我没实践过,此为揣测),而 PHP 中也有框架能支持,但框架太多,还得进行选择。

二、作者并没有证明他的观点:

1、关于“美”的概念,RoR 创建者所指的“美”应该是:好的编码风格、好项目的架构、等等(如作者所理解的),目的是为了能良好应对未来的变化。但是作者举的例子中,HTML 模板和代码不能混杂,这里的“美”的意思更偏向“完美”的硬性标准,概念变了,不能作为论据。

2、WordPress 的成功,主要是市场上的成功,而不是技术上的。不管代码美不美,我想 WordPress 都能成功,只要它抓住了市场的需求。所以,WordPress 的代码并不能作为论据。

3、作者在自己的文章《用类组织你的代码》中也提倡让代码“美”些,为了应对将来的变化。所以摆明了是在反驳自己提出的观点,除非他认为的“美”的意思是指完美。

4、所以,我和作者的观点一样,都是:编程还是得美一点。

三、题外话,学 PHP 还是 RoR:

1、如果选择 PHP

能从零开始学习服务端 Web 开发,当你达到一定的精通程度(特别是熟悉一两个主流 PHP 框架时),转学 RoR 会很容易。写一些原生的 PHP 脚本和 SQL 查询语句,会帮助你理解 Web 应用的实现原理。

2、如果选择 RoR

能马上上手进行 Web 开发,能学习更先进的 Web 开发方法,高效,享用 RoR 带来的丰富的工具(我没实践,人云亦云下)。等等。但是底层细节都被隐藏,对原理会比较模糊。

3、Web 产业如何选择

现在,Python、Ruby 比起 PHP 更能满足 Web 产业对技术的生产力的需求。虽然 PHP 也一直在进步,单元测试、包依赖管理等工具也早都有了,但还是没有大面积应用起来。

从 GAE 支持 PHP 这事看来,Google 还是承认了 PHP 的地位,也许是因为 PHP 的门槛确实低得小盆友都能进来了。

4、我的理解是:学深了,都差不多。

编程要不要美》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">