推荐序2
我和作者平泽先生是通过本书第 1 版相识的。在本书第 1 版出版时,我正在写作《你为什么不会使用 Java 进行面向对象开发》1。两本书的书名和主题都非常相似,再加上我们有共同的朋友,这些偶然因素的叠加造就了我们之间的缘分。从那之后,我和平泽先生就成了跨越立场和年龄的好友。
1原书名为《なぜ、あなたは Java でオブジェクト指向開発ができないのか》,目前(2022 年 3 月)暂无中文版。——译者注
之后我们成了同事,一起承担了各种工作,其中印象最深的是我们一起策划并组织了新员工和年轻员工的技术培训。我们认真地讨论了“怎样才能把知识顺利地传达给别人”的问题,并精心打磨了培训课程、教材及编程方面的课题。在这一过程中,我见识了平泽先生“在将知识整理后传达给别人之前,自己先充分理解”的严谨态度。
在本书第 1 版写作期间,软件开发正经历着从结构化编程到面向对象编程的转变。另外,由于业务分析和设计等上游工程中也引入了面向对象的思想,所以大家不可避免地都需要了解面向对象。然而,面对大量术语和不透彻的解释,人们完全无法理解。在这种情况下,本书准确、全面地整理了面向对象的基础知识,为人们学习面向对象指明了道路。
在 15 年后的今天,面向对象已经成了一个非常普遍的概念,编程新手也都很自然地适应了面向对象的思想,所以与第 1 版出版时相比,本书似乎没有当初那么重要了。
然而,本书与其他相关图书的不同之处在于,本书不仅介绍了面向对象这一技术本身,还介绍了“理解面向对象的过程”,而这与“理解新技术的过程”是相通的。
面向对象已经成为常识,但时代还在向前发展。面对各种各样的需求,我们仅靠一种编程范式是远远不够的,组合各种思想的多重编程范式时代已经到来。随着语言规范的增加,Java 中也新增了基于注解的声明式编程和面向切面编程,以及基于 Lambda 表达式的函数式编程。基于 Java 开发的 Kotlin 已兼具面向对象编程和函数式编程的结构。
在这个时代,软件工程师要想提高自身价值,除了面向对象编程之外,同时还要理解并熟练使用以函数式编程为代表的其他范式,这时本书所阐明的“理解新技术的过程”就派上用场了。所谓新的思想或技术,不过是现有知识的延伸,就算它实现了神奇的“魔法”,通过拆解其结构,我们也会发现其实它只是各种很简单的功能的叠加而已。本书第 2 版中增加了对函数式语言的讲解,非常适合已经初步掌握了面向对象的读者进行进一步的学习。正如本书介绍的那样,了解了技术背景和整体结构(就像面向对象一样),自然就能够理解该技术了。
《Web 技术从入门到专家》2 作者
小森裕介
2原书名为《プロになるための Web 技術入門》,目前(2022 年 3 月)暂无中文版。——译者注