程序员之间拉开差距最大的因素

news2025/1/19 11:07:29

本文为小红花技术领袖俱乐部创始人赖勇浩为《编程卓越之道》(卷1)所作序言。

拿到新一版《编程卓越之道》的第一卷《深入理解计算机》的稿子,心里非常感慨:上次读这本书,已经是16年前,还留下了幼稚的读后感:

https://blog.csdn.net/gzlaiyonghao/article/details/766912

如今回头看书稿和自己当年的文字,汇编语言以及WebAssembly等底层技术的新面貌再度翻红,而程序员的基本功仍然是与同行拉开距离的最大因素,花时间与精力深入理解计算机还是回报率最高的“投资”。

以此来看,2006年我在博客上留下的印记仍然有适用性,仍然值得新的读者参考。

本书是《编程卓越之道》(英文名:Write Great Code)四卷本中文版的第一卷。

在这里插入图片描述

这本书是好书,作者Randall Hyde对计算机系统的深入理解跃然纸上,从数值在计算机中的表示到二进制算术和位运算从浮点数表示到字符表示及字符串组织,从内存的组织与访问到CPU体系结构,从指令集到输入/输出,娓娓道来,它们的优缺点和瓶颈了然于胸。

作者并没有教你优化的方法,而是告诉你哪里会有陷阱。

记得《C++编程规范》里有一条规范是避免代码劣化,这本书全书都在印证这一说法——如果你没有能力优化,起码要保持它没有被劣化。

参加过一些代码评审,有时候会看到一两段代码写得比较耗CPU和内存,比如在局面重置时全部生成新的对象,或者在条件判断时把不太可能发生的情况放在前面。

当评审人指出问题时,听到的最多的辩解是:“嗯,这里是有问题,因为项目刚开始,代码不成熟,我们打算在正式版(下一版)优化它。”

但我想说的是:“你不是在做优化,只是把劣化的代码改正过来而已。”

同样是来自《C++编程规范》,有一句话说得很好:优化应该在代码稳定成熟了之后再做,防止劣化却要时刻进行(大意如此)。

阅读本书能使你大大减少踩入劣化的陷阱。

作为以编写卓越代码为目标的程序员,精读《编程卓越之道》的意义绝不止于加固基础那么简单,我更大的感触是它让我认识到基础的重要性。

从小学到大学,胸无大志的我耍着几分小聪明就轻松过关。而正是这当年引以为傲的小聪明,让我不重视基础,以为生活和工作也会像考试一样逃不出自己的聪明脑袋。大学毕业校招进了网易游戏部门,身边高手如云,想奋起直追时才知道自己下盘不稳、根基不牢。

因为自己害怕离开自己熟悉的语言和平台不能让自己发挥小聪明,让人识破自己是只纸糊的“老虎”,心魔成了追求进步的最大障碍。直到工作了很久之后,才有胆量卸下“偶像包袱”,给自己从底层重修的胆量,慢慢走上自我修身之路。而《编程卓越之道》是很好的“修”技术之“身”的书,我打算四卷全读。

读完第一卷,我的感想是,做大事要有做大事的策略,但天下大事必作于细,没有坚实的基础知识,是没有掌控大事的能力的。

所以,要放好心态,给自己慢慢来的胆量,一步一步来,从底层重修。

在这里插入图片描述
在这里插入图片描述

快快扫码抢购吧!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1072. 按列翻转得到最大值等行数(leetcode,哈希)-------------------c++实现

1072. 按列翻转得到最大值等行数(leetcode,哈希)-------------------c实现 题目表述 给定 m x n 矩阵 matrix 。 你可以从中选出任意数量的列并翻转其上的 每个 单元格。(即翻转后,单元格的值从 0 变成 1,或者从 1 …

排序算法之基数排序

一、基数排序(RadixSort) 基数排序(Radix sort)是一种非比较型整数排序算法。 1. 基本思想 原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序的方式可以采用LSD(Least significant…

超详细:阿里云服务器安装宝塔面板教程(需要开端口)

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…

理论力学专题----拉普拉斯一龙格一楞次矢量

质量 m平方反比的有心力场 对应势能 V-k/r牛顿定律:\dot{\vec{p}}-k\frac{\vec{r}}{r^3} 空间旋转对称群 略 下学期学完了补上 LRL矢量 LRL矢量\vec{A}: define: \vec{A} \eqv \vec{p} \times \vec{L} - mk\frac{\vec{r}}{r} LRL守恒 \frac{d}{dt}(\vec{p} \…

图神经网络:(节点分类)在Cora数据集上动手实现图神经网络

文章说明: 1)参考资料:PYG官方文档。超链。 2)博主水平不高,如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook。超链。提取码8888。 文章目录 代码实操1:GCN的复杂实现代码实操2:GCN的简单实现…

从零开始Vue3+Element Plus的后台管理系统(二)——Layout页面布局的实现

项目搭建好之后,开始写基本的布局。后台管理系统的布局3大元素:头部、侧栏、主要内容,各种布局结构相差不大,我选择了下图所示的布局,其中头部、侧栏、页签在页面中是固定的,只有主要内容容器会跟随页面滚动…

如何从计算机或 SD 卡中恢复已删除的音乐文件?

与我们中的许多人一样,您可能已经从喜爱的专辑中下载并保存了多个音乐文件以供离线收听,但如果您不小心或意外删除了这些音乐文件怎么办?不用担心,我们在这里列出了几种从计算机或 SD 卡中恢复已删除或丢失的音乐文件的方法。 您…

001+limou+Git的安装与入门

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本系列主要深入讲解有关Git的基础知识和基础使用,在文章中会结合部分Git网站上推荐的电子书《Pro Git》来对Git进行解读,意在补充书中对您“不友…

Java 面试 | RabbitMQ(2023版)

文章目录 rabbitmq1、为什么要使用rabbitmq2、rabbitmq如何确保消息发送?消息接收?3、RabbitMQ的构造4、Exchange交换器的类型5、RabbitMQ的持久化6、RabbitMQ消息发送和接收过程7、如何保证消息队列的高可用8、如何处理消息丢失的情况9、如何保证消息没有重复消费10、如何保…

Shell系统编程三剑客之----sed编辑器

目录 一:sed编辑器 1.sed编辑器概述 2.sed的工作流程 3.sed的命令格式 4.常用选项 5.常用操作 二:sed操作事例 1.查询 (1)打印内容 ​(2)打印行数 ​(3)打印特殊字符、ASCII码 &…

python爬虫简述

Python爬虫是一种自动化获取互联网数据的技术,它可以通过编写程序自动访问网站并抓取所需的数据。在本文中,我们将介绍Python爬虫的基础知识、常用库和实际应用。 一、Python爬虫的基础知识 爬虫的定义 爬虫是一种自动化获取互联网数据的技术&#xf…

屏幕录像怎么录?分享3个简单实用的方法!

案例:怎么录制电脑屏幕? 【对于我这种不太熟悉电脑的人来说,想要录制电脑屏幕十分困难。听说录制电脑屏幕,需要用到录屏工具。有没有小伙伴有好的录屏软件介绍,顺便附带一下教程!求!】 屏幕录…

【冶金轧钢、电厂 JL-8B/E集成电路电流继电器 CMOS运算 JOSEF约瑟】

JL-8B/E集成电路电流继电器名称:集成电路电流继电器型号:JL-8B/E触点容量250V5A功率消耗<5W返回系数过电流:0.90.97;欠电流:1.051.15整定范围0.03~60A 系列型号: JL-8A/E集成电路电流继电器; JL-8B/E集成电路电流继电器; JL-8A/E11-004集成电…

[离散数学]命题逻辑与推理

目录 主析取范式 主合取范式推理理论(假设前提条件为真推出的结论)真值表法直接证明法** 常用推理公式 ** 间接证明 CP规则--附加前提证明法,证明比较方便 单条件形式,提取前件间接法 归谬法 结论是单命题,取反前提引入 常用 latex 定义 主析…

Druid未授权漏洞进一步的利用

一、漏洞描述 Druid是阿里巴巴数据库出品的为监控而生的数据库连接池。并且Druid提供的监控功能包括监控SQL的执行时间、监控Web URI的请求、Session监控等。Druid本身是不存在什么漏洞的,但当开发者配置不当时就可能造成未授权访问。本文除了介绍Druid未授权漏洞之…

js 使用正则获取 html中 所有span标签

let html <p>艾迪莎测试但大家还是</p><h1>你好啊</h1><p>啊是多久啊合适的<span style"text-decoration: underline;">静安寺</span>大家哈圣诞节<span style"text-decoration: underline;">哈桑</s…

企业需要专业电子邮件地址的4大原因

专业的企业电子邮件地址具有贵公司的自定义域名&#xff0c;而不是通用的Zoho Mail 、gmail或yahoo帐户&#xff0c;例如&#xff1a;john stargardening.com 大多数初学者使用不带域名的通用免费企业电子邮件帐户&#xff0c;这不是很专业。例如&#xff1a;zhangsan2022zoho.…

从零开始Vue3+Element Plus后台管理系统(六)——状态管理Pinia和持久化

Pinia 官网&#xff1a;https://pinia.vuejs.org/zh/ Pinia 是 Vue 的专属状态管理库&#xff0c;相比Vuex更好用&#xff0c;优点不多了说官网有&#xff0c;用起来最重要&#xff01; 在应用的根部注入创建的 pinia // main.ts import { createApp } from vue import { c…

CLMP证书:让你在职场中脱颖而出的秘密武器!

CLMP证书是一种精益管理专业证书&#xff0c;是针对精益管理领域的专业人士和学生的培训项目&#xff0c;旨在提高他们在精益管理方面的技能和知识。那么&#xff0c;CLMP证书的含金量高吗&#xff1f;接下来我们来探讨一下。 CLMP证书的优势体现 首先&#xff0c;CLMP证书的…

Android Jetpack Compose之使用脚手架快速搭建APP布局结构

概述 现在市场上大多数的手机APP的通用布局结构都是顶部有个顶部导航栏&#xff0c;底部有个底部导航栏&#xff0c;例如抖音的布局结构&#xff1a; 点击导航栏里面的各个项又可以跳转到相应的页面&#xff0c;现在这种结构特别流行&#xff0c;如果我们使用传统的View来实现…