软件:按照特定顺序组织的计算机指令的集合
这个是百度的解释,可是,对我们一般虽然会使用软件,但是不知道软件如何生产的人来说,看了这个解释依然云里雾里。这周看到一个介绍软件的文章的系列,谈谈自己的想法,同时推荐你也读一下。
黑格尔说过:存在就是合理。任何东西的存在都是有价值的,软件的出现,发展,丰富到最后成为一个强大的产业,必然有催生其出现的强大需求。那软件到底是做什么的呢?
想想,如果如果老板安排你一份工作,用打印机打从1顺序打印到10000000000。
你有两种方法可供选择:
1.自己在打印机上输入指令,从头打到尾
2.写个小程序,程序直接帮你打印。
第一种方法,需要你要整整一天时间坐在打印机旁,而且极有可能出错。第二种方法,你只需要泡一杯咖啡的时间。
软件只需要电能,完全不需要休息。它们默默地帮助人类处理大量的劳动,不眠不休,没有怨言。随着硬件越来越便宜,软件能替代的人类劳动越来越多,最后,用软件处理工作的单个人的能力,也变得越来越强大。因此,软件作为生产工具出现的历史,是一部人类生产效率巨大提升的历史。
软件的目的:
降低成本
那软件如何做到的呢:
软件通过模拟人,来达到帮人类工作的目的
软件是跑在硬件上的程序,用来控制硬件的行为。而它们如何控制硬件的行为呢,还是用打印这份工作为例子,人类打印,是在打印机上一个字符一个字符地打印。软件也是,它们模拟人类大脑的工作方式(冯诺依曼结构--存储器、控制器、运算器、输入输出),按照要求打印所需的文件。不过,电脑和人脑之间的巨大不同在于,人类的大脑天生就不太善于处理重复性的工作。软件不同,软件模拟人脑的计算方式,会按照你的要求,一字不差的去执行。软件处理重复工作的速度是人脑的很多倍,因为除了计算,它不需要额外的思考,只知道机械地重复。而人脑呢,一旦重复,就可能出错。
那软件如何出现的呢?这就离不开一群喜欢通过创造来实现自身存在价值的聪明人--程序员。
软件的出现:
程序员用程序来解决自己不愿去意重复的工作
程序员用软件来解决别人的工作
软件用来模拟人和社会,为人类提供成本更低和更加高效的生活
软件最开始是用来解决一些简单的重复性问题的,随着软件功能越来越强大,程序员发现,软件不仅仅可以解决自己的问题,而且可以帮助他人解决很多问题。再然后,软件渐渐能够为人类设备提供巨大价值了,因为它能解决的很多人的共有问题了。到这个时候,软件代码的规模本身也变得无比强大和复杂,以致于单个程序员已经无法独立完成整个软件的开发工作,软件的生产开始有了分工,也就是架构的出现:
架构出现的原因:
拆分责任
降低单个程序员的工作量
由上面的讨论,我们介绍了软件的出现、发展、到最终变得复杂。就像生物的进化,软件的生产最开始由单个程序员独立编写的小程序,到最后出现微软和苹果这些IT巨头的操作系统,是一个由简到繁的演进过程。这个过程离不开如何把现实生活中的问题转变的电脑可以理解的编程语言,如何软件的功能如何拆分,软件架构解决了一些什么样的具体需求等一系列问题。后面随着学习的深入我也会进一步介绍。
文章想法的出处,推荐你也看看:http://www.infoq.com/cn/talk-arch