Arggggg!

I’d seen a link to this a few days ago and it was presented in such a way that it seemed like an intelligent discussion of the relative merits of C++ and Java - certainly the reply I read was. I didn’t have time to read it until now and I’m extremely disappointed. If I could remember who linked to that rant I’d probably give up reading their blog. I’m not going to bother rebutting most of the article, there are plenty of incorrect statements in it just as there are plenty of incorrect statements in every article like it comparing any two languages.

How hard is it to make people understand that they should choose the right language for the right job? XSLT is a good language for manipulating XML, Java is a good language for cross platform work, high level apps, applets and a bunch of other stuff, C is good for writing low level stuff, speed critical apps (or speed critical sections of apps), as is assembly, C++ is good for a bunch of stuff, perl is great for a bunch of stuff particularly quick little scripts to manipulate text files, shell scripts are great if you need to perform a bunch of file operations or combine a bunch of small pre-existing tools. Prolog is good if you need a solid logic processing/reasoning engine, HyperCard is fantastic if you want an easy to comprehend language with extremely rapid development, MetaCard is great if you need a cross-platform HyperCard or just hit up against HyperCard’s limits. Javascript is a great language if you need to add dynamism to web pages, Visual Basic is great if you want a rapid prototyping language or a simple GUI tool, .Net is probably even useful if you can make the #*(#@ thing work…

I’ve programmed in all of those languages and probably many more, they all have strong points and weak points but if you want to succeed at using any of them, you have to stop trying to use them like they were your “favourite” language. You will always think Java is crap if you try to write C or C++ code in it - it has a different paradigm and a different way of doing things. By the same token you will always hate .Net if you try to write Java code in it (trust me I hate .Net because of that). The idea that if you can program in one language you can program in any language by just learning the syntax is completely wrong. You have to learn the syntax, then you have to learn the paradigm, then you have to learn the best practices, then you have to gain experience and finally you have to accept the philosophy of the language and stop trying to beat it into submission.

In short, learning a new language is just that - a learning process. You can’t expect to know everything and you must go into it assuming nothing and learn from scratch - everything you have come to expect and assume about your programming language may have changed and you need to find out if it has or not.

If you find yourself criticising the programming language constantly you’re doing it wrong. Thousands of people are most likely happily using that exact same programming language without cursing and swearing - do you really think you know better than all of them?

4 Responses to “Arggggg!”

  1. hammett Says:

    Dude, you can say you hate C#, not .Net. .Net is not a language.


  2. Tahir Hashmi Says:

    Thanks for the criticism. I just updated the content of the article to include a large section called “C++ Goodies” that takes about 50% of the article’s size. The ranting has been pushed toward the end of the article. Hope that the article would be more useful now.

    I too have programmed in several of the languages you mentioned but things like XSLT or Prolog don’t compete with C++ in functionality, so there is no point comparing them.

    I would be grateful if you highlighted the incorrect statements.

    Thanks and have a nice day!


  3. Manish Jethani Says:

    I’m one of the guys who linked to that article, so you can give up reading my blog :P :)

    http://www.livejournal.com/users/mannu/131085.html

    I actually agree with what you’re saying and it’s in fact a very good way of putting it. I’m going to use this blog entry as a reference while explaining to people what I’ve always believed in: There’s no language good for all problems; it’s about choosing the right tool for the job.

    Thanks!


  4. Manish Jethani's Blog Says:

    Eckel on Java (and C#) generics

    While I agree wholeheartedly with the view that one should simply use the right tool for the job at hand, at another level, I believe programming languages should be compared because that’s the natural way for them to evolve—the best features making it…


Leave a Reply

Alternatively, subscribe to the Atom feed.