| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3953 人关注过本帖, 1 人收藏
标题:数据抽象
只看楼主 加入收藏
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
我从来都不觉得面向对象的条条框框会阻碍程序员的学习和工作,
相反它反而能给程序员带来莫大的效益。

在评价初级和高级程序员,说的直白点初级程序员只懂的写写代码
而高级程序员则站在了另外一个角度,不光写代码,还去设计、架构一个软件。
考虑软件的复用性、扩展性。代码的可读性,可维护性。
这些设计都与模式脱不了关系,而作为学习这些东西的基础就是面向对象。

你一味的专注于技术没人说你错,但请不要在自己不懂的领域内去下伪断言,
至少现在有超过四分之三的程序员学习过你所谓的迂腐理论

对于自己学不会的东西就不要去批判,等你掌握、精通它,你才有说话的资格。
不要老是说这个理论不好、那个思想迂腐。显得无知
2012-02-11 12:34
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
迂不可及

我就是真命天子,顺我者生,逆我者死!
2012-02-11 12:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
你看你摆出一副砖家的迂腐模样,差点没把我笑晕倒,你知道吗?
在我面前鼓吹 面向对象 的,我都当作傻子, 懂了吗?

回复你,我都感觉浪费时间...

[ 本帖最后由 BlueGuy 于 2012-2-11 13:13 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2012-02-11 12:59
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
在软件工程理论界里的确有人(而且数量也不在少数)认为,面向对象是个很失败的发明。
另外很多实践主义者也表示,实践只能证明能在较少的一些领域里,面向对象能发挥一定的优势,比如图形。
所以很多现代语言也不原生支持OOP,比如 python。

理论界有部分人甚至以为(也许有些极端),OOP 是将软件工程引入泥潭的罪魁祸首。它所谓的细节隐藏,如同把人们带入了空中花园的幻境,随时可能墜身而死,却不自知。甚至认为,在没有正当理由的情况下使用 OOP,终将使开发本质上健壮的程序这个曾经认为是基础的要求化为泡影。

OOP 这个技术如此兴盛,其中也有一部分原因是它的推广能给一些人带来巨大的商业效益。一般来说,确实伴随金钱和政治的东西都比较肮脏。


我这只是提一种观点而已,并不代表上面说的我就全部赞成。总的来说,我对 OOP 持中立态度。不过也是因为我用的少,体会的不深。
不过听说,以前国际标准,尤其是互联网标准,基本上全是靠技术说话,靠实践洗礼角逐胜出者的。不过现在钱也管用了。这究竟是堕落了,还是“百花争鸣”的时代要开始了呢,确实值得想想。
2012-02-11 21:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 34楼 pangding
数据隐藏的所谓的优点 大概有以下几点:
(1)防止数据被直修改
(2)无需了解数据是如何表示的
(3)改变表示无需更改客户程序

这几点理由带有很强的主观意味:
1> 是在防止谁修改数据?有必要防止吗? 是在防着自己还是防着别人?
2> 了解了数据表示又怎么了?
3> 需要改变表示吗?什么时候会改变表示?是1年以后还是10年以后?

oop 一直在说 数据隐藏多么多么的好,却一直不说数据不隐藏的好处
数据不隐藏有以下几点好处:
1. 消除了脱裤子放屁的函数调用
2. 客户程序可以通过直接仿问数据添加自己需要的接口

数据隐藏是以 前期的 易防问/修改 为代价换来一个 可能存在的 易扩展/维护
不幸的是,大部分情况下,这个"可能"都不存在

oop 假想了一个敌人,"数据隐藏"的规则 愚弄用户

最后,我建议数据的 默认仿问为 public, 而不是 private

我就是真命天子,顺我者生,逆我者死!
2012-02-12 08:36
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
嗯。其实说 OOP 复杂,主要是它还带来继承呀,动态绑定之类的这些机制。
2012-02-12 11:10
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用pangding在2012-2-12 11:10:29的发言:

嗯。其实说 OOP 复杂,主要是它还带来继承呀,动态绑定之类的这些机制。

继承实现起来特别简单,无非就是个结构体嵌套。
一旦披上了 面向对象 的外衣,就会让人有种神秘的感觉
尤其是 Java的 什么"万物皆对象",特别容易把人带入 空中楼阁,摇摇欲坠而不自知
想入非非,却一直想不出个所以然
oop 自己也搞不清 oop 到底是什么?

我就是真命天子,顺我者生,逆我者死!
2012-02-12 11:22
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
更糟糕的是,oop 还喜欢自圆其说,以 面向过程 为借口,烘拖 oop的优点。
随后又伴随着各种各样的 设计模式 来掩盖 oop的愚蠢。
原本很简单的问题,一旦陷入 面向对象、设计模式的圈套,就会迟迟无法解决
面向对象在语言级上确实提供了不少方便的操作,仅仅因为这点语言级方便就 胡乱的创造了一个空泛的理论,
完全偏离了 程序 = 数据结构 + 算法 这个轨道,华而不实,简直滑稽。

说句实话,c++ 繁琐的细节,又臭又长,假想敌太多了。
而且还不见实际的效益,我真招架不住

我想不只是我一个,很多程序员都被这些假想敌吓倒了,尤如被 非典 吓倒一样
杞人忧天

我个人觉得学习/使用 c++,最好以c为基准,然后再从c++这个垃圾堆里淘出自己想要的东西(即使淘不到也没关系)
组装成一个适合自己的程序。而不是生搬硬套 面向对象,根本不存在什么 面向对象。

软件面对的是大量的巨型数据结构,一个微小的决策错误都会增加特别繁重的工作量
一定要精挑细选自己所需要的特性

我的c++也是入门级别,在pangding 面前班门弄斧了

[ 本帖最后由 BlueGuy 于 2012-2-12 12:29 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2012-02-12 11:29
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用BlueGuy在2012-2-12 11:29:55的发言:

更糟糕的是,oop 还喜欢自圆其说,以 面向过程 为借口,烘拖 oop的优点。
随后又伴随着各种各样的 设计模式 来掩盖 oop的愚蠢。
原本很简单的问题,一旦陷入 面向对象、设计模式的圈套,就会迟迟无法解决
面向对象在语言级上确实提供了不少方便的操作,仅仅因为这点语言级方便就 胡乱的创造了一个空泛的理论,
完全偏离了 程序 = 数据结构 + 算法 这个轨道,华而不实,简直滑稽。

说句实话,c++ 繁琐的细节,又臭又长,假想敌太多了。
而且还不见实际的效益,我真招架不住

我想不只是我一个,很多程序员都被这些假想敌吓倒了,尤如被 非典 吓倒一样
杞人忧天

我个人觉得学习/使用 c++,最好以c为基准,然后再从c++这个垃圾堆里淘出自己想要的东西(即使淘不到也没关系)
组装成一个适合自己的程序。而不是生搬硬套 面向对象,根本不存在什么 面向对象。

软件面对的是大量的巨型数据结构,一个微小的决策错误都会增加特别繁重的工作量
一定要精挑细选自己所需要的特性

我的c++也是入门级别,在pangding 面前班门弄斧了


装X
2012-02-12 19:05
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
面向过程程序设计中,编程时需要根据计算机的结构去思考问题,而并不是按照要解决的问题的结构去思考,程序员必须在机器模型(解空间)和实际要解决的问题(问题空间)之间建立联系。程序员必须努力进行这之间的对应,这实际上是程序设计之外的任务,它使得程序难以编写且维护费用昂贵,并且作为一种副效应,导致了面向对象(OOP)的产生,OOP针对要解决的问题建模(允许表示问题空间中的各个元素),这样就让程序员可以不必考虑对解空间之间的联系,减轻了程序员的负担,从而前进了一大步。

My life is brilliant
2012-02-19 17:14
快速回复:数据抽象
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012610 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved