觉得自己基础一般,向高手看齐,一时达不到,向叶子文文学习感觉还能达到,还是抓基础的基础,每天进步一点点吧
技术扎实了,心也就扎实了。
同学们我们将要来学习一下面向对象这个概念中所涉及的一些基本的概念,因为这些概念在实际运用时,必须深刻理解清楚,所以在这一篇我将用大量的现实生活的实例帮助你们理解这些概念。
谈到面向对象,就不得不说说计算机语言的发展历史,从大体上看,计算机语言主要经过了4次变更,3次跨越:
机器语言
机器语言通常称为二进制代码语言,也称cpu的机器语言,是第一代的计算机语言。它是一种cpu的指令,是cpu可以识别的一组由1和0序列构成的指令 码,不需要进行任何翻译。(如,cup分析指令后分配内存及调配其他计算机设备一同响应这条指令)。用机器语言编程序,就是从实用的cpu的指令系统中挑 选合适的指令,组成一个指令系列每台机器的指令,其格式和代码所代表的含义都是硬性规定的。机器语言对不同型号的计算机来说一般是不同的,下面是两个二进 制代码及所代表的指令。指令部份的范例: 0000 代表 加载(LOAD) 0001 代表 储存(SET)
下面我们来说说机器语言的缺点:
1.大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。
2.程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
3.由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。
4.因为它的书面形式全是"密"码,所以可读性差,不便于交流与合作。
5.因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。
正因为这些弊端造成当时的计算机应用未能迅速得到推广,在上世纪六七十年代出现了第一次跨越,汇编语言的出现。
汇编语言
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个 “汇编器”来把汇编语言原文件汇编成机器可执行的代码。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号 (Label)代替地址码。这样用符号代替二进制语言,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。汇编语言比机器语言易于读写、调试和修 改,同时具有机器语言全部优点。
汇编语言也有一些缺点:因为使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言 翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件,在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖 于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。也就是说,汇编语言开发的系统对计算机硬件的要求是非常高的,很可能你开 发了一套用汇编语言开发的系统在intel的cup上可读取,在AMD厂家的cup下就无法识别。
下面是汇编语言下的指令代码实例:
0111 1111 127 7F DEL (delete) 删除
0001 1000 24 18 CAN (cancel) 取消
可以看出来这些是由二进制和一些符号组合组成了汇编语言,汇编语言的可移植性差,科学家开始慢慢研究起高级语言,b语言出现了。
高级语言之面向对象
1967年著名的计算机科学家丹尼斯·里奇(Dennis Ritchie)进入贝尔实验室工作。贝尔实验室是当时世界上最有创造力的地方之一,著名的C语言、C++语言和Unix操作系统都诞生于此。一开始,里 奇和他的同事肯·汤普生开始研究DEC PDP-7机器,但是在这个机器上写程序很困难,只能用很底层很高深的汇编语言。于是汤普生设计了一种高级程序语言,并把它命名为B语言。 但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,因为他的妻子的第一个字母是B。但是由于B语言本身设计的缺陷,使他在内存的 限制面前一筹莫展。1973年,里奇决定对B语言进行改良,他赋予了新语言强有力的系统控制方面的能力,并且新语言非常简洁、高效,里奇把它命名为C语言,意为B语言的下一代。
为了在全世界面前展现C语言强大的能力,里奇用C语言把Unix操作系统重写了一遍,这就是Unix第三版。而之前的第二版是用B语言开发的。1977 年,为了推广贝尔实验室开发的Unix操作系统,里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》,使C语言再向前跨出一大 步,各种计算机都开始支持C语言。自c语言面世以来,c语言有很多的版本,1989年,美国国家标准研究所制定了Ansi标准,将各种c语言的版本进行优 化筛选统一规范,我们现在所学习的c就是标准规定后的。
那么c语言都有哪些优点呢?
1.结构化的程序设计语言:层次清晰,便于按模块化方式组织程序,易于调试和维护。
2.语句简洁:学习时入门相对容易,C 语言很好地总结了其他语言提出的程序库概念。
3.功能强大:既可用于系统软件的开发,也适合于应用软件的开发。
4.移植性好:只要对这种语言稍加修改,便可以适应不同型号机器或各类操作系统。
至于c的缺点,除了面向过程这门语言本身的缺陷外,就是在所得即所见方面存在很大的问题,日后我们深入学习界面开发时,会体会到这个缺点。紧追c语言其后的还有很多语言,但是就发展的规模来看,我们来说一说c++。
c++是直接从 C 语言发展过来的,当时不是叫做C++,而是C with class,这是把它当作一种C语言的有效扩充。由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有 两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自 然的想法就是让C++从C语言继承过来,但是我们的Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从 Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了//注释,从Ada得到了模板、名 字空间,从Ada、Clu和ML取来了异常。 1983年8月, 第一个C++实现投入使用,1998年11月,c++ISO标准被批准。很快,开发者和用户厌倦了如Dos下的控制台操作,人们开始要求从系统乃至软件的 外观上给视觉上带来新的冲击,所见即所得的开发语言出现了。
高级语言之面向过程
随着 Windows 3.0 的推出,越来越多的开发商对这个图形界面的操作系统产生了兴趣,大量的Windows应用程序开始涌现。但是,Windows 程序的开发相对于传统的DOS有很大的不同,开发者必须将很多精力放在开发GUI上,这让很多希望学习Windows开发的人员却步。1991年,微软公 司展示了一个叫Thunder的产品,所有的开发者都惊呆了,它竟然可以用鼠标“画”出所需的用户界面,然后用简单的BASIC语言编写业务逻辑,就生成 一个完整的应用程序。这种全新的“Visual”的开发就像雷电(Thunder)一样,给Windows开发人员开辟了新的天地。这个产品最终被定名为 Visual Basic,采用事件驱动,Quick BASIC的语法和可视化的IDE。Visual Basic 1.0带来的最新的开发体验就是事件驱动,它不同于传统的过程式开发。同时,VBX控件让可视化组件的概念进入Visual Basic。Visual Basic 1.0是革命性的BASIC,它的诞生也是VB史上的一段佳话。 BASIC是微软的起家产品,目前的最新版本是VB 2008 Beta2(VB9)中文版。
Basic 实际上是一个短语的缩写,这个短语就是 Beginners all_purpose symbolic instruction code ,其中文意思为“初始者通用符号指令代码语言”。 Visual 意即可视的、可见的,指的是开发像Windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。
Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希 望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保 障。对于用户的这种要求,传统的编程语言显得无能为力。SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且 开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都心生感叹:噢,这正是我想要 的!于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。 据说java的工程师最初的构想是在咖啡间一边喝咖啡一边聊出的灵感,所以java的 标志会带有一个装满咖啡的杯子的图标。
到了1997年,java已经发展成一定的规模,占据了很多c和VB的微软公司的市场,微软紧追其后,在1998年推出了VC++,想 夺回丢失的客户,但是VC++一直没有盖过java的势头,Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明 显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计 算和移动电话(比如日本发明的Java电话).
在2000年的6月,微软的当时的CEO贝尔盖茨推出了".net"架构思想,及让任何人在任何地方都能使用.net访问到他想得到的数据。2002年,C#1.0 出现了,它的出现让微软终于有和java抗衡的利器了。 微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设 计者从C++继承的可选选项方面比Java要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能 挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对 Java的反击."
其实c#的前身是1998年12月,微软启动了一个全新的语言项目——COOL,这是一款专门为CLR设计的纯面向对象的语言,历时半年有余,1999年 7月份,微软完成了COOL语言的一个内部版本。直到2000年2月份,微软才正式将COOL语言更名为C#。C#更象Java一些,虽然微软在这个问题 上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高。
直到今日,世界上还是有很多种语言,至于谁优谁劣,就看用这些语言编程的我们了,我认识的一些朋友因为在从事很片面的语言,反而薪酬待遇很高,呵呵!用最 俗的结束语结束本小节“不管white cat or black cat ,能找到老鼠的才是好猫。”下节课,我们正式进入面向对象概念的学习。
--------------------------------------本博客部分历史数据摘自百度知道-------------------------------------------