From: Dmitry Kakurin <dmitry.kakurin <at> gmail.com>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 04:48:47 GMT (1 year, 51 weeks, 2 days, 20 hours and 7 minutes ago)
[ snip ] When I first looked at Git source code two things struck me as odd: 1. Pure C as opposed to C++. No idea why. Please don't talk about portability, it's BS. 2. Brute-force, direct string manipulation. It's both verbose and error-prone. This makes it hard to follow high-level code logic. - Dmitry
From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (1 year, 51 weeks, 2 days, 7 hours and 7 minutes ago)
On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > When I first looked at Git source code two things struck me as odd: > 1. Pure C as opposed to C++. No idea why. Please don't talk about portability, > it's BS. *YOU* are full of bullshit. C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C. In other words: the choice of C is the only sane choice. I know Miles Bader jokingly said "to piss you off", but it's actually true. I've come to the conclusion that any programmer that would prefer the project to be in C++ over C is likely a programmer that I really *would* prefer to piss off, so that he doesn't come and screw up any project I'm involved with. C++ leads to really really bad design choices. You invariably start using the "nice" library features of the language like STL and Boost and other total and utter crap, that may "help" you program, but causes: - infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny) - inefficient abstracted programming models where two years down the road you notice that some abstraction wasn't very efficient, but now all your code depends on all the nice object models around it, and you cannot fix it without rewriting your app. In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don't screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don't screw things up with any idiotic "object model" crap. So I'm sorry, but for something like git, where efficiency was a primary objective, the "advantages" of C++ is just a huge mistake. The fact that we also piss off people who cannot see that is just a big additional advantage. If you want a VCS that is written in C++, go play with Monotone. Really. They use a "real database". They use "nice object-oriented libraries". They use "nice C++ abstractions". And quite frankly, as a result of all these design decisions that sound so appealing to some CS people, the end result is a horrible and unmaintainable mess. But I'm sure you'd like it more than git. Linus
From: Dmitry Kakurin <dmitry.kakurin <at> gmail.com>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 00:21:37 GMT (1 year, 51 weeks, 2 days and 36 minutes ago)
On 9/6/07, Linus Torvalds <torvalds <at> linux-foundation.org> wrote: > On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > > > When I first looked at Git source code two things struck me as odd: > > 1. Pure C as opposed to C++. No idea why. Please don't talk about portability, > > it's BS. > > *YOU* are full of bullshit. nice > C++ is a horrible language. It's made more horrible by the fact that a lot > of substandard programmers use it, to the point where it's much much > easier to generate total and utter crap with it. Quite frankly, even if > the choice of C were to do *nothing* but keep the C++ programmers out, > that in itself would be a huge reason to use C. > > In other words: the choice of C is the only sane choice. I know Miles > Bader jokingly said "to piss you off", but it's actually true. I've come > to the conclusion that any programmer that would prefer the project to be > in C++ over C is likely a programmer that I really *would* prefer to piss > off, so that he doesn't come and screw up any project I'm involved with. As dinosaurs (who code exclusively in C) are becoming extinct, you will soon find yourself alone with attitude like this. Measuring number of people who contributed to Git is incorrect metric. Obviously C++ developers can contribute C code. But assuming that they prefer it that way is wrong. I was coding in Assembly when there was no C. Then in C before C++ was created. Now days it's C++ and C#, and I have never looked back. Bad developers will write bad code in any language. But penalizing good developers for this illusive reason of repealing bad contributors is nonsense. Anyway I don't mean to start a religious C vs. C++ war. It's a matter of beliefs and as such pointless. I just wanted to get a sense of how many people share this "Git should be in pure C" doctrine. -- - Dmitry
From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 00:38:01 GMT (1 year, 51 weeks, 2 days and 20 minutes ago)
On Thu, 6 Sep 2007, Dmitry Kakurin wrote: > > As dinosaurs (who code exclusively in C) are becoming extinct, you > will soon find yourself alone with attitude like this. Unlike you, I actually gave reasons for my dislike of C++, and pointed to examples of the kinds of failures that it leads to. You, on the other hand, have given no sane reasons *for* using C++. The fact is, git is better than the other SCM's. And good taste (and C) is one of the reasons for that. It has nothing to do with dinosaurs. Good taste doesn't go out of style, and comparing C to assembler just shows that you don't have a friggin idea about what you're talking about. Linus
From: Dmitry Kakurin <dmitry.kakurin <at> gmail.com>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 01:08:40 GMT (1 year, 51 weeks, 1 day, 23 hours and 49 minutes ago)
On 9/6/07, Linus Torvalds <torvalds <at> linux-foundation.org> wrote: > > > On Thu, 6 Sep 2007, Dmitry Kakurin wrote: > > > > As dinosaurs (who code exclusively in C) are becoming extinct, you > > will soon find yourself alone with attitude like this. > > Unlike you, I actually gave reasons for my dislike of C++, and pointed to > examples of the kinds of failures that it leads to. As I said, it's a matter of believes. As such, any reasoning and arguing will be endless and pointless, as for any other religious issue. > You, on the other hand, have given no sane reasons *for* using C++. I'll give you reasons why to use C++ for Git (not why C++ is better for any project in general, as that again would be pointless): 1. Good String class will make code much more readable (and significantly shorter) 2. Good Buffer class - same reason 3. Smart pointers and smart handles to manage memory and file/socket/lock handles. As it is right now, it's too hard to see the high-level logic thru this endless-busy-work of micro-managing strings and memory. > The fact is, git is better than the other SCM's. And good taste (and C) is > one of the reasons for that. IMHO Git has a brilliant high-level design (object database, using hashes, simple and accessible storage for data and metadata). Kudos to you! The implementation: a mixture of C and shell scripts, command line interface that has evolved bottom-up is so-so. > and comparing C to assembler just shows that you don't have a friggin idea > about what you're talking about. I don't see myself comparing assembler to C anywhere. I was pointing out that I've been programming in different languages (many more actually) and observed bad developers writing bad code in all of them. So this quality "bad developer" is actually language-agnostic . -- - Dmitry
From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 01:27:46 GMT (1 year, 51 weeks, 1 day, 23 hours and 31 minutes ago)
On Thu, 6 Sep 2007, Dmitry Kakurin wrote: > > As it is right now, it's too hard to see the high-level logic thru > this endless-busy-work of micro-managing strings and memory. Total BS. The string/memory management is not at all relevant. Look at the code (I bet you didn't). This isn't the important, or complex part. > IMHO Git has a brilliant high-level design (object database, using > hashes, simple and accessible storage for data and metadata). Kudos to > you! > The implementation: a mixture of C and shell scripts, command line > interface that has evolved bottom-up is so-so. The only really important part is the *design*. The fact that some of it is in a "prototyping language" is exactly because it wasn't the core parts, and it's slowly getting replaced. C++ would in *no* way have been able to replace the shell scripts or perl parts. And C++ would in no way have made the truly core parts better. > > and comparing C to assembler just shows that you don't have a friggin idea > > about what you're talking about. > > I don't see myself comparing assembler to C anywhere. You made a very clear "assembler -> C -> C++/C#" progression nin your life, comparing my staying with C as a "dinosaur", as if it was some inescapable evolution towards a better/more modern language. With zero basis for it, since in many ways C is much superior to C++ (and even more so C#) in both its portability and in its availability of interfaces and low-level support. > I was pointing out that I've been programming in different languages > (many more actually) and observed bad developers writing bad code in > all of them. So this quality "bad developer" is actually > lan
From: Dmitry Kakurin <dmitry.kakurin <at> gmail.com>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-07 03:09:23 GMT (1 year, 51 weeks, 1 day, 21 hours and 49 minutes ago)
On 9/6/07, Linus Torvalds <torvalds <at> linux-foundation.org> wrote: > On Thu, 6 Sep 2007, Dmitry Kakurin wrote: > > > > As it is right now, it's too hard to see the high-level logic thru > > this endless-busy-work of micro-managing strings and memory. > > Total BS. The string/memory management is not at all relevant. Look at the > code (I bet you didn't). This isn't the important, or complex part. Not only have I looked at the code, I've also debugged it quite a bit. Granted most of my problems had to do with handling paths on Windows (i.e. string manipulations). Let me snip "C is better than C++" part ... > [ snip ] ... and explain where I'm coming from: My goal is to *use* Git. When something does not work *for me* I want to be able to fix it (and contribute the fix) in *shortest time possible* and with *minimal efforts*. As for me it's a diversion from my main activities. The fact that Git is written in C does not really contribute to that goal. Suggestion to use C++ is the only alternative with existing C codebase. So while C++ may not be the best choice "academically speaking" it's pretty much the only practical choice. "Democracy is the worst form of government except for all those others that have been tried." - Winston Churchill Now, I realize that I'm a very infrequent contributor to Git, but I want my opinion to be heard. People who carry the main weight of developing and maintaining Git should make the call. -- - Dmitry
[RFC] Convert builin-mailinfo.c to use The Better String Library.