👆点击“博文视点Broadview”,获取更多书讯0
本文为《解构领域驱动设计》作者张逸为《编程卓越之道》(卷1)所作序言。
什么是卓越代码(Great Code)?
场景不同,角色不同,对卓越的定义自然有所不同。
既然没有统一的标准,似乎可以放过不提。
然而,对于名为《编程卓越之道》的系列图书,又如何可以轻易放过对卓越的认识?
我们来细品一下作者Randall Hyde采纳的定义:
卓越代码是按照一套一致的优秀软件特征编写出来的,首要考虑的是优秀软件特征。特别是,卓越代码要遵循一套规则,这套规则能够指导程序员在用源码实现算法时的决策。
单就定义而言,依旧语焉不详。
关于什么是优秀软件特征,或许大家可以从书中寻觅到答案。而我却透过书名,隐隐捕捉到Randall Hyde的一个观点——没有深谙计算机底层原理,不可能写出卓越的代码。——这也正是《编程卓越之道》(卷1)的核心思想:深入理解计算机。
听听作者自己的解释:
了解了计算机如何表示数据,就了解了高级语言的数据类型是被如何转换到机器层次的;了解了CPU如何执行机器指令,就了解了高级语言应用程序中各种操作的代价;了解了内存性能,就了解了如何组织高级语言中的变量和其他数据,让缓存和内存的访问最优。
此言非虚。
正如要学好Java,就有必要了解JVM的工作原理,而要彻底了解JVM,怎能不知道计算机的底层原理?
以指令集为例,这是汇编程序员天天使用的基本编程要素,而Java程序员就鲜少涉猎。殊不知,这些Java程序员编写的每行代码都会被编译为运行在JVM中的指令。对照来看,恰好本书介绍了短指令和长指令在空间、性能与复杂度的取舍,而JVM则采用了折中的变长指令,允许操作码后跟零字节或多字节的操作数(operand)。同一条知识,打通了从计算机底层到高级语言开发的通路。
作为一名汇编语言高手,Randall Hyde极为推崇汇编语言对程序员的助力。他在本书后记中建议:“有一种强迫自己在机器层次编写代码的方法就是使用汇编语言。”
许多新生代的程序员对此建议或许不以为然,毕竟,如今使用汇编语言的机会可谓少之又少,它的重要性已经淡化。
遥想当年,在我的大学时代,汇编语言还是计算机专业最重要的一门编程语言课,当然,也是公认最难啃的硬骨头。当时还能熟练编写汇编程序的我,早已不记得这门语言的大部分语法了。我不知道,学习和使用汇编语言是否真的有助于写出卓越代码?我也不知道,我之所以没能写出卓越代码是否与我汇编水平不高有关?但我深信,倘若具有高超的汇编开发能力,必然理解计算机底层运行的细节;倘若能很好地掌握汇编语言,学习任何一门高级语言,也就不在话下。
当软件系统规模如滚雪球一般变得越来越大时,我们已不可能像当初求伯君那样用汇编语言去写十几万行的WPS。
虽然使用的语言不同,编程态度却应该一以贯之。
然而,当我们写出动辄数百万行代码的应用系统时,是否真的思考过每条语句背后的代价?——问程序员,有多少人以写出卓越代码为己任?问代码,又有多少是深谙计算机底层原理的程序员写出来的?
我们这个行业,因为竞争加剧的原因,程序员变得更加地浮躁,没有办法让自己静下来,沉心打磨基础。
当开发技能成为一种快餐时,还有谁会力求编码的精益求精?
又有多少人舍得花费宝贵的时间来深入理解计算机?
然则,“九尺之台起于垒土”,没有扎实的基础,开发的能力究竟能提升多高,编程的生涯究竟能走多远,我深表怀疑。
真的非常钦佩Randall Hyde多年如一日孜孜于《编程卓越之道》系列的写作,使之成为计算机图书中不朽的经典。
而作者并不满足已经取得的成就,推陈出新,出版了本书的第2版。第2版加入了新鲜的元素,却又不损经典质量的一分一毫。
如果你刚刚踏上编程之旅,我强烈推荐你阅读本书。正所谓“磨刀不误砍柴工”,这些底层原理和底层细节,看似对你的开发没有直接帮助,但它真的可能会决定你未来的高度!
快快扫码抢购吧!
发布:刘恩惠
审核:陈歆懿
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连< PAST · 往期回顾 >本周最火AutoGPT!GitHub3.6万+标星,解决复杂任务全程无须人类插手
朝九晚五在这里什么也完成不了
点击阅读原文,查看本书详情!
本文分享自 博文视点Broadview 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!