动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网页设计 → 阅读文章

 Java咖啡馆——大话面向对象(1)

作者:风未起时 来源:中国站长学院 
阅读 2722 人次 , 2006-2-15 14:35:00 

一、前世

    

  1946年2月15日,随着第一台现代电子计算机ENIAC轰鸣着来到这个世界,编写程序也成为三百六十行之外的一个崭新职业。我们称编写程序的工程师为程序员或者开发者。

  ENIAC是一台重达30吨的庞然大物,由19000多个晶体管、1500多个继电器组成。为了给它下达指令,程序员必须通过不同的连接线组合进行编程。要编制运行新的程序,还必须拔掉连线重新来过。整天面对二进制编程的工作相当枯燥乏味,而且是直接对程序地址读写,自然出错频繁。阅读由连线表达的程序更不亚于揣摩天书,维护和改造程序的价格成本居高不下。更要命的是,早期的计算机制造价格相当昂贵,而在程序编制调试完成之前,计算机不得不一直空转,导致软件开发的费用竟然远远超过硬件的投入。

  为了解决软件开发的难题,计算机科学家发明了汇编语言,通过一些助记符来减轻二进制编码的开发压力。这的确是行之有效的方法,直到现在,程序员在开发中还常常使用嵌入式汇编来提高软件运行速度,游戏引擎更是如此。然而,汇编语言太依赖程序员的素质,而且无法适应大规模的开发。

  黄糖故事 Grace Murray Hopper、Bug和Debug

  由于一次传奇般的投资,Mark I计算机把IBM从生产制表机、肉铺磅秤、咖啡碾磨机等乱七八糟玩意的行业,领入了计算机制造业的领地,最终成为如今的蓝色巨人。本系列文章中曾介绍过Mark I三个程序员之一的数学家Grace Hopper是如何创造了“BUG”和“DEBUG”这两个计算机史上著名的两个名词的。而这位Hopper女士,实在是一个不得了的人物。1952年,Hopper觉得用机器码编程是不是比较原始,为什么不能用类自然语言编写程序,然后再用一个工具把它转换成机器码呢?不久,她就开发出世界上第一套编译器A-0,是现代编译技术的原型。1956年她在第一台储存程序的商业电子计算机UNIVAC I、II上开发出B-0,之后叫做FLOW-MATIC,它导致了计算机商用语言COBOL(COmmon Business Oriented Language)的诞生。虽然Hopper有着“电脑之母”的美誉,但是传说她办公室有一个倒着走的钟,以及一面秀着骷髅头的海盗旗。

  到了六十年代,FORTRAN (FORmula TRANslating)、COBOL、LISP、ALGOL 60等现代高级语言的出现了。程序员可以用接近自然语言的程序语言编制软件,然后通过编译器转换成机器可执行的代码。由于使用精确的形式语言来定义程序语言本身,并且通过对硬件的抽象使得程序与计算机平台无关,导致高级语言生产效率大大提高,维护费用自然降低不少,计算机软件业终于得以蓬勃发展。

  好景不长。随着软件大规模的应用,程序的开发方法和管理手段逐渐无法跟上软件规模的膨胀,从而导致了软件危机的出现。就拿1963~1966年间的IBM 360系统来说,该系统有100万行的代码量,IBM每年动用5000人来维护该系统,但是,每个版本都是从上一个版本找出1000以上个错误而修订的结果,好像越改错误越多,根本没有改善的迹象。有人把IBM 360系统形容为一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深,最后仍然无法逃脱灭顶的灾难。

  人们不得不停下脚步思考,到底哪里出了问题。回想自己,每个人做事情,都是列举重点,然后细化并逐个完成。比如制造自行车,肯定是先把自行车按照功能分块,先造车架,然后是两个车轮,接着是踏板等传动装置,最后才是坐垫、车铃等零件。而制造车轮,肯定是要分别制造钢圈、钢丝、轮胎,而轮胎有分内外胎。如果软件开发能够遵循这种从大到小、逐步精确的思想,是不是能够解决这个软件危机呢?

  没错,这种结构化的抽象分析方法,导致了结构化程序设计方法的诞生。

  黄糖故事 Niklaus Wirth和PASCAL

  凡是学过一点计算机知识的人大概都知道“数据结构+算法二程序”这一著名公式。提出这一公式的瑞士计算机科学家Niklaus Wirth由于发明了多种影响深远的程序设计语言,并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。

  Wirth开发的PASCAL在数据结构和过程控制结构方面都有很多创造,比如Java中字符型、引用型,以及if-then-else、while、for等多种控制结构,都是从PASCAL里面借鉴发展而来的。可以说,现代程序设计语言中常用的数据结构和控制结构绝大多数都是由PASCAL语言奠定基础的,因此PASCAL在程序设计语言的发展史上具有承上启下的重要里程碑意义。现在你知道为什么很多计算机专业的学生都要学PASCAL语言了吧。

  1971年,Wirth基于其开发程序设计语言和编程的实践经验,首次提出了“结构化程序设计”(structured programming)的概念。这个概念的要点是:不要求一步就编制成可执行的程序,而是分若干步进行,逐步求精。第一步编出的程序抽象度最高,第二步编出的程序抽象度有所降低……最后一步编出的程序即为可执行的程序。用这种方法编程,似乎复杂,实际上优点很多,可使程序易读、易写、易调试、易维护、易保证其正确性及验证其正确性。结构化程序设计方法又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,成为程序开发的一个标准方法,尤其是在后来发展起来的软件工程中获得广泛应用。有人评价说沃思的结构化程序设计概念“完全改变了人们对程序设计的思维方式”,这是一点也不夸张的。

  黄糖故事 Philippe Kahn的Borland传奇

  Wirth开发PASCAL的初衷是为了有一个适合于教学的语言。但一经推出,由于它的简洁明了、提供丰富的数据结构和控制结构,使得程序开发大为简便,竟然大受欢迎。在C语言问世以前,PASCAL是风靡全球、最受欢迎的语言之一,不但创下了发行拷贝数最多的世界记录,而且成为大学数据结构教学的“惟一官方指定”语言。

  Phillipe Kahn是Niklaus Wirth的学生,毕业后到美国加利福尼亚州创立了Borland公司,凭借拳头产品Turbo PASCAL,当时就卖出了100多万个拷贝,成为百万富翁。而Borland公司是程序员津津乐道到程序开发工具供应商,他们从最早的Turbo PASCAL、Turbo C、Turbo PROLOG等Turbo系列,到如今的Delphi、C++ Builder、JBuilder、C# Builder系列,无一不是举足轻重的开发工具,从而在开发者心目中有着崇高的地位。

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Java咖啡馆——编写猜数字游戏(4)
· 下一篇:Java咖啡馆——大话面向对象(2)
· FrontPage10全透视教程(10)
· 学编程的人不能不看的好文章
· 轻松实现Java用户界面编程
· 用JavaScript实现利用FLASH嵌入声音(七)
· 网页经典代码(六)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077