分页: 1 / 1
大型程序一定要面向对象吗?
发表于 : 2010-11-12 10:39
由 bearscafe
见过的大型程序的源码有:
1. 面向对象的,C++实现(如Audacity等大多数程序)
2. 面向对象的,纯C实现(如Gimp等GTK+程序)
3. 非面向对象的,由巨多的C函数构成(如语音软件Sphinx3 [
http://en.wikipedia.org/wiki/CMU_Sphinx])。
我自己的经验,写稍微有点规模的程序,使用面向对象的方法都要比基于过程的方法方便得太多了。
不使用面向对象方法,相当于抛弃了设计模式等各种有效的可复用设计。
有些大型软件选择完全不使用面向对象方法,难道仅仅是因为历史原因吗?
另外不太明白用纯C实现面向对象的优势何在。虽然也许提高了些执行效率和可移植性,但大大增加了开发难度。像GTK+程序,开发速度应该比效率和移植性更重要吧?
Re: 大型程序一定要面向对象吗?
发表于 : 2010-11-12 10:43
由 leeaman
母鸡倒
Re: 大型程序一定要面向对象吗?
发表于 : 2010-11-14 12:10
由 cjxgm
I hate OOP
Re: 大型程序一定要面向对象吗?
发表于 : 2010-11-14 12:21
由 lubcat
不了解。
待解惑。
Re: 大型程序一定要面向对象吗?
发表于 : 2010-11-14 20:20
由 klose911
面向对象仅仅是一种思想,就是抽象数据类型+多态,是一种从人的角度去分析问题的方法。
接近底层处理和硬件打交代的时候,就不得不从机器的角度去思考。在这些地方使用面向对象就显得不合时宜, 硬要过多的抽象分层,更会使得整个设计不直观。
面向对象与编程语言无关,用C也可以很好的实现面向对象的设计思想。
有人喜欢用C实现面向对象,可能他们觉得C++是一个实在糟糕的所谓内嵌面向对象机制的编程语言,而java速度非常不给力,object-C以及smalltalk支持的库相对少。
以上纯属个人看法,希望有人指正。
Re: 大型程序一定要面向对象吗?
发表于 : 2010-11-17 13:47
由 ChloeRei
什么对象什么模式,其实就是模块化,隔离,隐藏。在OOP概念出来之前那些优秀C程序员就已经在这样做了,而C++编译器就是机器帮检查一遍。如果觉得C++提供的抽象层还不如自己的概念清晰,或者额外带来了很多缺陷,那他们就继续C了。
方法论一直层出不穷,无论看什么时代的历史都是在coding,debuging,testing中轮回……
喜欢RoR的初级魔法师撸过……
Re: 大型程序一定要面向对象吗?
发表于 : 2010-12-05 16:31
由 lllvdee
Re: 大型程序一定要面向对象吗?
发表于 : 2010-12-12 11:39
由 tangboyun
你这个问题相当于于在问COM组件的意义在哪里?
用c实现的好处是二进制级别的兼容性。可以更容易的在不同编程语言的模块间切换。像GTK这样的话,就很容易用其他语言来调用这个模块,因为任何语言的接口都可以比较方便的转换为C接口。像GTK这种兼容性是很重要的,你要易用性的话,完全可以再根据自己使用的高级语言,来封装gtk接口。比如php 的gtk,python的gtk接口,甚至是haskell这类的gtk接口。
Re: 大型程序一定要面向对象吗?
发表于 : 2010-12-16 1:32
由 fanhe
C++本身过于复杂,对于一个工具来说,不需要太复杂的工具,只需要一个简单好用的
于是很多人偏好c,例如我
大工程一般都至少模块化的,人类的能力很有限,必须把大的东西慢慢分割成若干小的部分才能好好地干活,这个是没办法的事
而且模块化对于维护来说有着极大的吸引力
至于面向对象,这个还是要看选择,面向对象还是相当好用的,linux内核有很多的面向对象的c实现
反正,大型程序必须要符合的要求,例如可维护性,正确性啥的一堆堆是不变的,只要能达到这些要求,选择什么方法,很多时候是看leader选择