Re: The plus plus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alan Cox wrote:

Hi Alan -

guy. Somehow the kernel and Gnome reached a local optimum at the C hacker level and that is where they stay.

The kernel uses C for good sound reasons - C++ is slower, harder to

Well C++ can generate pure C with no overhead, in the degenerate case you are not using the C++ features. So it is not "slower" without some qualification.

About ten years ago when I was struggling to understand what the C++ deal was about, I realized after it crashed in on me what the benefits were (the moment I understood how virtual functions worked in the memory footprint) that I had been blindly reaching for some of the same principles in my C for some time, eg, binding related data into structs, composing structs with other more primitive structs at the start, making the equivalent of constructor functions to prep a struct, using function pointers and so on.

When I look at bits of the kernel code I need to understand to write my drivers, I strongly recognize the same aping of OO principles in a pre-OO language. The shared mindmeld that produced such code is ripe to move on IMO!

Since for the kernel there is an attempt at implementing the OO action in C by hand at the moment, it is even harder to flat out say that C++ is "slower" without qualification, since it by delivering implicitly what is done explicitly now it offsets at least some of the overhead.

debug and the tools suck in relative terms. You can use a subset of C++
to write OS core code, that has been demonstrated, but C++ is not
beneficial in that space. Much of that is down to the fact C++ is a
dreadfully designed language rather than going agains the basic argument
about using the right tools for the right job.

Well I think a lot of your skills, experience and opinion, in fact only illness kept me from the last Linux World where I was anxious to hear your security talk. But you only need to buy into a pretty thin subset of C++ to get the bulk of the benefit IMO. You don't need any of that ">>" operator trickery or to use string.

From the kernel viewpoint C++ is the badly designed swiss army knife
bought in a cheap junk shop - it has lots of interesting ways to cut
yourself but none of the tools actually help you do anything useful.

For sure there is a lot that a wise person avoids, particularly in the libs and templates, but the core class stuff only delivers wins IMO. Just use it as a better C compiler that natively supports the abstractions you already insisted to use, you don't have to buy into anything else.

The original context was the relative success of a C++-based GUI and a C-based one. Concepts like pure virtual classes give really strong architectural structure to the implementation, a newbie can glance at the class definitions and keenly understand the whole deal in a hierarchical, complete and contained way. Deep structure is readably captured by the class definitions and derivations.

Before I blew out of being a Windows Trained Monkey I wrote a lot of MFC for UI, there is much to like in having UI elements integrated into an OO language, this experience gives me the assurance to claim that C++ makes a major difference in the consistency and architecture you can hope to succeed with.

-Andy


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux