当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-12 10:39 
头像

注册: 2007-05-05 23:11
帖子: 694
送出感谢: 2
接收感谢: 0 次
见过的大型程序的源码有:
1. 面向对象的,C++实现(如Audacity等大多数程序)
2. 面向对象的,纯C实现(如Gimp等GTK+程序)
3. 非面向对象的,由巨多的C函数构成(如语音软件Sphinx3 [http://en.wikipedia.org/wiki/CMU_Sphinx])。

我自己的经验,写稍微有点规模的程序,使用面向对象的方法都要比基于过程的方法方便得太多了。
不使用面向对象方法,相当于抛弃了设计模式等各种有效的可复用设计。

有些大型软件选择完全不使用面向对象方法,难道仅仅是因为历史原因吗?

另外不太明白用纯C实现面向对象的优势何在。虽然也许提高了些执行效率和可移植性,但大大增加了开发难度。像GTK+程序,开发速度应该比效率和移植性更重要吧?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-12 10:43 
头像

注册: 2007-02-02 18:14
帖子: 30702
系统: debian sid
送出感谢: 1
接收感谢: 34
母鸡倒


_________________
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-14 12:10 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
I hate OOP


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-14 12:21 

注册: 2010-09-27 12:59
帖子: 2061
送出感谢: 0 次
接收感谢: 0 次
不了解。
待解惑。


_________________
生活里,有很多转瞬即逝,像在车站的告别,刚刚还相互拥抱,转眼已各自天涯。很多时候,你不懂,我也不懂,就这样,说着说着就变了,听着听着就倦了,看着看着就厌了,跟着跟着就慢了,走着走着就散了,爱着爱着就淡了,想着想着就算了。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-14 20:20 

注册: 2008-02-01 17:18
帖子: 106
送出感谢: 0 次
接收感谢: 0 次
面向对象仅仅是一种思想,就是抽象数据类型+多态,是一种从人的角度去分析问题的方法。
接近底层处理和硬件打交代的时候,就不得不从机器的角度去思考。在这些地方使用面向对象就显得不合时宜, 硬要过多的抽象分层,更会使得整个设计不直观。

面向对象与编程语言无关,用C也可以很好的实现面向对象的设计思想。
有人喜欢用C实现面向对象,可能他们觉得C++是一个实在糟糕的所谓内嵌面向对象机制的编程语言,而java速度非常不给力,object-C以及smalltalk支持的库相对少。

以上纯属个人看法,希望有人指正。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-11-17 13:47 
头像

注册: 2007-11-23 9:49
帖子: 1021
送出感谢: 0 次
接收感谢: 1
什么对象什么模式,其实就是模块化,隔离,隐藏。在OOP概念出来之前那些优秀C程序员就已经在这样做了,而C++编译器就是机器帮检查一遍。如果觉得C++提供的抽象层还不如自己的概念清晰,或者额外带来了很多缺陷,那他们就继续C了。

方法论一直层出不穷,无论看什么时代的历史都是在coding,debuging,testing中轮回……

喜欢RoR的初级魔法师撸过……



_________________
评价: 3.7% bearscafe
 
页首
 用户资料  
 
7 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-12-05 16:31 

注册: 2009-11-17 13:27
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
:em11 :em11 :em11 :em11 :em11 只会简单编程的鹿过了~


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-12-12 11:39 
头像

注册: 2009-07-25 1:57
帖子: 701
送出感谢: 5
接收感谢: 13
你这个问题相当于于在问COM组件的意义在哪里?

用c实现的好处是二进制级别的兼容性。可以更容易的在不同编程语言的模块间切换。像GTK这样的话,就很容易用其他语言来调用这个模块,因为任何语言的接口都可以比较方便的转换为C接口。像GTK这种兼容性是很重要的,你要易用性的话,完全可以再根据自己使用的高级语言,来封装gtk接口。比如php 的gtk,python的gtk接口,甚至是haskell这类的gtk接口。


_________________
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 大型程序一定要面向对象吗?
帖子发表于 : 2010-12-16 1:32 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
C++本身过于复杂,对于一个工具来说,不需要太复杂的工具,只需要一个简单好用的
于是很多人偏好c,例如我

大工程一般都至少模块化的,人类的能力很有限,必须把大的东西慢慢分割成若干小的部分才能好好地干活,这个是没办法的事
而且模块化对于维护来说有着极大的吸引力
至于面向对象,这个还是要看选择,面向对象还是相当好用的,linux内核有很多的面向对象的c实现

反正,大型程序必须要符合的要求,例如可维护性,正确性啥的一堆堆是不变的,只要能达到这些要求,选择什么方法,很多时候是看leader选择


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译