上世纪六七十年代,随着计算机硬件技术的飞速发展,电脑的各项性能持续不断的得到改善,相应的,软件的发展也日益成为各行各业的人们的需要,其发展也摆上了议事日程。
计算机作为人类大脑的延伸,本来是为解放人类大脑的负担而出现的。一些繁琐的,机械式的计算问题和重复操作,比较简单的脑力劳动,都可以交给计算机来完成。
软件!是人类大脑的智慧的结晶。象高等数学,一些复杂的微积分的运算,连专业计算人员都要用几天及至几个礼拜才能完成的计算,交给电脑后,几小时乃至几分钟便可以得出结果,而且还相当精确。
随着人类和各行各业的人们想把更多的工作和任务交给计算机来解决的时候,这时,出乎人们的意料,软件危机出现了!!!为什么会这样?难道电脑真的不如人脑吗?那战胜了国际象棋大师的电脑“深蓝”为什么成功了?如果人脑不如电脑,为什么在开发并使用大型计算机软件系统的时候,会出现不可解决的问题?软件开发为什么会出现危机?
这一系列的问题,还是要从计算机的本质属性开始讲起。在上世纪六七十年代,所谓的编程语言是相当低级的。那时,人们刚摆脱大型机和晶体管计算机的桎梏,电子计算机刚刚出现,集成电路技术也才刚起步。那时的编程语言几乎比汇编还要低级,计算机操作员把指令输入给计算机的时候,是通过开关,选择零和一来一个一个的输入的,具体方法我也不得而知,反正超低级。结果的输出,也是通过打孔卡片来看,而计算时间则多达几小时甚至几天。这样的计算机,拿到今天来说,是很容易让人崩溃的。
如上所述,连一个简单的科学计算问题都要如此的操作,无怪乎,一些大型公司的大型软件项目,其复杂性简直呈指数级增长。这样的软件效率,怎能不产生危机呢?对于大型软件的需求,和当时软件技术的落后,造成了软件急需发展的迫切需要!
这种大型软件的开发,需要的不可能是机器语言,汇编语言,那太低效率,甚至连C语言也难以胜任,于是,八九十年代出现的面向对象的编程语言,便开始大行其道了,先后有C++,Java,Perl,Visual Basic,等等,不一而足。
这些面向对象的语言,把现实世界跟计算机能够理解的世界拉进了一步,开始填埋计算机和现实世界之间的鸿沟了。