什么是程序设计?《禅与计算机程序设计艺术》 / 陈光剑

2021-05-07  本文已影响0人  光剑书架上的书

软件是人类有史以来最复杂的系统。
其一、软件系统本身规模庞大,参与人手众多,难以管理;
其二、环境和需求不断变化,且错误难以避免。

人类无法驾驭过于复杂的事物,于是只能寻找方法简化软件系统:把系统分为许多子部分,人们开发一个部分的时候,系统其他部分都是一种抽象,无需了解其细节。

计算机程序设计,也就是我们说的编程,本质上是对人类遇到的现实问题的抽象——从现实问题空间模型到计算机算法空间模型的映射。编程中的抽象主要有过程抽象(函数、方法,也就是“算法”)与数据抽象(对象、实体、模型、结构体,也就是数据结构)。

过程抽象,就是编程语言中的函数,目的是封装计算过程的细节。应用过程抽象的原则是:一切可以定义为过程的计算片段都应该定义为过程。

数据抽象,最直接的理解就是面向对象编程,如 C++,而 Java 和 C# 则是更彻底的数据抽象。把一组过程抽象(类的方法)集中考虑,并加入内部状态(类的变量),就是一个数据抽象。每个数据抽象都应该把自己的内部对象状态和对象的实现隐藏起来,对外通过一组接口进行消息传递。

软件是计算机的灵魂,是藏在半导体电路芯片里面的精灵。要想真正领会到编程的真谛,绝知此事要躬行。

参考资料

https://book.douban.com/review/4559081/

《禅与计算机程序设计艺术》 / 陈光剑 目录

第一性原理

什么是禅?

什么是计算机?

什么是程序设计?

什么是艺术?

宇宙之起源

物质之形成

半导体材料

纳米光刻

二极管、三极管

太极阴阳与二进制

布尔代数与数字逻辑系统

模拟电子电路系统

信号与处理

信息论

图灵机模型

冯诺依曼模型

计算机演化史

什么是编程?

编程语言进化史

程序 = 数据结构 + 算法

模型关系思维

真理与模型

建筑工程、机械工程、电气工程与软件工程

CPU架构设计

缓存思想

计算机科学中的中间层理论

从01机器码到汇编指令到高级编程语言:一切皆是映射

美妙的递归

用计算机画一张分形图

分层思想

硬件驱动

操作系统

通信原理:TCP/IP 与 HTTP 协议、WIFI无线协议

互联网简史

数据的存储:从ROM、RAM到寄存器到L1/L2 Cache 再到磁盘文件

索引原理:来自大自然的启示 Tree 结构

人类社会数字化

人工智能

虚拟现实

技术、艺术与禅道

// TODO ...... 待续


《禅与计算机程序设计艺术》 / 陈光剑

上一篇下一篇

猜你喜欢

热点阅读