无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

程序设计语言层次结构

      对任何程序设计语言,语法当然就是基本规则,这如同武学中的一招一式,谈不上扩展与境界,关键是要记住并熟练,让一招一式都标准到位,这也是之后境界提升的基础。

C语言层次:语法 -> 计算过程
      在C的境界里,没有高层的东西,可以说就是蛮干式的技术。要做什么,就是一步一步按各个步骤来,通过一层一层的关系,终于从最初的输入实现到了最终的结果,所以任务也就完成了。
      这个原理很简单,所以做法也是首先能想到的,最基本的。这在项目简单不复杂时确实很好,但是当系统庞大复杂时其缺陷也就出现了:
对一个庞大的系统,中间的可能性也就多了,要考虑的情况也就多了。如果还是按这种见招拆招的方式,那么主流程势必淹没在无穷无尽的if-else之中,一方面,写系统的人就容易出现顾此失彼考虑不周的错误;而对后来的维护者,就如同是在迷宫中漫游一般的噩梦。即使硬着头皮忍受煎熬读这些代码,就是有深厚功力的人,抓到了主藤蔓终于没有被迷失,那也是消耗了很多的脑细胞能暂时理解了作者的思路。不过遗憾的是:回头即忘了。下次查找问题或者修改维护时基本上又需要重头再来。
      C武功的这种缺陷也就催生了后面的设计方式。
     小结:C武功精准有效,易于掌握。然而面对复杂问题时会感觉头绪纷乱,条理不清,无论是对开发者还是维护者,都是令人头痛的问题。

C++语言层次:语法 -> 对象 -> 算法
     C++的境界比C的境界就高了一层。C++思想认为:由于问题域很纷杂,如果用一条流水线来完成这个产品,这个流水线就会很长而且还会引出很多分支,这实在是一种很不利于开发管理的设计。所以我们可以在流水线上加入一些“工厂”。这些工厂就是一个一个的类,他们接受上流工厂的产品,然后按自己的流水线加工,加工好以后再把自己的产品送到下流的工厂。而这些工厂就是一个一个的对象。因为有了工厂,我们眼中就不再是像乱麻一样的流水线了,而是几条清晰的流水线联系着若干工厂,这样就清晰多了,也非常易于理解了。
      在C++世界里,我们把这种思想叫做面向对象,即把问题设计为一个一个的对象域。这样,对复杂的问题,就能较好的整体把握,各个击破了!

Java语言层次:语法 -> 对象 -> 算法对象
      Java武功的思想基本与C++的相同,两者都是面向对象,不过其要求的是不允许任何流水线暴露在外,也就是“一切皆是对象”。而C++为了兼容C,可以允许存在全局变量、全局函数等。

 

      然而,在程序设计中,还有一个问题:回调。是的,有许多种情况是程序员不能预估事情触发的时刻的,只能说明发生了这样的事情时该怎么办。在程序设计领域,应对这样的突发事件,我们只能先向操作系统注册,告知他如果发生该事情,请执行这个操作。这就叫回调。
而应对回调,C/C++本身没有提供任何的设施支持,需要我们定义每一个关注的事情。然而Java与此不同,因为Java是在虚拟机环境下运行,支持跨平台,所以其提供有完备的支持设施。任何你关注的事情,只要去找到它提供的设施进行扩展实现即可。也正是这个原理,所以你也就自然发现Java武功的“面向对象”思想更加彻底。或许,这也是Java与C++在境界上的最大区别了。

posted on 2012-03-30 16:47 Tim 阅读(544) 评论(0)  编辑 收藏 引用 所属分类: C/C++语言


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2017年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜