- 1945 年时,刚开始有计算机,那时候使用二进制数编程
- 到了40年代末期,出现了汇编器,可以自动将汇编程序转换为二进制数序列
- 1951 年
Grace Hopper
发明了编译器 - 1957 年,
Fortran
,第一个高级语言,首次亮相 - 接下来就是层出不穷的新编程语言 -
COBOL
、C
、Pascal
、C++
、Java
等等1
经过了几十年的发展,今天的软件与过去的软件本质上仍然是一样的,程序都是由 顺序结构
、分支结构
和 循环结构
组成,再没有出现新的结构。
- 1958 年
John Mccarthy
发明了 LISP 语言,函数式编程
范式诞生 - 1966 年
Ole Johan Dahl
和Kriste Nygaard
的论文开创了面向对象编程
范式 - 1968 年
Edsger Wybe Dijkstra
论证了goto
语句的危害,结构化编程
范式诞生
经过了几十年的发展,今天的编程范式与过去完全一样,也是结构化编程
范式、 面向对象编程
范式和 函数式编程
范式,再没有出现新的编程范式。
到 1968 年,今天所有的程序结构和编程范式就已经全部出现,从那之后的半个多世纪以来,软件工程领域只是更新了更好的工具以及沉淀了一些构建程序的关键经验。
软件工程的最基本经验是:保持简洁。2
软件设计有两种方式:一种是设计得极为简洁,明显没有缺陷;另一种是设计得极为复杂,没有明显的缺陷。第一种方式要难得多。3
大多数软件禁不起磕碰,毛病很多,就是因为过于复杂,很难通盘考虑。如果不能够理解一个程序的逻辑,就不能确信其是否正确,在出错时,你将更加没有头绪:可能性太多。
Brian Kernighan
认为 “计算机编程的本质就是控制复杂度”。要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。
要保持代码简洁,需要艰辛的劳动和严格的职业操守,遵循的原则是“童子军规范”:每次迁入都要比迁出好一些。
要保持架构简洁,需要理解“单一职责原则”、“开闭原则”、“接口隔离原则” 、和“依赖反转原则”。
要保持设计简洁,需要思维上的转变。能删除什么?能简化什么?能重新定义什么?
所有的这些,一言蔽之,就一个字:简
把复杂的事情变简单,简单的事情便可靠!
读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
《架构整洁之道》 ↩︎
《嵌入式系统设计的艺术》 ↩︎
《UNIX编程艺术》 ↩︎