Messages in this thread | | | Date | Wed, 07 Jul 1999 00:35:31 +1000 | From | Dancer <> | Subject | Re: linux headers and C++ |
| |
Marco Ermini wrote: > > ----- Original Message ----- > From: Alan Cox <alan@lxorguk.ukuu.org.uk> > To: <fbutter@ottomall.com.tw> > Cc: <Jes.Sorensen@cern.ch>; <linux-kernel@vger.rutgers.edu> > Sent: Tuesday, July 06, 1999 11:23 AM > Subject: Re: linux headers and C++ > > > Please don't confuse object oriented with C++. Decent programmers can > write > > object oriented assembler, fortran or even cobol (although they normally > leave > > in the latter case). Linux is heavily object oriented but without using a > > glorified pre-processor on it > > I don't feel Linux is *so* object oriented. > Apart from this C++ is no more just a > pre-processor. Of course a C and ASM > hacker could feel in this way, but it's not > true; C++ could be used as an improved-C > or as a full-featured OO-language. 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). > > Looking at the Linux source tree, I don't > think Linux is OO. But I personally > don't feel it as a limitation per se. WinNT > is (maybe?) OO. What's the result? The > only things that count, at the end, are the > results. Linux could be not OO, but the > sources are (quite) always clean and > understandable.
OO doesn't imply inheritance. Yes, having language features that support OO is nice, but it's possible to do good, clean OO code in C without heaps of tangled, complex code....UNLESS you try to mimic the things that a language with..*ahem* Let me try that sentence again: UNLESS you try to do the really complicated stuff that the language support of (for example) C++ or smalltalk hides the complexity of.
Multiple inheritance, virtual members, templates (ye gods)..each of these things has layers of complexity. The fact that a compiler _hides_ that complexity from you doesn't make the end-code simple, and if you try to implement foolishly complicated OO constructs in a non-OO language, then you _do_ risk getting badly fuddled.
However: Basic object orientation (packages and interfaces and instance data) is quite straightforward under C (and only marginally less so in ASM) and in plenty of other procedural languages. We've been doing it for years, and were probably doing it before someone gave it a name.
The kernel's full of OO code. So's glibc.
I _will_ grant that sometimes it is easier and cleaner to do some things in a language with support for the whole OO paradigm. And sometimes it isn't. It depends on what you're doing. It depends on what you're doing, and how you go about it.
Sometimes C++ will do the whole bloat thing on you. And sometimes it won't. It depends on what you're doing, and how you go about it.
The language is a tool and a description. Not a religion or a dogma. You always try to select the best tool for the job...and in a cooperative development environment sometimes the best tool is a tool that the other people can use with equal facility.
For reference, I spend most of my time coding in C++. Because it happens to be the best tool for the jobs I do. If a job warrants C (and some of them do) then C code is what I write. I'm an atheist when it comes to compiled languages.
D
- 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/
| |