Friday, April 3, 2009

Programming Languages are the root cause of our issues – at least most of our issues


Old firewood ovens have been replaced, refrigerators requiring large blocks of ice are now in museums and junk shops and old hand-churned approaches to mixing have been replaced a long time ago with the miracle of electricity….Progress is everywhere, Moore’s law speaks to hardware improvements….but what the heck happened to our programming languages? They’re frozen in time with no real significant change since the 1970’s (over 30 years ago)……how can you expect quality, performance and usability improvements when the basic building blocks are trapped in time when programmers were still living in caves? I’m sure you’re thinking about object oriented advances….well, hate to say it, for those few really using REAL object oriented coding, it hasn’t really solved much, basic bugging, recoding, lack of reuse, lack of patterns, lack of real error checking/trapping, lack of standards, lack of safety nets, etc. etc etc. are more prevalent than ever.

A telling sign that programming languages have not advanced much since the ‘70s is the continued high use of C – a pure, deep, solid – but OLD – programming language. (http://langpop.com/).

What we need is some real rethinking of how programming is done focusing on the current basic issues of buggy code, difficulty in deployment, team effort, etc…..I’ve seen a lot of people complaining, a lot of domain specific languages being created (which will add to the problem by having the same programming approach in various new domain specific languages) and NO real interest by any major IT organization or company in looking into establishing a new metaphor for programming….TIME TO WAKE UP AND DO SOMETHING……..

3 comments:

  1. I completely disagree with this one.

    First of all tools have changed. If you look at job adverts there aren't many companies still looking for C/C++ developers. Here in Poland the most wanted programming skills are from Java world. .NET is also pretty popular. And it's much easier to find people working in these languages than C++ specialist.

    Another thing is the web. How many applications were developed for the web in seventies or eighties? None. How many programming languages supported web development? None. JavaScript, PHP, Ruby on Rails (to mention just a few) are all new tools which suit better to applications we create these days. No change?

    Of course there are areas where C/C++ will rule for a long time but in terms of general usage it's not the king anymore.

    However popularity and development of programming languages is not the point which is the most important here. If you look for reasons why we create buggy code and crappy applications don't blame tools. Blame people. We have poor standards when it comes to quality although we have a lot of techniques at hand which would have helped us.

    How many projects suffer from poor planning and when it comes to rescue deadlines quality assurance tasks are cut? How many projects know software development techniques which would help to keep high quality (code review, unit testing, programming and architecture standards) but don't use them because it takes time? How many projects try to bring methods which improve overall quality (short cycles, frequent verification, active scope management) but lack consistency to do it in the long run?

    Who should be blamed? Programming language? Software development techniques? Project management methodology?

    No. People.

    ReplyDelete
  2. I'm in total agreement, at the end of the story its always people that take responsibility. I've read/re-read your comment and still think the root cause of many development related issues are the tools being used, many/most of which are still based on programming standards and processes from the 70's. There are some very basics that are not part of any (that I know of) programming languages or environments: memory management, test driven development, ability to migrate to various environments (development, test, production for example), good debugging...I know there are many add-ons to address these, but at this stage of the game they should be built into the native language and programmers should be allowed to focus on solving business problems instead of base development problems. Hardware and networking has followed Moore's law to some degree - why is it that programming languages and standards lag so far behind?

    ReplyDelete
  3. Great post! Everything around us are in progress, even computers! But, our programming languages haven't.

    Even in some computer schools, they are still teaching Java. For me, how can we cope up with changes if we are still "frozen in time?"

    Anyway, thanks a lot for sharing. Good job!

    ReplyDelete