您的位置:首页 > 编程语言 > Java开发

软件随想录(local.joelonsoftware.com/wiki)-2006年10月12日 「超越Java:探讨程序语言的未来」书评

2013-03-04 14:34 330 查看
2006年10月12日
「超越Java:探讨程序语言的未来」书评 -
Book Review: Beyond Java

 

「超越Java:探讨程序语言的未来」书评

From The Joel on Software Translation Project

Jump to:
navigation,
search
「超越Java:探讨程序语言的未来」书评

未满30岁的程序员不能理解,为何像我这样上了年纪的老程序员,不会在让人兴奋的新程序语言出现之际就马上采用;他们也无法理解我们为何冷眼旁观那些用来卖书和签顾问约的主流思想(请原谅我对你的新书「Extreme UML Refactoring Patterns」兴趣缺缺)。(译注:这本虚构的书使用了前一阵子相当热门的四个技术名词。作者之前多次提到他怀疑很多热门思想其实只是拿来卖书和替人做顾问赚钱)

这也许是因为我们读过没有银子弹这篇Frederick P. Brooks(人月神话的作者)在1986年所写极重要的文章,而这篇文章的论点也不断被证实是正确无误的。

写程序要克服两种困难:附属性(accidental)的困难是因为用的编程工具不对才会难,而本质上困难的东西是没有任何工具或语言能解决的。「附属性困难」的一个例子是手动内存管理,像是malloc和free,或人们因Java没提供顶级函数(top level function)而建立的单一(singleton)类别。本质上困难的东西就像是处理程序不同部分的细微互动,比如找出你刚加入的新功能影响到的所有地方。

程序语言的改良能够消弭「附属性困难」,但是之后还是得面对软件开发的的复杂本质,所以「没有银子弹」理论是从根本上警告我们,从新技术获得的效益会逐渐递减。我在这儿不评论Brook的论述,所以你若从未读过没有银子弹这篇文章,我强力推荐你看一下。

从1950年代开始,在消除编程的「附属性困难」上有五个大突破。粗略来说分别为:

组合语言
代数语言(包含Fortran)
结构化语言(Algol-60跟C)
声明式语言(包含SQL)
内存管理语言(包含Lisp, VB, 和Java)
所以接下来的问题是:谁是第6个?

Beyond
Java Image

Bruce Tate的新书Beyond
Java试著找出结论。这本书有效地解释为何有大批资深Java工程师对这语言感到厌烦,转而使用Python跟Ruby。

Steve Yegge虽然不是本书作者,但在书里却占有一席之地,他在56, 57页列出了可能清单。这可是书上最重要的两页,因为这里列出了Python和Ruby(还有评价较低的JavaScript)确切可以解决的一些事情。

虽然Stevey列出了许多Java的「附属性困难」,不过你阅读这本书时会注意到某个论点,指出明确类型声明(explicit typing, 要求程序员必须声明类型)似乎是大多数问题的祸首。举例来说,无法在Java程序代码中表示资料,似乎只是必须明确声明类型的副作用。当然啦,Java还有其他问题,但这是切中核心的大问题。

对一个史学家来说,把类型声明视为良好程序语言能消除的「附属性困难」是个开端。Beyond Java则是一本对相关讨论做了不错的摘要,值得大家一读。

Retrieved from "http://local.joelonsoftware.com/wiki/%E3%80%8C%E8%B6%85%E8%B6%8AJava%EF%BC%9A%E6%8E%A2%E8%A8%8E%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E7%9A%84%E6%9C%AA%E4%BE%86%E3%80%8D%E6%9B%B8%E8%A9%95"

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐