作为一本书,我是如何把别的Java系列卷死的!

我是一本书,一本独特的Java编程书。

我很厚,光是基础版加起来就有800页,这不能怪我,因为Java的基础知识非常庞大,要想掰开了揉碎了讲透不是件容易的事情。

创造我的主人非常厉害,他不但是一家公司的总裁,还发表过100多篇技术文章,他还是某个著名编程语言委员会的成员,有表决权的那种!

所以,他在书中夹杂了很多自己的“私货”,阐述自己对编程的想法和洞察。

没想到的是,这些闪闪发光的真知灼见给我带来了一点点的小麻烦。 

这一天天气不错,我走出房间,摘掉口罩,坐在路边的长凳上晒太阳。

我掀开书本,让温暖的阳光抚摸一下每一章的文字。

这时候,《22天精通Java编程》吹着口哨走了过来,他身后还跟着好几个程序员,应该是他的忠实拥趸。

他瞥我了一眼,看到了我的第一章,顿时哈哈大笑起来。

“有没有搞错,我们第一章讲的都是下载JDK,安装JDK,设置JAVA_HOME和Path……” 他掀开自己的衣服,露出了第一章,“而你,居然讲什么是对象?抽象的历程!甚至扯到Lisp、Prolog和Smalltalk去了!”

他身后的几个小迷弟也跟着笑了起来,路过的几个程序员听到他的声音,也停下脚步,准备围观。 

我有点不好意思,赶紧把第一章盖住:“Java是面向对象的语言,不讲面向对象讲什么?”

“应该讲封装、继承、多态啊!你看我,会用一些简单例子来展示extends、implements,大家很快就学会了!”

我稳住阵脚,反击道:“那些基本的语法我肯定也要讲啊,我还会讲组合和继承的区别,并且告诉大家什么时候用组合、什么时候用继承,各自的优缺点。防止大家勿入歧途,疯狂使用继承,这不是更有价值吗?”

“还有,在讲接口的时候,不仅讨论了接口的功能和大量新特性,如private接口,密封接口等,还和工厂模式关联,提出了一个非常有价值的问题:到底什么时候使用接口?”

“这……你讲得似乎有点太多了吧?” 《22天精通Java编程》有点儿底气不足。

路边有个胖胖的程序员,一直在认真地看我身上的这段话:

许多人受到了这种诱惑,只要有可能就创建接口和工厂。这里的逻辑似乎是,你可能会用到不同的实现,因此应该始终添加这层抽象。这是一种过早的设计优化。

任何抽象都应该由真正的需求来驱动。接口应该是在必要时用来重构的东西,而不是在任何地方都多加一个间接层级,进而带来额外的复杂性。这种额外的复杂性影响很大,如果你让某人在克服这种复杂性上花费时间,而他最终却发现你添加接口只不过是为了‘以防万一’……

胖程序员叫道:“我去,这讲得很有道理啊,我就是喜欢弄接口,后来发现根本没必要。”

《22天精通Java编程》看到我居然来了同盟军,摇摇头:“你说的这些恐怕小白们理解不了!”

这时候,《轻松学Java》牵着一条狗溜达了过来,拍了拍《22天精通Java编程》的肩膀:“兄弟,发生了什么事情?”

《22天精通Java编程》说道:“这儿出现了一本晒太阳的‘怪’书,你看他总是讲很多我们都不讲的东西!我感觉他是来砸场子来的。”

《轻松学Java》盯着我看了半天:“乖乖,泛型这一块儿我们都只讲基本的语法,你还深入讲Java所用的擦除法带来的问题,以及相关解决方案,带出了‘自限定’,‘参数协变性’……”

《22天精通Java编程》接着说:“不仅如此,他还讲什么Mixin!用C++、Python、Go 等语言展示了Mixin的实现,并且和Java的装饰器模式、动态代理实现的“Mixin”做了对比!程序员们把Java学会都很不容易,他还给大家增加负担!”

“看来编程语言的双减政策很有必要!” 《轻松学Java》表示同意。 

旁边几个刚刚学习Java的程序员居然点头表示附和,这让我有点心酸。

正在这时,一个头发稀疏、戴眼镜的老程序员又对我表示了支持:“不对不对,初级程序员也许不需要,但是想要进阶,得有更广阔的视野,得理解编程的思想,学会编程,而不仅仅是学会Java。”

“你们看,这本书跳出了‘简单’的Lambda表达式,延伸到了闭包、函数组合、科里化、部分求值……这才是全面的函数式编程嘛!你们俩能讲解到这种程度吗?”

面对这个问题,《22天精通Java编程》和《轻松学Java》沉默了。

“其实,理解这些以后,再去看别的编程语言,就会发现思想都是想通的,只是表现形式不同——当然,Java的形式要啰嗦一些。”这位头发稀疏的程序员继续给我摇旗呐喊,我心里都有点儿感激他了。

看来还是老家伙识货啊!

《22天精通Java编程》还不太服气,掀开我“代码校验”那一章,展示给大家:“大家伙儿瞧瞧,一个Java书,居然不务正业,讲什么断言、基于契约的编程(前置条件、后置条件、不变项),单元测试、TDD、基准测试、代码审查、重构、持续集成……”

围观的人群窃窃私语:“基于契约的编程?我好像都没听说过……”

老程序说:“这是人家作者用心良苦,希望每个人都成为真正的程序员,而不仅仅是一个coder,把代码写出来是一回事,写对、写好,容易读、容易维护是更高一级的要求,这也是程序员应该具备的能力。”

程序员们纷纷点头。

《轻松学Java》还不服气,翻到了我的最后一章:“看看,这里居然讲设计模式,你一个Java书,这不是抢别人家的生意吗?完全是恶意竞争!”

有了大家的支持,我的底气也足了:“我和你们不一样,我不仅讲Java,我还讲编程思想,为什么不能讲设计模式?在最后的‘模式重构’,有一个漂亮的例子,以一种逐渐演进的方式来应用设计模式,先选取一种设计用于最初的方案,然后验证,随用尝试更多的设计模式来解决问题,在不断寻找解决方案的过程中,最终体现出设计模式的精髓思想:‘发现变化,并且隔离变化’,程序员看完,绝对会大呼过瘾!”。

围观的程序员似乎被说服了,有几个甚至鼓起掌来:“说得好!”

还有人小声说道:“我看他怎么有点眼熟?这难道是传说中的‘Java圣经’?”

我感觉不能再隐藏了,我站起身来,抖了抖身体,露出了漂亮的封面。

作为一本书,我是如何把别的Java系列卷死的!_第1张图片

后记:

我现在还记得上大学时,宿舍的兄弟捧着一本大厚书《Java编程思想》看,刚开始我还瞧不上,主要是第一章看起来太累,哈哈。

当时确实没有意识到这本书的巨大价值和它在Java界的地位,过了几年以后,再翻起它才明白错过了一座宝藏:这本书不但讲语法和实践,还讲背后的编程思想。

不过,遗憾的是这本书最后的一个版本是2007年的第四版,距今已经有15年了。

漫长的等待以后,Bruce Eckel才推出这本最新的Java力作《ON JAVA 中文版》,除了保留原作的写作风格之外,还增加了函数式编程、设计模式、代码校验等新内容,也删除了我讨厌的Java GUI编程,继续保持了超高水准。英文版豆瓣评分9.3,中文版出来后,评分在9分以上肯定是毫无悬念了。

学会编程,而不仅仅学会Java,和大家共勉。

你可能感兴趣的:(设计模式,编程语言,java,python,大数据)