前言

说来惭愧,我本来想出版一本书的,由于诸多原因,书没法出版了。但是有一部分人——主要是电台的听众——帮我修定了书中很多错误,我本来说好会把他们的名字印在纸书上,但是,又食言了。把这些贵人的名字写在这里了,表示抱歉与感谢。下面是“原本的前言”。

“原本的”前言 :)

本书旨在为对 Java 编程感兴趣的读者提供入门指南,无论您是希望开发安卓手机应用、网站、还是中间件,都能从中获取重要的基础知识。正如副标题“有趣有料的 Java 编程”所言,本书不仅涵盖了编程语言和编程范式的基础知识,还穿插了大量引人入胜的编程故事,并深入挖掘其背后的历史真相。

例如,在介绍面向对象编程时,本书用了一定篇幅讲述了世界上首个面向对象编程语言 Simula,并梳理了面向对象编程的发展脉络。在数据类型方面,本书列举了一些因数据类型精度不足而导致的案例,如爱国者防御系统故障,导致一枚飞毛腿导弹命中士兵营房。而在介绍 Java 引入的函数式编程时,则从世界上第一门函数式语言 Lisp 讲起,带领读者认识 Java 函数式编程的优势与不足。

通过这种将历史与实践相结合的方式,本书不仅阐释了 Java 编程的核心概念,更揭示了编程语言发展背后的故事,希望能为读者带来更深层次的理解和启发。

我始终认为,学习编程语言的最佳途径之一,便是追溯其发展历史,了解其起源和演变。通过在历史中考证语言的进化轨迹,并在实践中学习编程技巧,我们能够更深入地理解语言发展的脉络,更真切地领会语言设计者的意图。

关于如何学习编程,我联想到清代文学家彭端淑所写的《为学》一文,这也是很多地方初中必学的古文。文中讲述了两个四川和尚前往南海的故事。富裕的和尚声称他准备了好几年,要买一艘船沿长江而下。而贫穷的和尚只带了一个水瓶和一个饭碗。一年后,穷和尚从南海归来,富和尚却仍在准备之中。这个故事告诉我们,行动胜于空谈。学习编程亦是如此,与其踟蹰不前,不如立即行动,在实践中不断摸索和学习。

关于本书

如果几年前,有人问我:“出版一本书”是不是你人生的梦想之一?我会不假思索地回答他:“这是我来生的梦想。”

如今,我竟然写了一本书,我认为这得益于以下几个因素:首先,我活跃于网络(现在又有谁不是活跃在网络上呢?),自2016年起便开始录制名为“软件那些事儿”的podcast,至今已录制了400多期节目。此外,我还经常录制编程视频并上传至Bilibili等视频网站。

其次,我拥有多年的软件开发经验,职业生涯始于Sun公司——正是这家公司创造了Java。尽管我已经离开老东家多年,但心中仍存留着一份特殊的情感。这份情感也延伸至Java,我对这门编程语言抱有许多好感。也正是因为这份情感,让我录第一期podcast的时候,就选择介绍Java语言的历史。现在写一本编程书,我首先想到的也是Java语言。

最后,也是我认为最重要的一点,我意识到,曾经在编程中所经历的许多纠结与折磨,本是可以避免的。从年轻时在NetBeans项目组摸爬滚打,边工作边学习,却苦于无法完全掌握NetBeans的运作原理的职场新手,到如今成长为能够较为镇定地面对大型项目的架构师,这个过程中,我遇到了无数挑战和困难,有些坑如果当时有人指点或许能够更早地爬出来。如今已是 2021 年,我发现仍有许多新人像当年的我一样,在同样的坑中踽踽独行。我希望通过本书,能够帮助他们尽快摆脱困境。

此外,由于种种历史原因,Java 的许多先进语言特性和开发模式在国内尚未得到广泛应用。我期望通过本书,倡导采用先进的语言特性,提升程序员的工作效率,使他们能够早日完成工作,提前下班。

要感谢的人

本书还邀请了众多我的电台听众担任早期读者,他们提供了宝贵的意见和建议。在此,我谨按反馈顺序向以下听众兼早期读者致以诚挚的谢意:

张敬畏、吉人、任占东、李振中、毕朋飞、张洁、胡海彦、郝金、王义祥、王恒、黄建晴、弥国伟、黄寒毅、戴峰、代亮、杨兆军、刘杰、唐青平、吴剑钢、王晨、常黎明、王卜锐、严济愈、范宗耀、刘强、陈少川、王之康、付志远、付小辉、邓俊德、赵庶剑、吴昱锡、金希朴、刘天尧、陈尧龙、刘凡恺、徐亚南、彭海璐、王琦、张训、李庆权、贾爱国、车恒彬、陈喆、刘冕、夏明飞、王超、乔鑫、杨碧军、李维洲、苏三、袁宏、徐玉峰、刘卫、周信、孙国庆、黄鑫源、王晋渤、黄国瑞、欧阳宁。

还有一些朋友不愿透露真实姓名,仅提供了网络 ID:傻牛、大成、浮游、素颜、touchmii、Coding L、推头的拓海、一贯可乐、腾、YuVenhol、wym、菜得抠脚、99、老法师、红薯、雯雯、城哥、丫头、葫芦娃、王女士,船哥、机器学习、秀儿、队长、黄盛、伴娘、Hmtsai、AUGUST、Andy、龙小龙、天涯明月刀、橙子和西瓜、TheWQ、Abel、肥仔强、alibos、NULL、hwf1324、阿强、Tr。

你们的真知灼见令本书增色不少,在此深表感谢!

再次对这些早期读者表示感谢,对没法把名字印在纸上再次表示抱歉。