当前位置: 技术问答>linux和unix
讨论一下Linux中的面向对象
来源: 互联网 发布时间:2015-07-07
本文导语: C语言是一个为结构化而设计的一种高级语言,并没有对面向对象提供支持 而Linux使用了C语言来实现,估计主要是由于C的效率以及灵活性的原因。 可是,面向对象思想活跃的今天,我们可以看到面向对象对于我们的...
C语言是一个为结构化而设计的一种高级语言,并没有对面向对象提供支持
而Linux使用了C语言来实现,估计主要是由于C的效率以及灵活性的原因。
可是,面向对象思想活跃的今天,我们可以看到面向对象对于我们的程序编写以及管理都带来了方便。
这里,我想大家一起来讨论一下Linux源代码中,面向对象的应用。以提高我们在编写类似程序的代码质量。
由于我接触Linux的时间比较的短,接触内核代码的时间也是很短。我不知道面向对象这个词用在这里是不是正确,如果不正确,还请大家指正。
在阅读代码的过程中,我发现,Linux使用了struct这个来实现对象,函数指针来实现方法。比如说,设备是一个类,每一个驱动程序都将这个类实例化,然后交给内核。但也许是我在面向对象上面的理解还不够透彻,当我自己要实现一个驱动的时候,我发现却遇到了困难。我无法实现自己的抽象。比如说,一个驱动程序,一个操作需要等待几次中断。我想把驱动分成总线驱动和功能驱动两个部分来操作,可是在这个层次划分上我就迷糊了。
也许,我们应该寻找一个模式,来将Linux下的这种方法理论化,来知道我们做相似的设计
而Linux使用了C语言来实现,估计主要是由于C的效率以及灵活性的原因。
可是,面向对象思想活跃的今天,我们可以看到面向对象对于我们的程序编写以及管理都带来了方便。
这里,我想大家一起来讨论一下Linux源代码中,面向对象的应用。以提高我们在编写类似程序的代码质量。
由于我接触Linux的时间比较的短,接触内核代码的时间也是很短。我不知道面向对象这个词用在这里是不是正确,如果不正确,还请大家指正。
在阅读代码的过程中,我发现,Linux使用了struct这个来实现对象,函数指针来实现方法。比如说,设备是一个类,每一个驱动程序都将这个类实例化,然后交给内核。但也许是我在面向对象上面的理解还不够透彻,当我自己要实现一个驱动的时候,我发现却遇到了困难。我无法实现自己的抽象。比如说,一个驱动程序,一个操作需要等待几次中断。我想把驱动分成总线驱动和功能驱动两个部分来操作,可是在这个层次划分上我就迷糊了。
也许,我们应该寻找一个模式,来将Linux下的这种方法理论化,来知道我们做相似的设计
|
不要迷信OO,该用OO的时候就用,不该用的时候就不用。
操作系统本身就是底层的东西,抽象度那么高干什么?你难道想让内核慢的像蜗牛?
OO符合人类分析问题的一般思路,提高开发效率而已,不是万能丹。
难道操作系统也需要快速开发?
操作系统本身就是底层的东西,抽象度那么高干什么?你难道想让内核慢的像蜗牛?
OO符合人类分析问题的一般思路,提高开发效率而已,不是万能丹。
难道操作系统也需要快速开发?
|
Linux下也有C++,不过写低层的东西还是用C比较好。
|
请问,用个struct就算面向对象?那么int,long是不是也能看成对象?
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?
再说了,C的编译速度和C++的编译速度一样么?现在你编译一个2.6的内核要多少时间?要是用C++,至少得双倍的时间。
不用什么都抽象,什么都OO!
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?
再说了,C的编译速度和C++的编译速度一样么?现在你编译一个2.6的内核要多少时间?要是用C++,至少得双倍的时间。
不用什么都抽象,什么都OO!
|
请问,用个struct就算面向对象?那么int,long是不是也能看成对象?
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?
***************************************************************
世界上的所有的东西都算是对象
int, long 看成对象也无不可呀
我们存int, long 的register都是对象,呵呵
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?
***************************************************************
世界上的所有的东西都算是对象
int, long 看成对象也无不可呀
我们存int, long 的register都是对象,呵呵
|
照你这种看法,C也可以看成是OO了。
|
如你所说,C不支持OO,但是Linux是纯C,你还在这里谈什么"面向对象的思想"?
别什么都是"思想","思想"的.
少谈理论,多做事.
别什么都是"思想","思想"的.
少谈理论,多做事.
|
不知道楼上的兄弟看没看过《linux driver 2nd》里边很明显的声明了具有面向对象的思想
就在字符设备驱动编写这一章
讨论有没有使用没什么意义
不过确实是使用了:)
就在字符设备驱动编写这一章
讨论有没有使用没什么意义
不过确实是使用了:)
|
得了,也不知道你说的理论想应用到哪儿?想建立数学模型?
重实践?从哪儿能体现出来?
"理论重实践", 你给个例子?
重实践?从哪儿能体现出来?
"理论重实践", 你给个例子?
|
你知道你给我什么感觉么?就是那种学了OO一阵,觉得OO是个好东西,就想什么都用OO来解决的人。
其实OO只是一种思想而已,有适用的地方,也有不适用的地方,一般真正的大型程序(我不是指那些所谓的ERP),都是高层用OO,底层用过程,也许OO的封装性太好了,编程序的时候你也懒的想到底在地下是怎么实现的了,但是现实是什么呢?计算机本身并不懂OO,只是语言的开发者为了符合人类思考的习惯,而创造了一个OO和过程之间的桥梁。操作系统本身基本上是过程的,可能某些地方稍微使用了一点OO的思想,当然这是局部的情况,至于整体的Architecture,你说是OO也罢,不是也罢,(毕竟把OS分成几大块,我觉得也算不上OO)。我不知道你是什么水平,但是你所说的“轻理论重实践”,真是一点根据都没有。国内的理论不行是明摆着的,但是“实践”方面就水平高?国内大部分还不是跟着国外的屁股走?看看Sourceforge上的项目,几个是中国人弄得?核心技术中国强的又有多少?
其实OO只是一种思想而已,有适用的地方,也有不适用的地方,一般真正的大型程序(我不是指那些所谓的ERP),都是高层用OO,底层用过程,也许OO的封装性太好了,编程序的时候你也懒的想到底在地下是怎么实现的了,但是现实是什么呢?计算机本身并不懂OO,只是语言的开发者为了符合人类思考的习惯,而创造了一个OO和过程之间的桥梁。操作系统本身基本上是过程的,可能某些地方稍微使用了一点OO的思想,当然这是局部的情况,至于整体的Architecture,你说是OO也罢,不是也罢,(毕竟把OS分成几大块,我觉得也算不上OO)。我不知道你是什么水平,但是你所说的“轻理论重实践”,真是一点根据都没有。国内的理论不行是明摆着的,但是“实践”方面就水平高?国内大部分还不是跟着国外的屁股走?看看Sourceforge上的项目,几个是中国人弄得?核心技术中国强的又有多少?
|
linux内核大量地使用了oo的思想,只是没有用C++罢了。凡是那些结构体里有函数指针表的基本都借鉴了oo的思想,而这些函数的参数中又有一个参数是指向这个结构体的指针,相当于this指针。
|
学习
|
面向对象是对面向过程的一个抽象~你必须对整个面向过程的全部流程有了概念,然后从中抽取相关的操作组成对象的概念,才能体现出 OO~绝对不是为 OO 而 OO 的,尤其在这种地方。
|
废人怎么跑这里来了???
|
我是一个新手,希望能够在大家的讨论中获得些营养。我知道,我不能为大家贡献些什么东西出来,因为我确实接触的时间太短,知道的太少,正如我们整个中国的程序员一样,只能跟在其他人后面跑,学习其他的人东西,希望能把别人的经验抽象成理论,加快我们学习和设计的能力。假以时日,我相信,我,以及整个中国的IT人们,一定能在世界上占有一席之地,为世界IT作出贡献的。
**********************************************************************************
我支持你,我是学物理的,引用一位伟大的外国的物理学家的话来鼓励大家一下
"如果你在30岁以前没有在技术上有所成就的话,你在技术上就再也不会有什么了."
仅以此话激励大家
一起努力吧,30以前做出点东西来
快乐并努力着
^_^
**********************************************************************************
我支持你,我是学物理的,引用一位伟大的外国的物理学家的话来鼓励大家一下
"如果你在30岁以前没有在技术上有所成就的话,你在技术上就再也不会有什么了."
仅以此话激励大家
一起努力吧,30以前做出点东西来
快乐并努力着
^_^
|
o今年25了马上就要P3了,需要抓紧时间了
|
哈哈,我是流窜作案。
|
楼上的
听说你是c++版的
跑到我们linux版来干嘛?
/////
其实我也是.....
听说你是c++版的
跑到我们linux版来干嘛?
/////
其实我也是.....
|
呵呵,我们每天都更新地方也要更新
经常去C++混
经常去C++混
|
年龄的确不饶人,希望能在有生之年,尽心尽力的为行业贡献点力量!
|
Just work hard, then you will find a way!