4 ms·
Again? Really? This article is ancient; it's posted on HN and Reddit every few months. Furthermore, and more on topic: Linus is a great coder, there's no doubt
by VolatileVoid 17y ago
Again? Really? This article is ancient; it's posted on HN and Reddit every few months.
Furthermore, and more on topic: Linus is a great coder, there's no doubt about that. But he's a terrible front-man. The response is unnecessarily inflammatory and is also appalingly arrogant.
C++ has its place. Even though I, personally, prefer C over C++, I think C++ could have even had a place in the Linux kernel. Particularly, I think the whole File System interface could have been simplified if it were written in C++ instead.
I'm really tired of the arguments of X language > Y language. Languages have different purposes. There are times when C++ makes sense, times when C makes sense, times when Perl makes sense and times when Python makes sense. It's time to stop evangelizing about our tools. Nobody argues that a hammer is better or worse than a screwdriver.
- davidw 17y agoLanguages are just a little bit more complex than hammers and screwdrivers (especially C++!). This means that people usually know a few and stick with them, which makes sense. Why learn Erlang if your concurrency needs are not so great that you can kind of get by in Java or Tcl or whatever? Why learn Ruby if you know Python? Sure, some of us like to, for fun, but my guess is that most working programmers have a limited set of languages, and try and use those before going out and learning a new one just because it might provide some benefits for some particular problem. And, truth be told, that's not a stupid approach given the time involved to learn a new language well. Also, I think people want to attract others to their tool of choice due to the positive network externalities involved.
- VolatileVoid 17y agoYou're right: I was oversimplifying things somewhat, but I still maintain that languages are tools, not the toolbox. To use your examples: why learn Erlang? Well, if your concurrency needs are great enough, Erlang is a great fit! If not, maybe consider another language? You pick the best and most appropriate tool for the job. Sometimes you can nail something in using your shoe, but more often than not, the best tool is a hammer. Why learn Ruby if you know Python? Perhaps you have a project that could be taken to market significantly faster if you use Rails? Perhaps you can use Django? It really _is_ a question of the right tool: and sometimes that tool is Ruby and sometimes it's Python and sometimes it's Java (never COBOL :)). You could probably make a strong case for any language out there. But you should make sure you're choosing the right one for your task: square pegs and square holes.
- davidw 17y agoMy rough feeling is that most people are better off picking a general-purpose language and sticking with it for most of what they do, rather than trying to "optimize" by picking the 'best' language for each task. The learning and the context switching, and even the decision process are probably worse overall than using the generic language, even if it is not the best one.
- mattmcknight 17y ago"Also, I think people want to attract others to their tool of choice due to the positive network externalities involved." This is huge point. I've wasted so much time in my life fighting about what technology to use on a project- with people that aren't actually going to be writing any code on the project. Why do people care SO MUCH about what technology is used on project- even when it's a project they are NOT ON? Positive network externalities sums it up pretty well. The crazy thing programming is that it defines people's mental models around problems. The common chestnut of Java programmers using iterative techniques in SQL stored procedures, as opposed to set based operations is borne out in reality. The different mental models associated with different languages make it hard to switch too often.
- jasongullickson 17y ago"C++ has its place." I think that's the whole point of his response. For GIT, C++ is a terrible choice. I think he's pretty explicit about this: "So I'm sorry, but for something like git, where efficiency was a primary objective, the "advantages" of C++ is just a huge mistake."
- jvdh 17y agoTrue, but this is buried deep down in a very inflammatory reply, where most people would have stopped reading anyway. He makes some good points, but they could have been made a in a better tone, which makes him a terrible front-man.
- CodeMage 17y agoI'm really tired of the arguments of X language > Y language. Languages have different purposes. There are times when C++ makes sense, times when C makes sense, times when Perl makes sense and times when Python makes sense. It's time to stop evangelizing about our tools. Nobody argues that a hammer is better or worse than a screwdriver. That attitude is precisely why a lot of our tools, including programming languages, are crap. It's nice, warm and cozy in the world where no language is better than other, but that world is mostly populated by mediocre programmers. Yes, there are times when language A makes more sense than language B. Especially because when we talk about languages, we're also including the libraries and runtimes that go with them. Here's a ridiculously exaggerated example: ActionScript makes more sense than Lisp when you're developing Flash applications. That is (mainly) because Flash has no support for Lisp at this moment, although you could write your own Lisp compiler for AIR. To use a real world example, C is a lot better match than Java when you have to process an input file with a size of several gigabytes (should be crossing the terabyte boundary nowadays), which contains descriptions of polygons that you have to fracture into smaller primitives (rectangles and trapezoids) and write out a resulting file containing those primitives in a format understood by a specific piece of hardware designed to process it; and you have to do it in a very limited amount of time which keeps shrinking with every version you release to your client. The point I'm making here is that, for most languages, there are circumstances that make a language X the best fit, or at least a better fit than most others. If language Y is the best fit under a set of circumstances that is a lot more narrow than the set of circumstances that makes language X the best fit, then I'll tend to say that "X language > Y language", at least "most of the time". For me, C++ is one of the languages that end up near the bottom of that list, because the circumstances under which I would choose it instead of any other language (such as D, for example) are extremely narrow.