mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-24 23:13:28 +08:00
修改部分翻译内容
This commit is contained in:
@@ -3,19 +3,25 @@
|
||||
|
||||
> “我的语言极限,即是我的世界的极限。” ——路德维希·维特根斯坦(*Wittgenstein*)
|
||||
|
||||
这句话对于编程语言来说也一样。你所使用的编程语言会将你的思维模式固化并逐渐远离其他语言。Java 作为一门傲娇的派生语言尤其如此。早期语言设计者为了不想在项目中使用 C++ 而创造了这种看起来很像 C++,却比 C++ 有了改进的新语言。其最核心的变化就是包含虚拟机和垃圾回收机制。这两个概念在本书之后的章节会有详细描述。 此外,Java 还在其他方面推动行业了发展。例如,现在绝大多数编程语言都包含文档注释语法和 HTML 文档生成的工具。Java 最主要的概念之一“对象”来自 SmallTalk 语言。Java 定义了“对象”(在下一章中描述)为编程的基本单元。于是,万物皆对象。
|
||||
这句话无论对于自然语言还是编程语言来说都是一样的。你所使用的编程语言会将你的思维模式固化并逐渐远离其他语言,而且往往发生在不知不觉中。Java 作为一门傲娇的语言尤其如此。
|
||||
|
||||
时间已经检验了这种信念,并发现它太过狂热。有些人甚至认为“对象”是完全错误的概念,应该被丢弃。就我个人而言,把一切都当成一个对象不仅是一个不必要的负担,而且还会招致许多设计朝着不好的方向发展。尽管如此,“对象”的概念依然有其闪光点。固执地要求所有东西都是一个对象(特别是一直到最底层级别)是一个设计错误。相反,完全逃避“对象”的概念似乎同样太过苛刻。
|
||||
Java是一门派生语言,早期语言设计者为了不想在项目中使用 C++ 而创造了这种看起来很像 C++,却比 C++ 有了改进的新语言(他们原始的项目到最后也没有实现)。Java最核心的变化就是加入了“虚拟机”和“垃圾回收机制”,这两个概念在本书之后的章节会有详细描述。 此外,Java 还在其他方面推动行业了发展,例如,现在绝大多数编程语言都包含文档注释语法和 HTML 文档生成的工具。
|
||||
|
||||
其他 Java 语言决策并没有像承诺的那样完成。在本书中,我会尝试解释这些。你不仅了解这些功能,还要了解为什么他们可能对你不太适用。这无关 Java 是一种好语言或者坏语言。一旦你了解了该语言的缺陷和局限性,你就能够:
|
||||
Java 最主要的概念之一“对象”来自 SmallTalk 语言。SmallTalk 语言坚定不移的认为“对象”(在下一章中描述)是编程的最基本单元,于是,万物皆对象。时间已经检验了这种信念,并发现它太过狂热,有些人甚至认为“对象”是完全错误的概念,应该被丢弃。就我个人而言,把一切都当成一个对象不仅是一项不必要的负担,而且还会招致许多设计朝着不好的方向发展。尽管如此,“对象”的概念依然有其闪光点。固执地要求所有东西都是一个对象(特别是一直到最底层级别)是一个设计错误,相反,完全逃避“对象”的概念似乎同样太过苛刻。
|
||||
|
||||
1. 遇到“已停用”的功能特性时不会疑惑。
|
||||
很多 Java 语言规划设计的功能并没有像承诺的那样完成。在本书中,我会尝试解释这些原因。力争让读者知道这些功能,并知道为什么这些功能并不适用。这无关 Java 是一种好语言或者坏语言,一旦你了解了该语言的缺陷和局限性,你就能够:
|
||||
|
||||
2. 熟悉语言边界,更好地设计和编码。
|
||||
1. 遇到“被砍掉”的功能特性时不会疑惑。
|
||||
|
||||
编程有关管理复杂性;问题的复杂性依赖于机器的复杂性。由于这种复杂性,我们的大多数编程项目都失败了。许多语言设计决策时都考虑到了复杂性,但在某些时候,其他问题也势必不会少的,程序员不可避免地“碰壁”。例如,C++ 必须向后兼容 C(允许 C 程序员轻松迁移),并且效率很高。这些目标诚然很好,并且也解释了为什么 C++ 在编程界取得了成功。为了保证兼容性的代价会造成语言额外的复杂性。当然,你可以责怪程序员和管理人员,但如果一种语言可以通过捕捉异常来提供有用的信息,为什么不呢?
|
||||
2. 熟悉语言边界,以便更好地设计和编码。
|
||||
|
||||
虽然 Visual BASIC(VB)绑定在 BASIC 上,但 BASIC 实际上并不是一种可扩展的语言。在 VB 上堆积的所有扩展造成大量无法维护的语法。Perl 向后兼容 awk,sed,grep 以及其它要替换的 Unix 工具,因此它经常被指责生成“只写代码”(也就是说,你看不懂自己的代码)。另一方面,C ++,VB,Perl 和其他语言(如 SmallTalk)的一些设计工作集中在复杂性问题上,因此在解决某些类型的问题方面非常成功。通信革命使我们所有人更容易地相互沟通:一对一,团体和行星。据说下一次革命会形成一种新全球性的思想,这种思想源于足量的人之间的相互联系。Java 可能会也可能不会成为这场革命的工具之一,但至少这种可能性让我觉得我现在正在做的传道授业是一件有意义的事情。
|
||||
编程的过程就是复杂性管理的过程:业务问题的复杂性,以及依赖的计算机的复杂性。由于这种复杂性,我们的大多数编程项目都失败了。
|
||||
|
||||
许多语言设计决策时都考虑到了复杂性,试图降低语言的复杂性,但在设计过程中遇到了一些更棘手的问题,最终导致语言设计不可避免地“碰壁”,复杂性增加。例如,C++ 必须向后兼容 C(允许 C 程序员轻松迁移),并且效率很高。这些目标非常实用,并且也是 C++ 在编程界取得了成功的原因之一,但同时也引入了额外的复杂性,导致某些用C++编写的项目开发失败。当然,你可以责怪程序员和管理人员手艺不精,但如果有一种编程语言可以帮助你在开发过程中发现错误,那岂不是更好?
|
||||
|
||||
虽然 Visual BASIC(VB)绑定在 BASIC 上,但 BASIC 实际上并不是一种可扩展的语言,在 VB 上堆积的所有扩展造成大量无法维护的语法。Perl 向后兼容 awk,sed,grep 以及其它要替换的 Unix 工具,因此它经常被指责生产了一堆“只写代码”(写代码的人自己都看不懂的代码)。另一方面,C ++,VB,Perl 和其他语言(如 SmallTalk)在设计时关注点放在了一些复杂问题的处理上,因此在解决某些特定类型问题方面非常成功。
|
||||
|
||||
通信革命使我们所有人更容易地相互沟通:无论是一对一沟通,还是团队里的互相沟通,甚至是整个地球不同地区。据说下一次革命是一种新全球思维的形成,这种全球思维源于足量的人以及足量相互连接。Java 可能会也可能不会成为这场革命的工具之一,但至少这种可能性让我觉得我现在正在做的传道授业是一件有意义的事情。
|
||||
|
||||
|
||||
|
||||
@@ -24,11 +30,16 @@
|
||||
|
||||
阅读本书需要读者对编程有基本的了解:
|
||||
|
||||
程序是由一系列代码块,子句或函数组成的控制语句的集合。比如 “if”,“while”判断语句等等。
|
||||
- 程序是一系列“陈述(语句、代码)”构成
|
||||
|
||||
你可能已经在学校、网络或其他书本上了熟悉了这样。只要你对自己的编程基础有自信,你就可以完成本书的学习。
|
||||
- 子程序、方法、宏的概念
|
||||
|
||||
你可以通过在 On Java 8的网站上免费下载 Think in C 来补充学习 Java 所需要的前置知识。 本书介绍了 Java 语言的基本控制机制以及面对对象编程的概念。在本书中我引述了一些 C/C ++ 语言中的一些特性来帮助读者更好的理解 Java。 毕竟 Java 是在它们的基础之上发明的。理解他们之间的区别,有助于读者更好的学习 Java。
|
||||
- 控制语句(例如 “if”),循环结构(例如“while”)
|
||||
|
||||
|
||||
你可能已经在学校、书籍或网络上了学过这些。只要你对上述的编程基本概念觉得熟悉,你就可以完成本书的学习。
|
||||
|
||||
你可以通过在 On Java 8的网站上免费下载 Think in C 来补充学习 Java 所需要的前置知识。 本书介绍了 Java 语言的基本控制机制以及面对对象编程(OOP)的概念。在本书中我引述了一些 C/C ++ 语言中的一些特性来帮助读者更好的理解 Java,毕竟 Java 是在它们的基础之上发明的,理解他们之间的区别,有助于读者更好的学习 Java。 我试图去简化这些引述,以便让没有C/C++基础的人更好的理解。
|
||||
|
||||
|
||||
## JDK文档
|
||||
|
||||
Reference in New Issue
Block a user