I apologise if the title offended you, but I’m just about fed up with wars between languages like C and C++ - that is what I feel to be the main focus of this article. Nevertheless, it applies to all language wars: Ruby vs Python vs Perl vs PHP, Java vs C++, C vs Go, etc.
Fighting even happens between widget toolkits, like GTK+ and Qt! It’s quite maddening. Let me begin briefly about the toolkits.
I’m a C guy, and while I’m no expert by any shot, I naturally prefer the GTK+ toolkit since Qt has no natural C bindings (I understand you can just write C and code C++ for the hooks into Qt, but even still I somewhat prefer the GTK+ applications).
Here’s where the problem starts, however. Let’s take John Newbie, who is highly opinionated about his computing choices. He spent weeks researching the bracing style used by the most elite hackers in the world, and he wants all of his computing choices to be the best, from desktop environment to widget toolkit to music player, to browser, to wicd vs NetworkManager, to KDevelop vs Anjuta vs Eclipse. John is fine thus far. What John does wrong, however, is that because he has his preferences, he immediately feels the urge to condemn every other choice not selected by himself. In his eyes, everything else is just sub par - no - it sucks, and it should burn in hell. Even though, a week later he will probably switch some of his tools over to the ones he had condemned.
This brings me to my next point. I prefer C over C++, but I don’t think C++ is a bad language at all; I just prefer C because it does what I need, and I find it does what I need more simply than how C++ does things. It’s important to note that I began learning C++ and then went to C, and have felt comfortable since, so I don’t think it’s a matter of being scared to learn something new.
Because I prefer C, does this mean every C++ application on the planet just sucks and should be rewritten from that horrid language into the prehistoric C? No, because the application does what it has to do just fine. The developers chose that language for whatever reasons, and it worked; look at Chromium or Firefox, KDE or Fluxbox - all use C++.
When I write an application, I choose C because I feel like it. If I had some inexperienced C++ newbie criticising me for my application being in C instead of C++, I’d tell him to write a C++ implementation himself and bugger off - assuming the tone is that of a know-it-all newbie.
Then there’s the scripting language wars, namely between Python and Perl. Pythonistas generally accuse Perl of being to broad and messy, while perlists accuse python of being too simple and straightforward - generally.
Well how about this. The more time you spend arguing which language is better, the more time you should have spent writing code. Compared to arguing, any language is more productive than nothing, so unless you’re a software project deciding what language to use for x and y, don’t do it. Stick to your tools, and use what you know.
Every language has its downs, but if you know your own tools as best as you can, then congratulations: you are the best coder on the planet.
When new programmers are asking which language to begin with, of course this is fine; it isn’t a war, but a matter of choice. But when you’re competent in no language, and you continually switch between all these different languages and condemn each one you give up on, unless it’s for curiosity, you’re wasting your time.
Programming is meant to be fun. It’s satisfying to pick a new language and mess around with it, because you can learn something new from every language. It becomes an issue when people are not learning new languages for fun or curiosity, but simply because they hear a lot of people slagging their language and hyping up this other language.
I should learn language x because some 1337 hacker said he didn’t like it, and that language is only for n00bs.
The only thing I can say to the above, is ‘ugh’.
I think anyone who hypes a language that much can’t be a very good programmer; where is the time actually spent coding?
I use KDE and GNOME. KDE is in C++ - shock horror. I do not develop in Qt. It is not being a traitor, it is not supporting the enemy, it is using my bloody computer. The KDE devs chose Qt, and Qt is in C++. It works. It’s not broken or horrible because of the language it is written in; in fact, Qt applications would have to be some of the best applications I’ve used (Amarok, Okular, Dolphin anyone?).
I use Gentoo, and Portage is written in Python whereas other package managers are usually written in C. Problem? Nope, because Portage works.
Get over the language wars; stop them right now. In the time you would usually spend arguing, I have proposed a new way to lead your life:
- Choose a language and widget toolkit that you feel most comfortable using.
- Write an application with that language and widget toolkit.
- Have a cranial kernel panic from not knowing what to do with all the spare time you just gained.
- Buy a cat
Stop this language wars nonsense. It isn’t helping anyone, and it certainly isn’t helping you. Get a life, find something worthwhile to do or argue about, because arguing about subjective issues - which have no absolute answer - are essentially as useless as you are while you sit at your computer listing all the negatives of using the languages and tools which you don’t.