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/