mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-20 21:13:27 +08:00
《前言》校对
This commit is contained in:
@@ -30,17 +30,17 @@
|
||||
|
||||
## 语言设计错误
|
||||
|
||||
每种语言都有设计错误。当新程序员必须涉足语言特性时并猜测应用场景和使用方式时,他们体验到极大的不确定性和挫折感。承认错误令人尴尬,但这种糟糕的初学者经历比认识到你错了什么还要糟糕。哎,每一种设语言/库的设计错误都会永久地嵌入在 Java 的发行版中。
|
||||
每种语言都有设计错误。当新程序员必须涉足语言特性,并猜测应用场景和使用方式时,他们体验到极大的不确定性和挫折感。承认错误令人尴尬,但这种糟糕的初学者经历比认识到你错了什么还要糟糕。哎,每一种设语言/库的设计错误都会永久地嵌入在 Java 的发行版中。
|
||||
|
||||
诺贝尔经济学奖得主约瑟夫·斯蒂格利茨(Joseph Stiglitz)有一套适用于这里的人生哲学,叫做“承诺升级理论”:继续犯错误的成本由别人承担,而承认错误的成本由自己承担。
|
||||
|
||||
如果你有读过我过去的作品,那么你应该知道,我一般倾向于指出这些语言设计错误 Java 已经发展出了一批狂热的追随者。他们对待这门语言更像是阵营而不是编程工具。因为我已经写过有关 Java 的书,所以他们理所当然的认为我也是这个“阵营”的一份子。于是,当我指出Java的错误时,就会造成两种影响:
|
||||
如果你有读过我过去的作品,那么你应该知道,我一般倾向于指出这些语言设计错误。Java 已经发展出了一批狂热的追随者,他们对待这门语言更像是阵营而不是编程工具。因为我已经写过有关 Java 的书,所以他们理所当然的认为我也是这个“阵营”的一份子。于是,当我指出Java的错误时,就会造成两种影响:
|
||||
|
||||
1. 最初,会有许多错误“阵营”的人成为了牺牲品。最终,时隔多年,大家都意识到这是个设计上的错误,然后错误就这样成为了 Java 历史的一部分。
|
||||
|
||||
2. 更重要的是,新程序员并没有经历过“他们”为什么要采用这种实现方式的斗争过程。特别是那些隐隐约约感觉不对却依然说服自己“我必须要这么做”或者“我只是没学明白”从而继续错下去的人。更糟糕的是,教授这些编程知识的老师们没能深入的去研究这里是否有设计上的错误,而是继续错误的解读。通过了解语言设计上的错误,能让开发者们更好的理解和意识到错误的本质,从而更快地进步。
|
||||
|
||||
理解编程语言的设计错误至至关重要,甚至影响程序员的开发效率。一些公司在开发过程中会避免使用语言的某些功能特性。表面上看这些“功能特性”很高大上,但是弄不好却可能出现意料之外的错误,影响整个开发进程。
|
||||
理解编程语言的设计错误至关重要,甚至影响程序员的开发效率。一些公司在开发过程中会避免使用语言的某些功能特性。表面上看这些“功能特性”很高大上,但是弄不好却可能出现意料之外的错误,影响整个开发进程。
|
||||
|
||||
已知的语言设计错误也会给新的一门编程语言的发明提供参考意义。探索一门语言能做什么是很有趣的一件事,而语言设计错误能提醒你哪些“坑”是不能再趟的。多年以来,我一直感觉 Java 的设计者们有点脱离群众的。Java 有些设计错误不免错的太明显,我都怀疑语言设计师们到底是为了用户服务还是出于其他的动机设计了这些功能。Java 语言有许多臭名昭著的设计错误,很可能这也是诱惑所在。我感觉这是对程序员的不尊重。为此我很长时间不想于 Java 有任何瓜葛,很大程度上,这也是我为什么不想碰 Java的原因吧。
|
||||
|
||||
@@ -50,13 +50,13 @@
|
||||
|
||||
我猜测可能是一些人离开设计组让他们意识到了这点。我没想到会有这些变化!因为这些原因吧,写这本书的体验要比以往的经历要好得多。Java 8包含了一系列基础和重要的改进。哎,不过 Java有严格的“向后兼容”承诺。所以可能我们不大可能看到戏剧性的变化,当然我希望我是错的。尽管如此,我很赞赏那些敢于自我颠覆,并为 Java设定更好路线的人。第一次,对于自己所写的部分 Java 8代码我终于可以说“我喜欢这个!”
|
||||
|
||||
最后,本书所著时似乎也很不错,因为 Java 8引入的新功能已经强烈的影响了今后Java的编码方式。截止我在写这本书时,Java 9似乎更专注于对语言底层的基础结构功能的重要更新,但是这些并不会影响本书所关注的编码类型。话说回来,得益于电子书出版形式的便捷,如果我发现本书有需要更新或添加的内容,我可以很快将新版本推送给现有读者。
|
||||
最后,本书所著时间似乎也很不错,因为 Java 8引入的新功能已经强烈的影响了今后Java的编码方式。截止我在写这本书时,Java 9似乎更专注于对语言底层的基础结构功能的重要更新,但是这些并不会影响本书所关注的编码类型。话说回来,得益于电子书出版形式的便捷,如果我发现本书有需要更新或添加的内容,我可以很快将新版本推送给现有读者。
|
||||
|
||||
|
||||
|
||||
## 测试用例
|
||||
|
||||
本书中的代码示例基于 Java 8和 Gradle 编译构建,并且这些代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架在每次构建系统时运行,否则你将无法保证自己代码的可靠性。为了在本书中实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这个输结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。
|
||||
本书中的代码示例基于 Java 8和 Gradle 编译构建,并且这些代码示例都保存在[这个自由访问的GitHub的仓库](https://github.com/BruceEckel/OnJava8-Examples) 中。我们需要内置的测试框架在每次构建系统时运行,否则你将无法保证自己代码的可靠性。为了在本书中实现这一点,我创建了一个测试系统来显示和验证大多数示例的输出结果。这个输出结果我会附加在示例结尾的代码块中。有时仅显示必要的那几行或者首尾行。利用这种方式来改善读者的阅读和学习体验,同时也提供了一种验证示例正确性的方法。
|
||||
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ Java 的普及性对于其受欢迎程度有重要意义。学习 Java 会让你
|
||||
|
||||
感谢 Jeremy Cerise 和 Bill Frasure 来到开发商务虚会预订,并随后提供了宝贵的帮助。
|
||||
|
||||
感谢所有花时间和精力来Crested Butte, Colorado(科罗拉多州克雷斯特德比特)镇参加我的研讨会,开发商务虚会和其他活动的人!你们的贡献可能没被轻易看到,但它非常重要!
|
||||
感谢所有花时间和精力来Crested Butte, Colorado(科罗拉多州克雷斯特德比特)镇参加我的研讨会,开发商务聚会和其他活动的人!你们的贡献可能没被轻易看到,但它非常重要!
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user