首页 理论教育 C语言程序设计|计算机编程与语言

C语言程序设计|计算机编程与语言

时间:2023-11-23 理论教育 版权反馈
【摘要】:1945年6月30日,美籍匈牙利科学家冯·诺伊曼发表了题为《关于离散变量自动电子计算机的草案》的长文,正式提出了存储程序的概念。ENIAC的问世,宣告了人类从此进入电子计算机时代。图1-1莫尔小组第1代计算机为电子管数字计算机。这一时期的计算机没有系统软件,只能用机器语言和汇编语言编程。第3代计算机是集成电路数字计算机。

C语言程序设计|计算机编程与语言

人们通常所说的计算机,是指电子数字计算机,它是20世纪40年代人类的伟大创造。半个多世纪以来,计算机技术对人类社会的进步与发展产生了巨大的推动作用,影响深远。

1673年,德国数学家莱布尼兹(G.W.Leibniz)在加法机的基础上设计完成了能进行加、减、乘、除的机械乘除器(乘法自动计算机)。莱布尼兹不仅发明了手动的可进行完整四则运算的机械式计算设备,还提出了“可以用机械替代人进行烦琐重复的计算工作”这一重要思想。

1822年,英国数学家巴贝奇(Charles Babbage)发明差分机,所谓“差分”的含义是把函数表的复杂算式转化为差分运算,用简单的加法代替平方运算。差分机专门用于航海和天文计算。这是最早采用寄存器来存储数据的计算机,体现了早期程序设计思想的萌芽。

1834年,巴贝奇又完成了一项新计算装置的构想,该计算装置具有通用性,能解决数学上的各种问题,不仅可以进行数字运算,而且还能进行逻辑运算,巴贝奇把这种装置命名为“分析机”。这种分析机已经有了今天计算机的基本框架,可以看成是采用机械方式实现计算过程的最高成就。但是,由于技术限制,他企图采用机械方式去实现如此复杂的计算过程几乎是不可能的,巴贝奇的计算机器最终没有真正取得成功。巴贝奇也是提出用程序控制计算思想的第一人。

1847年和1854年,英国数学家布尔(Boole)接连发表了《逻辑的数学分析》和《思维规律的研究》两部重要著作,创立了逻辑代数。逻辑代数系统采用二进制,是现代电子计算机的数学和逻辑基础。

1884年,美国人赫尔曼·霍勒瑞斯(Herman Hollerith)受到提花织机的启发,想到用穿孔卡片来表示数据,制造出了第一台机电式穿孔卡系统——制表机。虽然霍勒瑞斯的发明并不是通用计算机,除了能统计数据制造表格外,制表机几乎没有别的什么用途,然而,制表机的穿孔卡第一次把数据转变成二进制信息,这是计算机发展史上的第一次质变,以穿孔卡片记录数据的思想正是现代软件技术的萌芽。在早期计算机系统里,这种用穿孔卡片输入数据的方法,一直沿用到20世纪70年代。

1936年,24岁的英国数学家图灵(Alan M Turing)发表著名的论文《论可计算数及其在密码问题的应用》,提出了“理想计算机”,后人称之为“图灵机”。图灵通过数学证明理论上存在“通用图灵机”,这为可计算性的概念提供了严格的数学定义,图灵机成为现代通用数字计算机的数学模型,它证明了通用数字计算机是可以制造出来的。

1937年,德国工程师楚泽(Konrad Zuse)制造了Z-1机电式计算机,1941年又制造出Z-3,它全部采用继电器,同时采用浮点计数法、二进制运算、带数字存储地址的指令形式等,是世界上第一台采用真正的通用程序控制的计算机。

1938年,美国数学家、信息论的创始人香农(Shannon)发表了著名的论文《继电器和开关电路的符号分析》,首次阐述了如何将布尔代数运用于逻辑电路,奠定了现代电子计算机开关电路的理论基础。香农的理论为计算机具有逻辑功能奠定了基础。

1939年,爱荷华州立学院数学系教授文森特·阿塔纳索夫提出计算机三原则:采用二进制进行运算;采用电子技术来实现控制和运算;采用计算功能和存储功能相分离的结构。这也是现代电子计算机所依据的三条基本原则。阿塔纳索夫倡导用电子管作开关元件,这为实现高速运算创造了条件。他还主张把数字存贮和数字运算分开进行,这一思想一直贯穿到今天的计算机结构设计之中。

1940年,美国科学家维纳阐述了自己对现代计算机的五点设计原则:数字式而不是模拟式;以电子元件构成并尽量减少机械装置;采用二进制而不是十进制;内部存放计算表;内部存储数据。

1942年,阿塔纳索夫和他的学生贝里设计了一台模型计算机。它有300个电子管,能做加法和减法运算,以鼓状电容器来存储300个数字。这是有史以来第一台用电子管为元件的有再生存储功能的数字计算机。后来他们设计的模型就以他们二人的名字命名,叫“阿塔纳索夫-贝里计算机”(Atanasoff Berry Computer,简称ABC)。

1944年5月,美国哈佛大学的应用数学教授霍华德·艾肯(Howard Aiken),在IBM公司的支持下研制成功机电式计算机MARK-I(自动序列控制演算器ASCC)。这是世界上最早的通用型自动机电式计算机之一,它结合了霍勒瑞斯的“穿孔卡”技术和巴贝奇的通用可编程机器的思想,取消了齿轮传动装置,以穿孔纸带传送指令。1944年,Mark I正式在哈佛大学投入运行。IBM公司从此走上开发与生产计算机之路。(www.xing528.com)

1945年6月30日,美籍匈牙利科学家冯·诺伊曼发表了题为《关于离散变量自动电子计算机的草案》的长文,正式提出了存储程序的概念。文中提到两个设想:采用二进制和“存储程序”。它是所有现代电子计算机的范式,被称为“冯·诺依曼结构”,按这一结构建造的电子计算机称为存储程序计算机(Stored Program Computer),又称为通用计算机。冯·诺伊曼机体系延续至今。他的这两个设想对于现代计算机至关重要,也使冯·诺伊曼成为“现代电子计算机之父”。

在图灵、冯·诺依曼在内的数学家研究成果的影响下,在美国军方的资助下,在约翰·莫奇利和约翰·埃克特在内的科学家和工程师的直接组织参与下,1946年2月5日,世界上第一台现代数字、高速、通用计算机ENIAC在宾夕法尼亚大学莫尔学院研制成功。ENIAC的问世,宣告了人类从此进入电子计算机时代。承担开发任务的“莫尔小组”(图1-1)由总设计师莫契利、总工程师埃克特、数学家格尔斯、逻辑学家勃克斯和另外四位科学家组成,总工程师埃克特当时年仅24岁。

图1-1 莫尔小组

第1代计算机(1946~1958)为电子管数字计算机。这一时期的计算机没有系统软件,只能用机器语言汇编语言编程。第2代计算机(1958~1964)是晶体管数字计算机。在这个时期,出现了监控程序,提出了操作系统的概念。同时,还出现了COBOL和FORTRAN等高级语言。第3代计算机(1964~1970)是集成电路数字计算机。操作系统开始出现,结构化程序设计方法的出现,为研制复杂的软件提供了技术上的保证。第4代计算机(1970~现在)为大规模集成电路数字计算机。在这个时期,操作系统不断完善,应用软件已成为现代工业的一部分。同时,巨型、大型、中型和小型机也取得了稳步的进展。计算机技术和通信技术相结合,出现了计算机网络,计算机发展呈现出网络化和智能化的趋势。

图1-2 华罗庚教授

华罗庚教授(图1-2)是我国计算技术的奠基人和最主要的开拓者之一。当冯·诺依曼开创性地提出并着手设计存储程序通用电子计算机EDVAC时,正在美国Princeton大学工作的华罗庚教授参观过他的实验室,并经常与他讨论有关学术问题。华罗庚教授1950年回国,1952年在全国大学院系调整时,他从清华大学电机系物色了闵乃大、夏培肃和王传英三位科研人员在他任所长的中国科学院数学所内建立了中国第一个电子计算机科研小组。1956年筹建中科院计算技术研究所时,华罗庚教授担任筹备委员会主任。2014年6月,TOP500组织公布了全球超级计算机500强排行榜榜单,中国国防科技大学研制的天河二号超级计算机,以峰值计算机速度每秒5.49亿次、持续计算速度每秒3.39亿次双精度浮点运算速度又一次夺得第一。

根据以上计算机发展过程可得知,计算机语言的发展伴随计算机硬件的发展。因为存储程序思想是计算机的基本工作原理,由此决定了人们使用计算机的主要方式——编写程序和运行程序。各种操作系统与应用软件的开发,目的是让用户更加方便地控制和使用计算机。根据计算机是否能直接读懂,可将用于编程的计算机语言分为低级语言和高级语言。

低级语言是面向机器的程序设计语言,包括机器语言和汇编语言。用二进制代码“0”和“1”形式表示的、能被计算机直接识别和执行的语言,称为机器语言。其格式和代码所代表的含义都是硬性规定的,对于不同型号的计算机来说一般是不同的。由于程序是用许多二进制数表示的,用机器语言编写的程序不便于记忆、阅读和书写,所以计算机科学家进行了一种改进:用一些简洁的英文字母、符号串等助记符来代替一个特定指令的二进制串,如用ADD代表加法操作1011011000000000,用SUB代表减法操作1011010100000000。这种程序设计语言称为汇编语言。尽管汇编语言相对机器语言,程序变得易于理解,纠错及维护也比较方便,但仍是面向机器的语言,涉及太多机器资源的细节,依赖于机器硬件,移植性不好。计算机运行汇编语言程序时,首先只有将用助记符写成的源程序转换成机器语言程序才能运行。汇编语言适用于编写直接控制机器操作的低层程序。

由于汇编语言依赖于硬件系统,且助记符量大、难记,科学家们又发明了一种与硬件结构及指令系统无关,表达方式比较接近自然和数学表达式,编出的程序能在所有机器上通用的高级语言。高级语言的编写方式更接近人们的思维习惯,如可以用“+”来表示加法,用“-”表示减法,它远离机器语言,与具体的计算机硬件关系不大,在一台计算机上运行用高级语言编写的程序,该计算机只需提供该语言的翻译系统即可。1954年出现的FORTRAN语言是第一个完全脱离机器硬件的高级语言,是程序设计语言发展史上的一个分水岭,以后发展起来的语言称为高级语言。

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

我要反馈