Skip to content

前言

“为何我上课完全听不懂?” “你是怎么学习编程的?” “为什么老师讲的内容我都听懂了,但自己写代码时却无从下手?” “看别人写的代码能理解,但自己就是想不到要这样写?”

笔者在帮助他人学习编程时,常常会被问到这些问题。类似的问题还有很多,但是,它们背后的核心原因都是一样的:知道 ≠ 会用。许多人往往会有一个相同的误区,即认为只要我知道了某个知识点,就意味着我已经掌握这个知识点了。然而,事实并非如此。学习编程就像是学习写作,知道了一个新的知识点就像是认识了一个新字,可比谁的文章写得好绝不是比谁认识的字多——只有小学生会这样比赛,但想要写作又不能认识的字太少,否则想说话时无字可用,受限太大。中国作家余华曾表示:“我认识的汉字虽然不多,但是我认为写小说已经够了。”

为什么后来的评论家们都赞扬我的语言简洁, 那是因为我认识的字少。

——余华

编程亦是如此。编程能力的本质不在于记忆语法的多寡,真正的能力还在于如何遣“词”造“句”,将这些"字词"组合成解决实际问题的"文章"。许多初学者常容易陷入两种极端:要么执着于记忆每个语法细节却从不实践,要么急于求成却连基础概念都没吃透。因此,笔者希望借用写作这一例子,让广大读者都明白这样一个学习的道理,懂得平衡“辞藻的丰富”与“写作的技巧”,懂得平衡学习的深度和广度。

正因如此,本教程采用语言习得的思维框架:将Java编程视为与计算机对话的特殊语言。当交流对象从人类变为计算机时,"表达清晰"的标准就转化为"逻辑严谨","文采斐然"则对应"架构优雅"。这也是《Java编程:从识字到创作》系列的核心方法论——我们不仅要认识编程语言的"汉字",更要学会用它们写出解决问题的"文章"。

除了感到困惑,许多学习者在编程时还会经历一种“无意义感”,他们机械地敲着代码,却不知道自己在做什么,甚至开始怀疑自己是否适合编程。这是因为在大部分的教学中,我们常常过度强调“怎么做”,而常常忘记解释“为什么”。但其实,在学习一个新知识点时,我们应该知道我们当前的目标是什么、运用当前的知识我们可以做到什么、新的知识可以为我们做什么,只有这样,我们才能明白这个知识点存在的意义,才可以更好的运用各个知识。正如德国哲学家尼采所说的,一个人若知道自己的“Why”(为何),那就可以为此做到任何所需的“How”(如何)。

倘若一个人拥有了他生命的 为何? ,就几乎能容忍所有的如何?

——弗里德里希·尼采

本教材将尽量多地践行“先问为何,再学如何”的原则。例如,在引入“方法”的概念时,本教程会先带你体现不使用“方法”如何实现我们的目标,让你切身感受到为什么我们需要“方法”;在介绍“数组”时,本教程会先让你体验没有“数组”的编程体验,让你明白为什么我们需要“数组”。

凡我不能创造的,我就还不理解。

——理查德·费曼

编程能力的成长从来不是线性提升,而是在反复调试中积累经验,在项目实践中巩固基础的过程。希望本教程能够帮助你更好地理解Java编程,让你在编程的道路上越走越远。

王凯鑫 2025年5月21日 于温州肯恩大学