论坛首页 综合技术论坛

面向对象之弊,面向过程之优

浏览 49260 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-07-16  
truekbcl 写道
抛开比较累人的原生类型,c++完美的结合了这些范式。还是用c++吧:D

结合的特性太多,就导致了一门混乱的语言。当你有天发现,其实只有一小部分特性是你需要的时候,你一定经历过非常痛苦的过程。有时候太多的选择和没有选择一样,都是很糟糕的选择。
0 请登录后投票
   发表时间:2010-07-16  
楼上这些同学(包括楼主自己)都在讨论OO或PO具体语法的对比。但楼主所提问题。从范畴上讲,显然远超具体语法这个层面。

所以这事儿不能细说,只能从实际应用效果来判断。到目前为止,OO 最成功的应用就是在 UI 上应用,其他领域似乎没有明显表现出相对 PO 的优势。

不少牛人,比如Linux之父,都是强烈反 OO 的。
现在Google最新推出的 Go 语言,OO特性已经不明显(只有不支持继承的类,实际上跟c语言的struct差不多)。Go语言的作者也都是计算机领域的资深牛人,Go语言的语法显然是经过深思熟虑的。
0 请登录后投票
   发表时间:2010-07-16  
我不认同你关于static的观点。假设Person类的所有实例都有eat()方法,难道Person类本身不可以有?你可以不仅仅把Person的实例当做对象,Person类型本身也是对象,只不过不是语言层面可以实例化的对象。所以static可以看做是该类型对象固有的属性或行为。

static的东西,可以看做是共性,而不需要各实例去分别实现。比如Collections类,它集中了所有collection的特征,所以它就应该有个static的reverse()方法。

我认为OO是个见仁见智的东西,看你怎么理解。我的看法是并非只有可以new出来的才叫对象,Person类的实例p1是个对象,Person也可以看做是对象。
0 请登录后投票
   发表时间:2010-07-16   最后修改:2010-07-16
我想多看看优秀的开源代码是有益于理解OOP的。

工作中接触的同事们,很多都有搞C、C++经历的,所以它们写的java代码都是贫血对象——就是说领域对象本省总是没有任何逻辑,逻辑都放到**Manager、**Service里面去了。这没办法,‘一切皆对象’的思想并没有普及。到处都是面向过程的java代码。
0 请登录后投票
   发表时间:2010-07-16  
piao_bo_yi 写道
truekbcl 写道
抛开比较累人的原生类型,c++完美的结合了这些范式。还是用c++吧:D

结合的特性太多,就导致了一门混乱的语言。当你有天发现,其实只有一小部分特性是你需要的时候,你一定经历过非常痛苦的过程。有时候太多的选择和没有选择一样,都是很糟糕的选择。

特性多并不是导致混乱的根源,感觉混乱一般是因为自己不理解。特性的增加是依据程序设计需求而提出的,现在程序设计所需要的特性越来越多,并不是一小部分特性就够了。当然,具体到个人,有可能只需要一小部分就够了。所以简单语言复杂语言都有存在的道理。最后,多选择是必然的,远不是单一选择能比的,代价就是必须得付出更多的努力。我倒是认为单一选择就是没选择。
0 请登录后投票
   发表时间:2010-07-16  
想想,用对象来组成一个过程....
0 请登录后投票
   发表时间:2010-07-16  
xuby 写道
楼上这些同学(包括楼主自己)都在讨论OO或PO具体语法的对比。但楼主所提问题。从范畴上讲,显然远超具体语法这个层面。

所以这事儿不能细说,只能从实际应用效果来判断。到目前为止,OO 最成功的应用就是在 UI 上应用,其他领域似乎没有明显表现出相对 PO 的优势。

不少牛人,比如Linux之父,都是强烈反 OO 的
现在Google最新推出的 Go 语言,OO特性已经不明显(只有不支持继承的类,实际上跟c语言的struct差不多)。Go语言的作者也都是计算机领域的资深牛人,Go语言的语法显然是经过深思熟虑的。

老大,你这句完全是误传,他批评的是C++的语言模型...不是反对OO。
0 请登录后投票
   发表时间:2010-07-16  
truekbcl 写道
piao_bo_yi 写道
truekbcl 写道
抛开比较累人的原生类型,c++完美的结合了这些范式。还是用c++吧:D

结合的特性太多,就导致了一门混乱的语言。当你有天发现,其实只有一小部分特性是你需要的时候,你一定经历过非常痛苦的过程。有时候太多的选择和没有选择一样,都是很糟糕的选择。

特性多并不是导致混乱的根源,感觉混乱一般是因为自己不理解。特性的增加是依据程序设计需求而提出的,现在程序设计所需要的特性越来越多,并不是一小部分特性就够了。当然,具体到个人,有可能只需要一小部分就够了。所以简单语言复杂语言都有存在的道理。最后,多选择是必然的,远不是单一选择能比的,代价就是必须得付出更多的努力。我倒是认为单一选择就是没选择。

难道你希望我们都得有数十年经验才能很好的编程?
0 请登录后投票
   发表时间:2010-07-16  
piao_bo_yi 写道
truekbcl 写道
piao_bo_yi 写道
truekbcl 写道
抛开比较累人的原生类型,c++完美的结合了这些范式。还是用c++吧:D

结合的特性太多,就导致了一门混乱的语言。当你有天发现,其实只有一小部分特性是你需要的时候,你一定经历过非常痛苦的过程。有时候太多的选择和没有选择一样,都是很糟糕的选择。

特性多并不是导致混乱的根源,感觉混乱一般是因为自己不理解。特性的增加是依据程序设计需求而提出的,现在程序设计所需要的特性越来越多,并不是一小部分特性就够了。当然,具体到个人,有可能只需要一小部分就够了。所以简单语言复杂语言都有存在的道理。最后,多选择是必然的,远不是单一选择能比的,代价就是必须得付出更多的努力。我倒是认为单一选择就是没选择。

难道你希望我们都得有数十年经验才能很好的编程?

难道你认为几年就能很好的编程?
0 请登录后投票
   发表时间:2010-07-16  
piao_bo_yi 写道
xuby 写道
楼上这些同学(包括楼主自己)都在讨论OO或PO具体语法的对比。但楼主所提问题。从范畴上讲,显然远超具体语法这个层面。

所以这事儿不能细说,只能从实际应用效果来判断。到目前为止,OO 最成功的应用就是在 UI 上应用,其他领域似乎没有明显表现出相对 PO 的优势。

不少牛人,比如Linux之父,都是强烈反 OO 的
现在Google最新推出的 Go 语言,OO特性已经不明显(只有不支持继承的类,实际上跟c语言的struct差不多)。Go语言的作者也都是计算机领域的资深牛人,Go语言的语法显然是经过深思熟虑的。

老大,你这句完全是误传,他批评的是C++的语言模型...不是反对OO。

并非误传,你自己可以google相关中英文信息。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics