当前位置:  技术问答>linux和unix

讨论一下Linux中的面向对象

    来源: 互联网  发布时间:2015-07-07

    本文导语:  C语言是一个为结构化而设计的一种高级语言,并没有对面向对象提供支持 而Linux使用了C语言来实现,估计主要是由于C的效率以及灵活性的原因。 可是,面向对象思想活跃的今天,我们可以看到面向对象对于我们的...

C语言是一个为结构化而设计的一种高级语言,并没有对面向对象提供支持
而Linux使用了C语言来实现,估计主要是由于C的效率以及灵活性的原因。
可是,面向对象思想活跃的今天,我们可以看到面向对象对于我们的程序编写以及管理都带来了方便。
这里,我想大家一起来讨论一下Linux源代码中,面向对象的应用。以提高我们在编写类似程序的代码质量。
由于我接触Linux的时间比较的短,接触内核代码的时间也是很短。我不知道面向对象这个词用在这里是不是正确,如果不正确,还请大家指正。
在阅读代码的过程中,我发现,Linux使用了struct这个来实现对象,函数指针来实现方法。比如说,设备是一个类,每一个驱动程序都将这个类实例化,然后交给内核。但也许是我在面向对象上面的理解还不够透彻,当我自己要实现一个驱动的时候,我发现却遇到了困难。我无法实现自己的抽象。比如说,一个驱动程序,一个操作需要等待几次中断。我想把驱动分成总线驱动和功能驱动两个部分来操作,可是在这个层次划分上我就迷糊了。
也许,我们应该寻找一个模式,来将Linux下的这种方法理论化,来知道我们做相似的设计

|
不要迷信OO,该用OO的时候就用,不该用的时候就不用。
操作系统本身就是底层的东西,抽象度那么高干什么?你难道想让内核慢的像蜗牛?
OO符合人类分析问题的一般思路,提高开发效率而已,不是万能丹。
难道操作系统也需要快速开发?

|
Linux下也有C++,不过写低层的东西还是用C比较好。

|
请问,用个struct就算面向对象?那么int,long是不是也能看成对象?
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?

再说了,C的编译速度和C++的编译速度一样么?现在你编译一个2.6的内核要多少时间?要是用C++,至少得双倍的时间。

不用什么都抽象,什么都OO!

|
请问,用个struct就算面向对象?那么int,long是不是也能看成对象?
要说内核有面向对象的思想,顶多在函数指针那边还算是有点意思。
别在这里咬文嚼字了,有意义么?


***************************************************************
世界上的所有的东西都算是对象
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上的项目,几个是中国人弄得?核心技术中国强的又有多少?

|
linux内核大量地使用了oo的思想,只是没有用C++罢了。凡是那些结构体里有函数指针表的基本都借鉴了oo的思想,而这些函数的参数中又有一个参数是指向这个结构体的指针,相当于this指针。

|
学习

|
面向对象是对面向过程的一个抽象~你必须对整个面向过程的全部流程有了概念,然后从中抽取相关的操作组成对象的概念,才能体现出 OO~绝对不是为 OO 而 OO 的,尤其在这种地方。

|
废人怎么跑这里来了???

|
我是一个新手,希望能够在大家的讨论中获得些营养。我知道,我不能为大家贡献些什么东西出来,因为我确实接触的时间太短,知道的太少,正如我们整个中国的程序员一样,只能跟在其他人后面跑,学习其他的人东西,希望能把别人的经验抽象成理论,加快我们学习和设计的能力。假以时日,我相信,我,以及整个中国的IT人们,一定能在世界上占有一席之地,为世界IT作出贡献的。
**********************************************************************************
我支持你,我是学物理的,引用一位伟大的外国的物理学家的话来鼓励大家一下
"如果你在30岁以前没有在技术上有所成就的话,你在技术上就再也不会有什么了."
仅以此话激励大家
一起努力吧,30以前做出点东西来
快乐并努力着
^_^

|
o今年25了马上就要P3了,需要抓紧时间了

|
哈哈,我是流窜作案。

|
楼上的
听说你是c++版的
跑到我们linux版来干嘛?



/////
其实我也是.....

|
呵呵,我们每天都更新地方也要更新
经常去C++混

|
年龄的确不饶人,希望能在有生之年,尽心尽力的为行业贡献点力量!

|
Just work hard, then you will find a way!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个面试,是“北京华胜六所”外包给风河(VxWorks)北京研发处,做linux内核开发,大家过来讨论讨论
  • 做Linux的朋友请进来一起讨论,我是说正在Linux上工作的朋友:)
  • 讨论一下Linux的前景好不好?
  • 建了一个QQ群6910495,一起讨论LINUX,共同学习,共同进步
  • 讨论linux的发展前途与有无用处问题。。。。。。。。。。。
  • http://www.itpub.net 论坛更新数据库,速度更快,欢迎大家前去讨论unix&linux知识!
  • LINUX下JAVA要代替C..?常跟朋友讨论的一个问题
  • 请问一下,关于arm下的嵌入式linux驱动相关问题请教是应该发在哪个讨论区?
  • 大家讨论一下用QT及OSS实现LINUX下的录音程序的方法,说出想法就给分
  • 关于linux和windows的讨论
  • [讨论]Linux系统开发主板硬件测试程序
  • 作 Linux/Unix开发 应该从何处入手?致力于Linux开发的迷惑???欢迎讨论。
  • 就Linux下的Unicode问题,发出讨论。
  • 就做linux裁减系统启动软盘的讨论!
  • 讨论一下:linux和lwip中的接收缓冲区结构哪个好呢?
  • 大家来讨论──从内核到完整的Linux系统
  • 大家来讨论一下,在linux下除了openGL还有什么可以用于多媒体视频开发的接口库?
  • [讨论]微软现在正在打击盗版 当前时机开发LINUX平台对以后的发展是不是一个很好的机会.
  • 希望大家指教和讨论,在linux下,能用来代替ActiveX控件的技术手段是什么,用什么工具开发??
  • 讨论Linux下软件开发整个过程的辅助工具
  • Java 可以做拨号程序吗?我只是和大家讨论讨论 不必太认真
  • 欢迎高手来讨论:关于文件格式的大讨论
  • 参数传递的问题!(大家讨论讨论)
  • 用java开发一个基于Proxy(代理)的网络计费系统。有兴趣的来讨论讨论
  • 哪位高手有兴趣跟我讨论讨论java中调用dll文件??小弟有些问题还是不很清楚??
  • 【讨论贴】gcc开发的时候有大家都有什么好的调试方法,来讨论下
  • 和Java版高手在线讨论代理服务器的问题,讨论者都有分。
  • 讨论讨论,当错误发生时,并用if语句测试出时,应该返回怎样的值
  • 新建了个QQ群(软件与创业),希望有兴趣的朋友进来讨论讨论软件项目、产品、创业、管理、投资等(代码之外的)观点和想法
  • Java 访问控制的问题(public,private,protected,(default))!讨论讨论!
  • 用java做c/s结构可行吗???大家来讨论讨论,应该都会有收获。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3