首页 理论教育 程序运行原理:让代码跑起来

程序运行原理:让代码跑起来

时间:2023-11-08 理论教育 版权反馈
【摘要】:楚泽尝试用二值逻辑控制机械计算机的开关,并于1938年成功研制出第一代电动机械计算机Z1,Z1拥有控制器、浮点运算器、程序指令和输入输出设备,同如今的计算机组成相似。世界上第一台依靠程序自动控制的计算机诞生了!在第二次世界大战期间取得重大突破的,除了楚泽研发的计算机外,还有另外一种改变了世界进程的计算机——电子计算机。如何让程序跑起来涉及程序的运行机制。

程序运行原理:让代码跑起来

史海钩沉

1903年出生于匈牙利布达佩斯的约翰·冯·诺依曼是个天才神童,据说他6岁时就能心算8位数的乘除法,8岁时已经精通微积分,12岁就能读懂并领会波莱尔的大作《函数论》。虽然传记和报道可能有夸张成分,但他的确在数学方面天赋过人。1921年,诺依曼通过高等教育升学考试,全身心投入数学研究,成了一名数学家

转变发生在20世纪30年代,年轻的诺依曼由于才华出众,在学术界越来越引人注目,而他的兴趣也转移到了两个新领域博弈论和计算机。1936年9月,英国数学家阿兰·麦席森·图灵应邀来到普林斯顿高等研究院学习,成了诺依曼的助手。图灵带来了关于一种万能计算机器“图灵机”的设想,引起了诺依曼的兴趣。不过这种兴趣并没有直接引导他去研制计算机,因为不久后“二战”便爆发了。

诺依曼应召参与了许多美国军方的科学研究项目,其中便包括研制原子弹的“曼哈顿工程”。1944年,“曼哈顿工程”进入收尾阶段,诺依曼在得知宾夕法尼亚大学的摩尔学院正在研制一台每秒钟能进行333次乘法运算的电子计算机时,他很快赶往宾夕法尼亚大学的摩尔学院,而这台名为“埃尼亚克”(ENIAC)的计算机在当时已研制到一半,正在程序存储问题上遇到瓶颈。他立即请求加入研究小组,并大胆地提出“实现程序由外存储向内存储的转化,所有程序指令必须用二进制的方式存储在磁带上”。

1945年6月,诺依曼将自己的思想见解撰写成文,题为“关于离散变量自动电子计算机的草案”,提出了在数字计算机内部的存储器中存放程序的概念。这是所有现代电子计算机的范式,被称为“冯·诺依曼结构”,按这一结构建造的电脑被称为通用计算机。这是计算机发展史上的一篇划时代的文献,它向世界宣告:电子计算机时代开始了。

溯源揽胜

计算机并不是一开始就能实现自动计算的,在电子计算机诞生之前,还出现过两代采用布尔代数的二值逻辑进行控制的过渡型计算机。

德国力学工程师康拉德·楚泽总结出大多数计算都采用相同公式的规律,并设想如果能发明一种机器,通过代入不同数据实现自动计算,将极大地提高工作效率。楚泽尝试用二值逻辑控制机械计算机的开关,并于1938年成功研制出第一代电动机械计算机Z1,Z1拥有控制器、浮点运算器、程序指令和输入输出设备,同如今的计算机组成相似。世界上第一台依靠程序自动控制的计算机诞生了!

但由于楚泽并不知道图灵的计算机理论,Z1不能实现图灵机的逻辑判断和逻辑运算等功能,且因由电机带动庞大的机械装置,Z1的计算速度极慢,仅为每秒一次。为了提高计算速度,楚泽用继电器取代机械实现电路开关,并研制出第二代计算机Z2,但除了速度提升到每秒计算5次外,Z2仍然未能解决逻辑判断和逻辑运算等问题。“二战”期间,楚泽研制出每秒可计算5~10次的Z3,功能等同于图灵机。Z3的诞生标志着计算机可以在程序的控制下自动完成计算,是计算机发展史上的重大突破之一,即便它的实际意义并不大。

在第二次世界大战期间取得重大突破的,除了楚泽研发的计算机外,还有另外一种改变了世界进程的计算机——电子计算机。为了在“二战”中取得武器优势,美军聚集了一群“能人志士”紧锣密鼓地研制一种新型计算机,以完成火炮研制中的大量和重复性的计算工作。宾夕法尼亚大学摩尔学院承担了此项任务。

与楚泽采取的继电器实现开关电路不同的是,莫奇利博士和他的学生埃克特设想通过电子管实现数字开关电路来提高开关速度,他们将设备命名为“电子数字积分计算机”,简称ENIAC。ENIAC以阿兰·图灵的图灵机理论为支撑,突破了楚泽依靠经验研究的局限性。

冯·诺依曼的加入推动了ENIAC的研制进程,他从计算机的逻辑出发,大胆提出了在数字计算机内部的存储器中存放程序的设想。但由于时间有限,ENIAC只能按专用计算机的设计制作下去。虽然ENIAC未采用冯·诺依曼结构,且计算速度慢、存储量小,但它的诞生仍是计算机历史上浓墨重彩的一笔,标志着人类正式步入了计算机时代。

冯·诺依曼的构想则应用到了另一台新计算机——离散变量的电子计算机(Electronic Discrete Variable Automatic Computer,EDVAC)的制造中。新计算机采用了一套全新设计方案,解决了ENIAC的通用性问题,这一方案也被称为“冯·诺依曼结构”,EDVAC也是世界上第一台通用计算机。冯·诺依曼结构开启了计算机系统结构发展的先河,计算机科学也由此开始划分为硬件与软件两部分,也就是计算机本身和控制计算机的程序得以区分开来。

知史明智

什么是计算机的程序呢?计算机程序,也称为软件。《计算机科学技术百科全书》将程序描述为计算任务的处理对象和处理规则,任何以计算机为处理工具的任务都是计算任务,处理对象是数据或信息,处理规则反映处理动作和步骤。也就是说,倘若我们把计算机视作处理各种计算问题的机器人,那么程序就是这个机器人处理计算问题以及如何进行计算的一种描述,同时,它是让机器人执行计算任务的指令。但程序的描述语言与我们日常使用的语言不同,它是专门的程序设计语言。(www.xing528.com)

如何让程序跑起来涉及程序的运行机制。程序包含数据结构算法、存储方式、编译等,作为控制机器人执行各种计算任务的指令,程序的任务除了对相关的数据、信息以及算法进行描述外,还要将其转换为让机器人可识别和接受的指令。信息在计算机中都是用0或者1来表示的,因此,我们需要将人可读的信息通过编译系统转变为计算机可执行的二进制文件。

程序员用开发工具所支持的语言写出源文件,也就是代码,它的最终目的是将人类可读的文本翻译成为计算机可执行的二进制指令,这一过程叫编译,由编译器来完成。代码撰写完成后存储在计算机的硬盘当中,若要执行代码,便需要将这段代码从硬盘中读取到计算机内存中,而此时的代码已经变成了计算机可识别的二进制文件存储在内存中了。程序代码被装载进内存时会产生数据和指令两部分,指令会告知计算机如何来处理数据。负责处理计算问题的是中央处理器,它从内存中读取数据,然后放到寄存器(计算机的存储部件)中,再进行数学运算和逻辑运算,并依据相应的条件进行跳转,执行其他指令。这就是程序的整个运行过程。简单来说,加载程序就是将机器指令从磁盘复制到主存储器中,运行程序就是将其从主存储器复制到中央处理器中,最后又从中央处理器复制到外部显示器上。

计算机硬件的构成:计算机由运算器、控制器、存储器、输入设备和输出设备五个逻辑部件组成。

主存储器:是处理器执行程序时用于临时存放程序及其数据的部件,由一组动态随机存储器芯片组成。

中央处理器:由运算器和控制器组成,是任何计算机系统中必备的核心部件。

网事拾遗

相对于“程序”的叫法,我们称呼其为“软件”仿佛更普遍一些。电脑上使用的办公软件、聊天软件,手机上下载的各种学习软件、信息浏览软件、视频软件等都化身成了我们的好朋友,帮助我们社交、娱乐和学习。但软件并不等同于程序,具体来说,软件是包含程序的有机集合体,程序是软件的必要元素。任何软件都有可运行的程序。比如我们最常用的Office是一个办公软件包,里面就包含了许多可运行的程序。

另外,上述我们通常使用的软件其实是属于应用软件,它们是在系统软件的基础上进行操作的。那么应用软件和系统软件有什么区别和联系呢?

让我们回归到程序的分类上来。程序按照设计目的的不同,可以分为系统程序和应用程序。系统程序主要是为了使用方便和充分发挥计算机系统效能而设计出来的,通常由计算机制造厂商或专业软件公司设计,我们常使用的Windows、安卓系统、iOS操作系统等以及编译程序都属于系统程序。而应用软件是为解决用户特定问题而设计的,能够满足用户不同领域和不同问题的具体应用需求,通常由专业软件公司或用户自己设计。应用程序在操作程序上运行,能够拓宽计算机系统的应用领域,放大硬件的功能。

历史回声

科学从不试图解释什么,甚至几乎从未想过让我们理解什么,它们主要提供模型。

——计算机之父 约翰·冯·诺依曼

好的软件的作用是让复杂的东西看起来简单。

——统一建模语言UML的发明者之一 Grady Booch

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈