java 高级程序员_通向高级程序员之路

通向高级程序员之路:论程序设计方法

文/扬老师

如果你是初学者—————-请不要阅读;

但有志成为中高级程序员——–请务必阅读;

如果你是中级程序员————请务必阅读;

如果你高级程序员————–请批评指正。

一、计算机硬件环境对软件设计方法的限制

计算机的发明到现在已经60年了,计算机程序设计方法也伴随着计算机

硬件技术的提高而不断发展。硬件环境对软件设计既有严重的制约作用,也有积极的推动作用。

在我的大学母校(此处删除6个字),数学系的一些老师,有幸成为了我国第一代的计算机DIY一族。呵呵,不要以为是组装PC机呦,他们组装的可是小型机。一人多高铁皮柜大小的主机,加上纸带机(后期改进为读卡机),组装好后,除了供学校自己的科研使用外,还在全国各地销售了十几台。当时(七十年代)一台的售价是10几万元人民币,如果换算到今天,相当于价值大约为100多万元,非常高档的小型计算机了。下面大家猜猜,这么高档的计算机,它的内存是多少那把嘴闭好了,我要公布答案了)—— 4K。

一块50公分见方的内存板,

插入到主机箱中,好了—— 1K;

再插一块内存板,好了—— 2K;

再插一块内存板,好了—— 3K;

再插一块内存板,好了—— 4K;

再……不行了,插不起了,太贵了!这就是当时的环境。这样的环境下,用什么写程序那只有机器码了。先用汇编写,然后翻阅手册手工改写为机器码,然后打卡或穿纸带,输入运行。可以想象,在当时的条件下,什么叫好的程序那叫优秀的程序那 技巧!

程序设计的最初始阶段,是讲究技巧的年代。如何能节省一个字节,如何能提高程序运行的效率,这些都是要严肃考虑的问题。而所谓的程序的易读性,程序的可维护性根本不在考虑范围之内。

今天,35岁以上的学习过计算机的朋友可能都使用过一种个人计算机——APPLE-II(中国也生产过这种计算机的类似产品“中华学习机”)。主频1M,内存48K(扩展后,最多可达到64K)。我就是使用这样的计算机长大的

同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头……方法有(函数):能跑、能闻、汪汪叫……如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小……。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。

六、组件(COM)程序设计

有了面向对象程序设计方法,就彻底解决了代码重用的问题了吗是:否!硬件越来越快,越来越小了,软件的规模却也越来越大了,集体合作越来越重要,代码重用又出现的新的问题。 我用C++写的类,不能被BASIC重用——不能夸语言;你要干什么,想重用我的代码,这样你就看见了我的设计思想——只能在源程序级别重用,不能在二进制级别(可执行代码及)重用。

我耗尽毕生的精力,写了一个包罗万象的类库,但没有人用。因为他们说:你这个太大了,我的程序只有1K,你却给我一个 10000MB 的库——MFC 的尴尬。

太好了,我终于找到了程序中的一个BUG,已经修改完成,而且是只改动了一个字节。接下来我要重新向我的用户分发新的版本,我的用户有……10万个——升级的非鲁棒性,不是我分发累死了,就是用户重新安装累死了。(鲁棒:robust。意为强壮性的,平顺的,顺滑的…..鬼知道是哪个不懂计算机的人翻译的这个词汇。)

用户甲要求我的软件窗口上下分割,用户乙要求我的软件窗口左右分割……我需要在我的软件基础上,派生出100个类型,可怎么办呀怎么维护呀—-在脚本的支持下,实现同一程序的的灵活配置而重用,问题迎刃而解了。

我是个老板,你知道我有多痛苦吗下的员工向我提出加工资的要求,我不得不答应呀。因为如果这个员工跳槽了,他的代码要维护起来有多难!!!——现在好啦,我要求员工统统用组件写模块,想加工资没有,威胁我要走走吧,这个月的工资也不发了。反正用组件写的代码,我可以很容易地进行包容和聚合实现维护。(老板的福音,程序员的悲哀)。

还有好多那,现在想不起来了……

COM程序设计方法,就是解决以上问题的一个方式。有很多朋友觉得COM非常复杂难懂,不想学习了。你一定学习过程序设计的最基本的方法(非结构化设计:汇编、gwBasic……),然后,你又学习了结构化程序设计(C、Pascal……),然后,你又努力学习并熟练掌握了面向对象的程序设计方法(C++、Delphi、Java……),那么不要怕,要有信心去学习组件程序设计,它只是一个设计方法和思想,并且是目前较高级的方法,如果不掌握,就太可惜了。

学习了结构化程序设计,你就会“藐视”那些不遵守结构化设计思想而写出的代码;

学习了面向对象设计,你就会“嘲笑”那些为找BUG而晕头转向的程序员;

同样,学习了组件程序设计,你就会站在更高的层次看待程序设计。

七、结束语

文中所讨论的技术和观点,适合于大多数情况下的程序设计,而对于特殊的应用的(驱动开发,嵌入式开发, 络通讯,实时视频……),这些领域中,由于硬件环境的限制和极限效率的要求,有些观点就不合适了,需要具体情况具体分析。另外就是对于程序设计的初学者,可以先不考虑这么多问题,以掌握基本技巧方法和思想为要。

芳儿宝贝.我爱你

76013ee94ed31eda3d03108da725efca.png

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93032 人正在系统学习中 相关资源:百度图片疯狂下载器-专业指导文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月12日
下一篇 2021年1月12日

相关推荐