随笔 - 6  文章 - 8  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

一种语言代表了一种思维,而思维决定了问题的解决方式。

 

从程序设计语言出现到现在已经经历了四代。大多数高级语言都对应到第三代或四代程序设计语言。按其主要支持的编程模型(思维模式)分类,大致可以分为如下类型

1 过程型:这类语言把应用抽象为序列化的操作步骤,其典型代表如PASCALC等。

2 函数型:这类语言把应用抽象为函数(按定义,函数是从一个域到另一个域的映射);它们试图把问题分解为集合和集合间的函数关系。典型代表是LISP

3 逻辑型:这类语言把问题抽象为事实与规则的结合,试图通过逻辑演算解决实际问题。典型代表是PROLOG

4 面向对象型:这类语言从上世纪80年代后迅速发展,这类语言试图将实际问题抽象为独立的对象以及对象间的交互,典型代表是早期的SmallTalkEiffel

5 面向数据结构型:这类语言将问题抽象为对结构化数据的操作,例如现在常用的SQL

 

作为一个诞生与上世纪80年代初期的编程语言,C++被广泛的认为是一种支持面向对象的语言;但是,我认为C++的伟大之处却更多的在于(除了所提供完备的面向对象支持)它同样提供了C的面向过程的编程模型以及只有少数高级语言能支持的范型编程(我更喜欢叫它面向算法的编程)。在实际的应用过程中,我们往往需要不同层次的抽象,C++所支持的广泛的编程模型为我们提供了强大和灵活的工具,使得我们在设计和实现时能自如的选择不同的模型,以最合理的(组合)方式解决问题。

 

不可否认,在当今的程序设计中,面向对象已经基本上是一统江湖,但它往往并不是最合理的选择;例如在针对协议栈的开发中,使用面向过程的模型往往优于使用面向对象的模型(或许这也是为什么主流的电信设备供应商坚持使用C的原因?);而在针对算法进行抽象时,使用面向对象的思维模式几乎完全是不可行的(算法和对象间的不同之处是显而易见的);如果机械的运用面向对象思维,只能使最终产品的质量、可维护性、可读性下降。

 

或许有人会问,那么应该如何选择抽象方式呢?我觉得这个应该是因人和问题的不同而不同的,关键是在使用C++的过程中,多从这些方面进行思考、总结,以体会采用不同模式解决问题的优缺点,努力使用最合理的方式(或组合)对问题进行抽象并加以解决。我也常常为这些种种选择而迷惑,因此在这儿也希望那些已经到了“不惑”层次的哥们多多指教。

 

当然,从另一方面来说,越多的选择往往意味着越难的选择,这或许也是为什么现在这么多人趋骛与更单纯、更简单的JAVAC#的原因吧;但是当我们真正理解并掌握C++提供的这些编程模型时,我想我们会更加坚定当初选择C++的信念;D

 

时间仓促,不正之处敬请指教。

posted on 2007-03-28 14:29 Neal 阅读(1178) 评论(1)  编辑 收藏 引用

FeedBack:
# re: C++的编程模型 2007-03-29 00:58 小熊
学习学习了  回复  更多评论
  

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