Messages in this thread | | | From | "Marco Ermini" <> | Subject | Re: linux headers and C++ | Date | Tue, 6 Jul 1999 18:34:08 +0100 |
| |
----- Original Message ----- From: Horst von Brand <vonbrand@inf.utfsm.cl> To: Marco Ermini <mail@markoer.org> Cc: Linux Kernel Mailing List <linux-kernel@vger.rutgers.edu> Sent: Tuesday, July 06, 1999 1:59 PM Subject: Re: linux headers and C++
> "Marco Ermini" <mail@markoer.org> said: > [snip] > > I don't feel Linux is *so* object oriented. > > Look at the way files, filesystems and devices are handled: All structs > full of function pointers to say how the jobs are supposed to be done. That > is objects with virtual functions done in C. Also note that in some places > the kernel does things that are impossible (or close) in C++: Switch around > the virtual functions, do a new object "just like that one, but with this > little tweak", ... > > Object orientation was born in the Unix kernels (at least one of the > strands was); Linux relies on that tradidion, and expands it.
I understood. But of course, all that could be done in C could be done in C++ too. And making a new object "just like that one, but with this little tweak" could also be done, and could be done much more clearly in C++.
Using a struct with function pointers instead of classes inheritance and polymorphism just means using an older techinque; with C++ you could just do it in a cleaner way. Maybe you could have the sensation to lose the low-level control on the code, but you gain in clearity and simplicity in the manteinance of the code. This could lead you in being more productive and effective in adding new features and objects, and being less error-prone doing it.
Of course, there are many reasons that could lead to prefer C over C++. If your C++ compiler is not so good, if you want to be sure to have an optimal control on the generated code and you don't know the C++ compiler so good as the C one, etc. But are you sure that you are preferring C over C++ just because you don't feel confortable with C++? it's a clear and motivated decision or just a commodity? it's "better" per se' or it just fits better because the "history" of the way Linux was born?
> > Using > > C or ASM or another language in an OO > > way without a specific support for this could > > lead to more complications that it's worth (i.e. > > you could program as you have inheritance > > without having a keyword to do it, but it's > > very difficoult to keep the code clean). > > The kernel shows how it is done. No keywords needed. Some readers of the > source aren't even aware of what is going on. What more transparency you > want? ;-)
In fact, I can't see something reminding me of inheritance in the "kernel" itself, and I don't see how we may need it (not speaking of devices handling, for example, or files and inode etc., just the processes handling per se).
> That is hard to achieve whatever the language, and IMVHO one of Linus' > greatest achievements
I agree, and that's what I mainly admire in Linus and Linux.
Cheers
Marco
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |