注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

读《function/bind的救赎(上)》有强感  

2012-07-16 19:22:12|  分类: 酱油类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转自:http://infogo.info/108.html
一口气。。。没读完孟老大的《function/bind的救赎(上)》,因为我实在是太震惊了,太激动!!!一直以来对C++最大的困惑终于得到了“完美”的解释。
一直学习C++,学习面向对象编程,学习抽象,封装,继承,多态但越学越觉得面向对象并不像传说中的那样是对现实世界的完美映射:一件事通过各个对象之间以消息传递的方式来相互协作,最后得以完成。最大的困扰来自于消息传递这个概念,一直无法理解,觉得所谓的面向对象不过是面向过程的一直抽象而已:本质还是过程调用,唯一的改变不过是由原来的模块内过程调用转化为类内过程调用,这个和现实社会的消息传递方式相去甚远!!!
比如说现实社会中一群人在一起开会,每一个人都是一个对象,虽然都是人但是从不同的类中实现,这些类可能是老师,学生,官员,警察等等。现在主持人希望对象中所有教师站起来,现实社会中为了达到这个目的,只需要主持人对着话筒说一句:“请所有的老师起立”就可以了,这就完成了消息传递的过程,而在座的各个对象在接受到这个消息以后进行自我判断,如果自己是老师就站起来,不是就保持沉默,简单而完美。
但是如果抽象成C++程序要怎么做呢?我们首先要为每一个身份类设计一个验证身份的成员函数,然后主持人再按个的去调用每个对象的接口,关键是这些对象的接口还可能不一致,调用方式也千差万别,这样的消息传递机制实在是太坑爹了,完全没有美感。
上面的问题一直困扰着我,我也一直觉得是自己的水平不够所以还无法认识到C++对象间消息传递的精髓,直到我看到了孟老大的这篇文章!
下面节选一段我觉得非常精辟的段落(估计写到这里的时候,孟老大也一定为自己的简介而欢欣鼓舞):

6. 实际上C++的静态消息机制还引起了更深严重的问题——扭曲了人们对面向对象的理解。既然必须要先知道对象的类型,才能向对象发消息,那么“类”这个概念就特别重要了,而对象只不过是类这个模子里造出来的东西,反而不重要。渐渐的,“面向对象编程”变成了“面向类编程”,“面向类编程”变成了“构造类继承树”。放在眼前的鲜活的对象活动不重要了,反而是其背后的静态类型系统成为关键。“封装、继承”这些第二等的特性,喧宾夺主,俨然成了面向对象的要素。每个程序员似乎都要先成为领域专家,然后成为领域分类学专家,然后构造一个完整的继承树,然后才能new出对象,让程序跑起来。正是因为这个过程太漫长,太困难,再加上C++本身的复杂度就很大,所以C++出现这么多年,真正堪称经典的面向对象类库和框架,几乎屈指可数。很多流行的库,比如MFC、iostream,都暴露出不少问题。一般程序员总觉得是自己的水平不够,于是下更大功夫去练剑。殊不知根本上是方向错了,脱离了对象范式的本质,企图用静态分类法来对现实世界建模,去刻画变化万千的动态世界。这么难的事,你水平再高也很难做好。

先这样吧,文章还没看完,估计C++是准备用function/bind通过函数绑定的方式来实现孟老大口中所述的动态消息传递机制了。期待C++的逆袭!
  评论这张
 
阅读(818)| 评论(6)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017