前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《编程卓越之道》推荐序

《编程卓越之道》推荐序

作者头像
张逸
发布2023-03-23 18:17:39
5540
发布2023-03-23 18:17:39
举报
文章被收录于专栏:斑斓斑斓
承蒙ThoughtWorks覃宇兄的信任,邀我为他的译作做推荐序,真是诚惶诚恐。本书内容可谓经典,内容丰富而专业,非常考校译者水平,感谢覃宇为读者贡献了这本质量上乘的译作,我的推荐序能出现在本书,也是我的荣幸。

什么是卓越代码(great code)?场景不同,角色不同,对卓越的定义自然有所不同。既然没有统一标准,似乎可以放过不提。然而,本书系列题为《编程卓越之道(Write Great Code)》,又如何可以轻易放过对卓越的认识?细品作者Randall Hyde采纳的定义:

卓越代码是按照一套一致的优秀软件特征编写出来的,首要考虑的是优秀软件特征。特别是,卓越代码要遵循一套规则,这套规则能够指导程序员在用源码实现算法时的决策。

单就定义而言,依旧语焉不详。关于什么是优秀软件特征,或许大家可从书中寻觅到答案。而我却透过书名,隐隐捕捉到Randall Hyde的一个观点——没有深谙计算机底层原理,不可能写出卓越的代码。——这也正是本书卷1的核心思想:understanding the machine。

听听作者自己的解释:

了解了计算机如何表示数据,就了解了高级语言的数据类型是如何转换到机器层次的;了解了CPU如何执行机器指令,就了解了高级语言应用程序中各种操作的代价;了解了内存性能,就了解了如何组织高级语言中的变量和其他数据,让缓存和内存的访问最优。

此言非虚。正如要学好Java,就有必要了解JVM的工作原理,而要彻底了解JVM,怎能不知道计算机的底层原理?以指令集为例,这是汇编程序员天天使用的基本编程要素,而Java程序员就鲜少涉猎。殊不知,这些Java程序员编写的每行代码都会编译为运行在JVM中的指令。对照来看,恰好本书介绍了短指令和长指令在空间、性能与复杂度的取舍,而JVM则采用了折中的变长指令,允许操作码后跟零字节或多字节的操作数(operand)。同一条知识,打通了从计算机底层到高级语言开发的通路。

作为一名汇编语言高手,Randall Hyde极为推崇汇编语言对程序员的助力。他在本书后记中建议:“有一种强迫自己在机器层次编写代码的方法就是使用汇编语言。”许多新生代的程序员对此建议或许不以为然,毕竟,如今使用汇编语言的机会可谓凤毛麟角,它的重要性已经淡去。

遥想当年,在我的大学时代,汇编语言还是计算机专业最重要的一门编程语言课,当然,也是公认最难啃的硬骨头。当时还能熟练编写汇编程序的我,早不记得这门语言的大部分语法了。我不知道,学习和使用汇编语言是否真的有助于写出卓越代码?我也不知道,我之所以没能写出什么卓越代码,是否与我汇编水平不高有关?但我深信,倘若具有高超的汇编开发能力,必然理解计算机底层运行的细节;倘若能很好地掌握汇编语言,学习任何一门高级语言,也就不在话下。

当软件系统规模如滚雪球一般变得越来越大时,我们已不可能像当初求伯君那样用汇编去写十几万行的WPS。虽然使用的语言不同,编程态度却应该一以贯之。然而,当我们写出动辄数百万行代码的应用系统时,是否真的思考过每条语句背后的代价?——问程序员,有多少人以写出卓越代码为己任?问代码,又有多少是深谙计算机底层原理的程序员写出来的?我们这个行业,因为竞争加速的原因,程序员变得更加的浮躁。没有办法让自己安静下来,沉心打磨基础;当开发技能成为一种快餐时,还有谁会力求编码的精益求精?又有多少人舍得花费宝贵时间来深入理解计算机?然则,“九尺之台起于垒土”,没有扎实的基础,开发的能力究竟能提升多高,编程的生涯究竟能走多远,我深表怀疑。

真的非常钦佩Randall Hyde多年如一日孜孜于《编程卓越之道》系列的写作,使之成为计算机图书中不朽的经典。而作者并不满足已经取得的成就,推陈出新,出版了本书的第二版。第二版加入了新鲜的元素,却又不损经典质量的一分一毫。如果你刚刚踏上编程之旅,我会强烈推荐你阅读本书。正所谓“磨刀不误砍柴工”,这些底层原理和底层细节,看似对你的开发没有直接帮助,但它真的可能会决定你未来的高度!是为推荐序。

《解构领域驱动设计》作者 张逸


张逸,信通院应用现代化推进中心专家委员会委员,应用现代化首席顾问,融合企业架构、领域驱动设计、微服务、云原生架构与DevOps敏捷管理方法打造了通用、开放、中立的应用现代化方法体系,以帮助企业全面实现数字化转型。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 逸言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档