<br><br><div class="gmail_quote">On Sun, Jan 2, 2011 at 1:42 AM, Nick Sabalausky <span dir="ltr"><a@a.a></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">
<br>
</div>I don't have a link, but I read a post he made somewhere that explained the<br>
reason Linux kernal is plain-C-only is because, IIRC, they frequently need a<br>
very, very tight mapping between the source and the generated instructions.<br>
Partly for tight control over the instruction generation, and partly becase<br>
they often needed be be able to look at the source and know what got<br>
generated. I don't know, but I suspect D may be even further from C++ in<br>
than regard.<br>
<br>
<br>
</blockquote></div><br><span style="font-family: comic sans ms,sans-serif;">Linus</span> also doesn't want C++ to be used for Git.<br><br>"<br><pre>On Wed, 5 Sep 2007, Dmitry Kakurin wrote:<br>> <br>> When I first looked at Git source code two things struck me as odd:<br>
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,<br>> it's BS.<br><br><b>*YOU*</b> are full of bullshit.<br><br>C++ is a horrible language. It's made more horrible by the fact that a lot <br>
of substandard programmers use it, to the point where it's much much <br>easier to generate total and utter crap with it. Quite frankly, even if <br>the choice of C were to do <b>*nothing*</b> but keep the C++ programmers out, <br>
that in itself would be a huge reason to use C.<br><br>In other words: the choice of C is the only sane choice. I know Miles <br>Bader jokingly said "to piss you off", but it's actually true. I've come <br>
to the conclusion that any programmer that would prefer the project to be <br>in C++ over C is likely a programmer that I really <b>*would*</b> prefer to piss <br>off, so that he doesn't come and screw up any project I'm involved with.<br>
<br>C++ leads to really really bad design choices. You invariably start using <br>the "nice" library features of the language like STL and Boost and other <br>total and utter crap, that may "help" you program, but causes:<br>
<br> - infinite amounts of pain when they don't work (and anybody who tells me <br>   that STL and especially Boost are stable and portable is just so full <br>   of BS that it's not even funny)<br><br> - inefficient abstracted programming models where two years down the road <br>
   you notice that some abstraction wasn't very efficient, but now all <br>   your code depends on all the nice object models around it, and you <br>   cannot fix it without rewriting your app.<br><br>In other words, the only way to do good, efficient, and system-level and <br>
portable C++ ends up to limit yourself to all the things that are <br>basically available in C. And limiting your project to C means that people <br>don't screw that up, and also means that you get a lot of programmers that <br>
do actually understand low-level issues and don't screw things up with any <br>idiotic "object model" crap.<br><br>So I'm sorry, but for something like git, where efficiency was a primary <br>objective, the "advantages" of C++ is just a huge mistake. The fact that <br>
we also piss off people who cannot see that is just a big additional <br>advantage.<br><br>If you want a VCS that is written in C++, go play with Monotone. Really. <br>They use a "real database". They use "nice object-oriented libraries". <br>
They use "nice C++ abstractions". And quite frankly, as a result of all <br>these design decisions that sound so appealing to some CS people, the end <br>result is a horrible and unmaintainable mess.<br><br>But I'm sure you'd like it more than git.<br>
<br>                      Linus<br>"<br><span style="font-family: comic sans ms,sans-serif;"><br><font size="2"><font face="arial,helvetica,sans-serif"><br>Source:  <a href="http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918">http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918</a><br>
</font></font></span></pre>