《大道至简》第二章——是懒人造就了方法 (读后感)

简介: 何为“大道至简”?在周爱民的《大道至简》一书中给出的大道至简的解析是软件工程实践者的思想,它是一种思想,而不是一些招数或者方法。   前几天我把这本书的第一章用伪代码的形式写了一篇读后感,今天我就写写这第二章的读后感吧。

         何为“大道至简”?在周爱民的《大道至简》一书中给出的大道至简的解析是软件工程实践者的思想,它是一种思想,而不是一些招数或者方法。

 

前几天我把这本书的第一章用伪代码的形式写了一篇读后感,今天我就写写这第二章的读后感吧。第二章的标题是:是懒人造就了方法。为什么是懒人造就了方法呢?作者用战国时期的李冰凿山的例子来说明这个道理。

 

史记中说是“蜀守冰凿离堆”,是说李冰在成都的时候凿出了离堆。一说是李冰将都江堰附近的玉垒山凿了一个大口子,叫宝瓶口,而凿的石头就堆成了离堆。另一说,则是李的确是凿了一座“(溷)崖”,但是是在沫水,亦即是今天的大渡河。 在哪里凿的山,是史学家都说不清楚的事。但的确凿了一座山,而方法是就“(因)其崖崭峻不可破,(冰)乃积 薪烧之”。

 

我们已经看到事物的进化了。同是战国时代,《列 子·汤问篇》里的愚公就要“碎石击壤”,而李冰就已经懂得“积薪烧之”了。在都江堰这么大个工程里,如果有一个人会闲到看火烧石头,那他一定很懒。那么多事堆着不去做,去看烧石头,你说他不是懒是什么。所以说是懒人造就了方法。

 

早期写程序,都是将代码打在穿孔纸带上,让计算机去读的。要让计算机读的纸带当然是连续的,这无需多讲。而打出的纸带是多么苦楚。后来有了汇编语言,可以写一些代码了。这时的代码是写在文本文件里,然后交给一个编译器去编译,再由一个链接器去链接,这样就出来了程序,再后来有了高级语言,程序越来越大,大家把写程序的时候,习惯性的把所有的代码写到一个文件里。而对于要把“一百万行代码写到一个文件”,查找一个函数要在编辑器里按五千次 PageDown/PageUp 键的勤快人来说,是不能指望他们创造出“单元文件(Unit)”这样的开发方法来的。所以是懒人开发了单元文件,也就很快出现了一个新的概念:模块。 把一个大模块分成小模块,再把小模块分成更细的小小模块,一个模块对应于一个单元。于是我们可以开始分工作了,一部分人写这几个单元的代码,另一部分则写那几个。所以说是懒人造就了方法。

 

其实结构化编程的基本单位是“过程(Procedure)”, 而不是上面提到的“单元(Unit)”。然而在我看来,过程及其调用是 CPU 指令集所提供的执行逻辑,而不是普通的开发人员在编程实践中所总结和创生的“方法”。正如 CISC 指令集搅乱了一代程序设计师的思路一样,大量的知识和资讯搅乱了我们思想。我们应该尝试一下分类,把既有的知识象桌子上的书一样整理一下。

 

所谓“面向过程开发”,其实是对“结构化程序设计” 在代码阶段的一个习惯性的说法。而我忽略了这个阶段的 “方法”的根本原因,是即使没有任何“方法”的存在,只需要有了“单元(Unit)”和“模块(Module)”的概念, 在面向过程时代,一样可以做出任意大型的程序。在那个时代,“方法”问题并不会象鼻子一样凸显在每一个程序 员的面前。

 

面向过程开发中,“过程(procedure)”是 CPU 提供的,“单元(unit)”则是编译器提供的(机制)。程序员不需要(至 少是不必须)再造就什么“方法”,就可以进行愚公式的开 发工作了。 如果不出现面向对象的话,这样伟大的工程可能还要再干一百年⋯⋯

 

而与“面向对象”是否出现完全无关的一个东西,却 因为“过程”和“单元”的出现而出现了。这就是“工程 (engineering)。

 

目录
相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
24383 3
Hadoop入门(一篇就够了)
|
编解码
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
794 0
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
|
2月前
|
XML 数据安全/隐私保护 数据格式
微信xml卡片消息生成器,微信xml卡片生成啊制作工具,卡片消息一键发送【python】
这个实现包含三个主要模块:核心生成器类、预定义模板类和主程序入口。核心类负责获取微信
|
存储 人机交互 语音技术
基于RT-Thread的智能家居助手
一、项目简介 智能家居助手主要基于RT-Thread开发的,该系统主要分为语音子系统,环境监测子系统,智能控制子系统,智能网关子系统,音乐播放器,云端以及应用软件七大部分。语音子系统可通过语音进行人机交互来控制家电设备。环境监测子系统为智能家居提供环境信息输入,实时监测室内的环境信息。智能控制子系统为智能家居提供控制接口,用户可根据实际需求来控制家电设备。 智能网关是整个系统的核心和枢纽,为整个智能家居提供网络,同时与云平台进行交互,不断更新室内信息,实时将数据上传至云端,用户就能在远程进行查室内的各种环境信息,实时掌握家中的最新动态。音乐播放器为用户提供音乐服务。云端部分为智能家居系统云
209 6
|
JSON 前端开发 Java
【Java项目】SpringBoot实现一个请求同时上传多个文件和类并附上代码实例
【Java项目】SpringBoot实现一个请求同时上传多个文件和类并附上代码实例
1228 0
|
存储 算法 Java
【内存】Android C/C++ 内存泄漏分析 unreachable
【内存】Android C/C++ 内存泄漏分析 unreachable
994 0
|
关系型数据库 MySQL 数据库
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常,亲测有效
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常的正确解决方法,亲测有效!!!
1815 0
|
XML 存储 JSON
五分钟搞定 YAML
五分钟搞定 YAML
694 1
五分钟搞定 YAML
|
编解码 移动开发 监控
IoT Studio 物联网开发训练营 第二天:一小时搭建云组态 | 学习笔记
简介:快速学习 IoT Studio 物联网开发训练营 第二天:一小时搭建云组态
472 0
IoT Studio 物联网开发训练营 第二天:一小时搭建云组态 | 学习笔记
|
机器学习/深度学习 编解码 自然语言处理
见微知著,掩码自监督学习让你一叶知秋
随着 Vision Transformer (ViT) 在 2021 年霸榜各大数据集,如何基于 ViT 构建更加合适的自监督学习范式成为了该领域的一大问题。最初,DINO 和 MoCo v3 尝试将对比学习和 ViT 相结合,取得了不错的效果。不过长期以来,由于 CV 和 NLP 领域数据和基础模型之间的差异,NLP 的 Masked Language Modeling (MLM) 掩码模式机制没能成功应用于 CV 领域,但最近 ViT 的蓬勃发展,为掩码学习机制应用于视觉自监督打开了一扇大门。
1122 0
见微知著,掩码自监督学习让你一叶知秋