刚才看了PercyLee的《面向对象介绍(1)---历史上(大三上)》,突然觉得有点同感,所以想把我的一些关于编程的观点写写。
一、复用就是编程的历史 :
(1)汇编的年代: 在十几年前,计算机编程的语言就是汇编,程序员要做的就是把某个地址的数据MOV到AX,BX等CPU的地方,然后运行某些如ADD等的指令,然后再MOV到某些地方。当人们发现某些动作是经常要做的,就用一个标记LABLE来标记好,要用的时候只要调用这个LABLE就可以了。如果人多了,就每人一个文件,然后一起编译就可以了。那时候的640K可以说是用之不竭的了(不经过那个年代的人是无法相信的)。些得好得LABLE,你就是好得程序员。
(2)C的年代:人类已经对那些在内存MOV来MOV去的工作厌烦了,他们中的科学家喜欢的是方程,过程,所以他们规定了某些规则来解析他们的类似数学方程的字符。而C在UNIX的强大支持下,完全的做了PASCAL,FORTANCE等其他语言的老大。不记得是哪个懒惰的程序员,发现自己的工作总是重复的做某些工作,所以把这些动作自己总结了一下,写成不同的文件,这样当其他人还在重复工作的的时候,他就可以有许多的时间去过他的现实的生活了。后来别人也开始用他的文件,大家一起用,就象一个图书馆一样,或者叫他LIBRARY吧。那些把函数库写得好得,就是好得程序员。
(3)JAVA的崛起:C的函数库是不断的完善,当随着计算机要处理的数据的扩大(以前的数据都是跟着程序走的变量),C要处理的数据加大,而这些数据所对应的程序却是一样的,完全没有必要在内存为不同的数据保存相同的程序,那是否可以在不同的数据上对应相同的程序呢?一个美国人做了,他把他做的东西叫做C WITH CLASS,在内存看来,那些不同的东西(OBJECT),其实他们的执行过程是用指针的方式,指向同一个地址的。C的影像实在太大了(有一大批的程序员是用C的),所以为了让C WITH CLAS流行,只好就叫他C++了,当这也让他保留了许多的C的特点(有些人认为好,有些人认为不好),所以后来出现的JAVA就是为了剔除这些所谓的“弱点”,这个C++的简化版本在WEB的浪潮下,快速的发展开来。
这些OO的工具是从对象的观点出发的,就象五行学一样,OOAD也是一个观点,认为每个对象都有一定的功能,谁能够把功能封装得好,就是好得程序员。
二、总结:可以看出编程其实就是用指令来控制数据,而这些动作有时候是可以用完再用的,或者叫他复用吧,而要复用得好,就需要分析,能够从比较抽象的高度看问题,发现那些东西是可以复用的,其实抽象的东西总是正确的,也是行少变动的。比如说:把“陈小明会后跳投篮”抽象成“某人会打篮球”,继续抽象成“动物会活动”。显然越是明细的东西可变动是越大的。
三、对OOAD的看法:许多人把学面向对象放到了如何学C++的语法,JAVA的语法等问题上,其实这些是错误的。学了又如何呢?只能说明你的编码能力很强,但你会觉得自己是个空有武功的没脑人,不知道自己能干什么,或者说应该怎么做。其实OOAD才是正真的本领,从抽象的高度看问题,逐渐细化,那些抽象的看问题的对象就是祖先类,而逐渐细化的对象就是子孙类了。