转自:码农翻身

我是一本书,一本独特的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编程思想》看,刚开始我还瞧不上,主要是第一章看起来太累,哈哈。

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

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

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

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


新书首发,我们为图灵老粉申请了10元购书补贴金,扫码直购~

作为一本书,“卷”赢竞争对手的最佳姿势是?相关推荐

  1. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)...

    18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace L ...

  2. .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)...

    18 | 日志框架:聊聊记日志的最佳姿势 源码链接: https://github.com/witskeeper/geektime/tree/master/samples/LoggingSimpleD ...

  3. 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势

    2020年的今天,我们的专业是deep learning,但是我们要keep learning,每天早上一睁眼,arxiv每天更新上百篇的论文,著名微博博主@爱可可-爱生活保持也在推送最新的deep ...

  4. 从全栈式解决方案到情感化,揭秘问众智能切入车载语音市场的最佳姿势...

    *问众智能CEO张亚 如果说语音交互是车载场景的最佳方式,未来谁掌握车内语音交互"话语权",谁就将主宰车辆智能网联的新时代. 经过多年的渐进式发展,语音交互的价值正逐步走出单纯&q ...

  5. 聊聊 Web 项目二维码生成的最佳姿势

    在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...

  6. 网站前端_EasyUI.基础入门.0009.使用EasyUI Layout组件的最佳姿势?

    1. 基础布局 <div id="l" class="easyui-layout" data-options="width:500,height ...

  7. 游戏公司“卷赢”上半年的秘籍

    2022年已经过半,众多优质新作游戏已悉数登场,而各大上市游戏公司的2022年半年度财报也在日前纷纷披露.截至9月4日,北京商报记者统计20家游戏公司业绩数据发现,超七成公司报告期内盈利,更有完美世界 ...

  8. 在windows系统上使用linux系统的最佳姿势

    前言 经常使用电脑的同学一定不陌生Linux操作系统,Linux作为一种开源操作系统其好处自不必说:免费.稳定.兼容性等等,对于从事IT研发工作的同学,Linux操作系统就更加的不可或缺了. 但现实情 ...

  9. “安防+人工智能”,安企选择哪种抱大腿姿势才有出息?

    人工智能是一场技术革命,对于各行各业来说都是一次机遇.安防企业置身其中,紧抱大腿才不会被智能安防时代淘汰! 2016年是人工智能的元年,各类人工智能概念爆发,一个"漫长"的春节假期 ...

最新文章

  1. 数据挖掘-matplotlib、numpy、pandas(二)
  2. GDI+ 学习记录(11): 路径渐变画刷 - PathGradientBrush
  3. 图片加载完成再执行事件
  4. 如何附加被分离的质疑数据库?
  5. Formal Languages and Compilers-LL(1),FIRST and FOLLOW
  6. Windows保护模式学习笔记(八)—— 页目录表基址/页表基址
  7. codis配置_Codis的安装配置
  8. hp dl360安装rhel6.4时找不到硬盘
  9. 大数据爆炸改变企业的决策
  10. PyCharm 重构(refactor)快捷键
  11. VS2013——error C4996: 'std::_Uninitialized_copy0':
  12. Linux 运维必备的 13 款实用工具,拿好了~
  13. 几句话就能让你明白:热备份路由选择协议(HSRP)
  14. 并发编程面试题(2020最新版)
  15. dbscan聚类python_DBSCAN聚类算法 Python 代码
  16. HD、BD、MKV和RMVB、DVD、AVI
  17. android官方转圈圈,android 弹出之后,一直转圈圈??
  18. 内核I2C子系统详解
  19. 《一战封神》(每日登录领礼包)做日环任务领剑魂
  20. WIN7安装VISIO 错误1406 安装程序无法将值 写入注册表项解决办法

热门文章

  1. 让我们和机器一起聊天
  2. 【LINUX】一、文件安全和权限
  3. vue3.0初体验(例子解读reactive响应式)
  4. C#程序运行报错Error while trying to retrieve text for error ORA-12154
  5. 【微信】微信小程序前后端数据请求示例
  6. 【基础篇】Redis深入理解与实践指南(一)之Redis的前世今生
  7. DM36x IPNC远程升级
  8. 路由 router-view 实现点击跳转时不打开新网页,而是在当前显示
  9. 图灵停机问题(halting problem)
  10. Kerberos HA高可用配置