一、人类在计算工具的发展历程
1、算筹
- 我国春秋时期出现的算筹是世界上最古老的人造计算工具,我国古代劳动人民最先创造和使用了这种简单的计算工具。算筹最早出现在何时,现在已经无法考证,但在春秋战国时期,算筹使用的已经非常普遍了。根据史书的记载,算筹是一根根同样长短和粗细的小棍子,一般长为13~14cm,径粗0.2~0.3cm,多用竹子制成,也有用木头、兽骨、象牙、金属等材料制成的,如图1所示。算筹采用十进制记数法,有纵式和横式两种摆法,这两种摆法都可以表示1、2、3、4、5、6、7、8、9九个数字,数字0用空位表示,如图2所示。算筹的记数方法为:个位用纵式,十位用横式,百位用纵式,千位用横式,……,这样从右到左,纵横相间,就可以表示任意大的自然数了。
2、算盘
- 后来我国劳动人民创造了算盘作为运算工具。早在公元15世纪,算盘已经在我国广泛使用,后来流传到日本、朝鲜等国。它的特点是结构简单,使用方便,特别实用,它计算数目较大的和数目较多的加减法,更为简便。算盘已经基本具备了现代计算器的主要结构特征。例如,拨动算珠,也就是向算盘输入数据,这时算盘起着“储存器”的作用;运算时,珠算口诀起着“运算指令”的作用,而算盘则起着“运算器”的作用。当然,算珠毕竟要靠人的手来拨动,而且也根本谈不上“自动运算”。
3、其他
- 其它中古的国家亦有各式各样的计算工具发明,例如罗马人的「算盘」,古希腊人的「算板」,印度人的「沙盘」,及英国人的「刻齿本片」等。这些计算工具的原理基本上是相同的,同样是透过某种具体的物体来代表数,并利用对物件的机械操作来进行运算。
二、计算机软件的发展历程
1、第一代软件(1946-1953)
第一代软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成。例如计算2+6在某种计算机上的机器语言指令如下:
10110000 00000110
00000100 00000010
10100010 01010000
第一条指令表示将“6”送到寄存器AL中,第二条指令表示将“2”与寄存器AL中的内容相加,结果仍在寄存器AL中,第三条指令表示将AL中的内容送到地址为5的单元中。
-
不同的计算机使用不同的机器语言,程序员必须记住每条及其语言指令的二进制数字组合,因此,只有少数专业人员能够为计算机编写程序,这就大大限制了计算机的推广和使用。用机器语言进行程序设计不仅枯燥费时,而且容易出错。想一想如何在一页全是0和1的纸上找一个打错的字符!
-
在这个时代的末期出现了汇编语言,它使用助记符(一种辅助记忆方法,采用字母的缩写来表示指令)表示每条机器语言指令。
2、第二代软件(1954-1964)
-
当硬件变得更强大时,就需要更强大的软件工具使计算机得到更有效地使用。汇编语言向正确的方向前进了一大步,但是程序员还是必须记住很多汇编指令。第二代软件开始使用高级程序设计语言(简称高级语言,相应地,机器语言和汇编语言称为低级语言)编写,高级语言的指令形式类似于自然语言和数学语言(例如计算2+6的高级语言指令就是2+6),不仅容易学习,方便编程,也提高了程序的可读性。
-
由于高级语言程序需要转换为机器语言程序来执行,因此,高级语言对软硬件资源的消耗就更多,运行效率也较低。由于汇编语言和机器语言可以利用计算机的所有硬件特性并直接控制硬件,同时,汇编语言和机器语言的运行效率较高,因此,在实时控制、实时检测等领域的许多应用程序仍然使用汇编语言和机器语言来编写。
3、第三代软件(1965-1970)
在这个时期,由于用集成电路取代了晶体管,处理器的运算速度得到了大幅度的提高,处理器在等待运算器准备下一个作业时,无所事事。因此需要编写一种程序,使所有计算机资源处于计算机的控制中,这种程序就是操作系统。
用作输入/输出设备的计算机终端的出现,使用户能够直接访问计算机,而不断发展的系统软件则使计算机运转得更快。但是,从键盘和屏幕输入输出数据是个很慢的过程,比在内存中执行指令慢得多,这就导致了如何利用机器越来越强大的能力和速度的问题。解决方法就是分时,即许多用户用各自的终端同时与一台计算机进行通信。控制这一进程的是分时操作系统,它负责组织和安排各个作业。
4、第四代软件(1971-1989)
-
20世纪70年代出现了结构化程序设计技术,Pascal语言和Modula-2语言都是采用结构化程序设计规则制定的,Basic这种为第三代计算机设计的语言也被升级为具有结构化的版本,此外,还出现了灵活且功能强大的C语言。
5、第五代软件(1990-)
-
第五代软件中有三个著名事件:在计算机软件业具有主导地位的Microsoft公司的崛起、面向对象的程序设计方法的出现以及万维网(World Wide Web)的普及。
-
面向对象的程序设计方法最早是在20世纪70年代开始使用的,当时主要是用在Smalltalk语言中。20世纪90年代,面向对象的程序设计逐步代替了结构化程序设计,成为目前最流行的程序设计技术。面向对象程序设计尤其适用于规模较大、具有高度交互性、反映现实世界中动态内容的应用程序。Java、C++、C#等都是面向对象程序设计语言。