架构漫谈(五):什么是软件
上篇: 架构漫谈(四):如何做好架构之架构切分 前面通过四篇文章,把什么是架构,如何做好架构等必要的概念澄清了一下。这些概念对于在各种不同的领域都应该也是有用的,需要读者自行思考,并应用到自己所在的领域中。在这篇文章开始,我们用同样的思考,来看看软件是怎么回事,以及如何运用架构思维,更好的设计和实现软件。 冯诺依曼结构,图灵机,以模拟人为目标 软件的历史,实际上可以说是用机器模拟人的历史。不管大家(包括在这个历史过程中的参与者)有没有意识到,我们都有意无意的在计算机上模仿人类的行为。从冯诺依曼结构开始,程序逻辑开始脱离硬件,采用二进制编码。加上存储,配合输入输出,一个简化的大脑就出现了。图灵机则是模拟大脑的计算,用数学的方式把计算的过程定义了出来,著名的邱奇-图灵论题:一切直觉上能行可计算的函数都可用图灵机计算,反之亦然。软硬件两者一结合,一个可编程的大脑出现了,这也是现在为什么我们把计算机叫做电脑。在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。 成本为王 在初期,软件使用二进制编写的,从硬件到软件,成本都非常的高。随着半导体技术的进步,硬件的成本越来越低,性能越来越高,甚至出现了摩尔定律:当价格不变时,集成电路上可容纳的元器件数目,约每隔18-24个月增加一倍,性能提升一倍。软件方面,为了简化难度,开始采用汇编