聊聊应用软件的发展

在这个世界上,没有无缘无故的因,没有无缘无故的果,没有无缘无故的善,更没有无缘无故的恶,所有的发生,都是注定的因果循环。

战火催生的庞然大物,又会为我们带来什么样的果。

冯诺依曼计算机体系

计算机的诞生

1946年2月14日,美国军方研制的第一台电子计算机终于崭露头角。其3秒钟计算的弹道轨迹成果,远远超过了4000个人/月的计算量。在此之后,这台计算机为原子弹的诞生起到了关键的作用。

这台计算机有成千上万个电子管、二极管、电阻器等元件,电路的焊接点多达50万个;在机器表面,则布满电表、电线和指示灯。占地面积达170平方米,重达30吨。

硬件控制程序

早期的计算机是由门电路组成的,这些门电路通过组装出一个固定的电路板,来执行一个特定的程序,一旦需要修改程序功能,就要重新组装电路板。可想而知,如果想去修改一段小的程序逻辑,要耗费多么大的人力物力。

冯诺依曼体系的思想

冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(程序作为控制器的一部分,作为硬件存在),将程序编码存储在存储器中,实现了可编程的计算机功能。

这种设计思想导致了硬件和软件的分离,即硬件设计和程序设计可以分开执行

需求的衍化

原本的计算机是为了解决“计算”的需求,由于通过硬件控制程度的笨拙以及不方便,冯诺依曼引入了存储的概念,使得计算机的基本的组成元件包含:

  • 中央处理器
  • 存储器
  • 但是只基于如此两个设备的话,就只有大脑进行固定的计算,没有输入输出则毫无意义。于是计算机体系就迎来了新的成员,输入输出。整个基本的零部件如下:

    冯诺依曼体系结构

    编程语言的出现

    人类与计算机的初步交流

    最早的输入输出设备并不是键盘和显示器,而是打孔卡和打印机。用打孔卡来作为机器指令的输入,早在 18 世纪初就被用在织布机上了。早期的数字计算机就是用打孔卡来表达程序指令和输入的数据。

    下图是 IBM 制造的打孔卡:

    打孔卡

    汇编语言的出现

    试想一下,人们要将人类语言转换为二进制的语言才能与计算机进行交流,那一次输入要有多么的痛苦。于是翻译官(汇编)就出现了,它从表达能力上,做了如下几件事情:

    1. 使用形象的指令,来代替二进制指令,例如:add表示加;
    2. 使用特定的符 ,代替内存地址。
    3. 使用固定的修饰符,来表示函数,例如:function代表函数。
    4. 使用jmp、je、jne等符 ,代表程序跳转。

    总体来说,汇编的出现,将人与机器的交流工作进行了解耦,人只关心程序的书写,而不需要记忆机器的指令。正式有了汇编,才诞生了众多的编程语言。

    操作系统的凭空出世

    编程语言的出现,加快了人们打开计算机世界的大门。在此之后,产生了各式各样的软件,自然地就带来了一系列的问题:

  • 多个软件发出来的指令,哪个先运行?
  • 多个软件的存储要怎么分配?
  • 多个软件之间的通讯怎么做?
  • 由此,操作系统应运而生。那么操作系统主要解决了哪些问题呢?

    首先,操作系统解决的是软件治理的问题,大体可分为以下六个子系统:进程管理、存储管理、输入设备管理、输出设备管理、 络管理、安全管理等。其次,操作系统解决的是基础编程接口问题。这些编程接口一方面简化了软件开发,另一方面提供了多种软件共同运行的环境,实现了软件治理。

    桌面应用的普及

    软件世界里,最早出现的就是桌面应用,对于桌面程序,最核心的就是交互。

    命令行交互

    最早的桌面程序,都是设定好的命令,通过命令行去操作软件。但是这种方式的局限性太大,有限的命令满足不了人们的想象,另外在命名达到一定的规模后,翻阅和查找命令,就又成为了一个巨大的难题。前面所说的计算机语言不就是如此么。

    图形界面交互

    与命令行交互相比,图形界面的交互更为简单,一大堆的命令,只需要人为进行一次点击图像,就可以完成。同时,图形界面交互也解决了命令行交互里不能形象体现游戏的问题。在此之后,迎来了游戏行业的春天。

    智能交互

    随着输入输出设备的发展,图形界面的交互也逐渐迎来了智能交互,人们可以通过语音可以操控应用程序,实现类似于Siri的语音交流。

    大型服务端应用的春天

    桌面程序是为单个用户服务的,所以它的关注点是用户交互体验的不断升级,但是总归来说,单台物理机的能力和资源是有限的,在需求达到一定规模之后,单机的应用已经无法满足人类的需求。

    服务端的出现与单机应用走了不同的路线,背后的驱动力不再是交互,而是数据。服务端的主要特点是:

  • 资源可以无限的扩充,单台机器满足不了的情况下,分布式就可以解决。
  • 可以全天不间断地进行服务。
  • 集中的服务运行,对服务的质量要求越来越高(桌面应用只会影响一个用户,但是服务端应用会影响所有用户,因此对于流量的分发管理,就应运而生)。
  • 总结

    随着 会的不断发展,计算机也是不断的进步,但是从发展的历程上来看,计算机的每一次不断的演进都是为了解决某种问题而产生的,但是无论怎么变化,其核心的硬件结构一直没有变动过,可想而知其架构设计的优美。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年2月3日
    下一篇 2022年2月3日

    相关推荐