Programmers suck; Programs suck; Programming languages suck.

Some interesting news from the world of computer programming. A company that provides products to improve code studied a bunch of programs and evaluated how badly they were written. Cobol programs had the lowest rate of bad code, while Java the highest. Part of this is because Cobol programs are all old and have been revised and fixed up quite a bit, but it was also suggested that Java programs relatively suck because modern programmers relatively suck. For this reason, maybe Microsoft's latest Evile Corporate Decision makes sense: The new Microsoft 8 App Store deal allows Microsoft to kill any of the apps you buy if they feel like it. You agree to that when you buy apps there. And all this is rather interesting in light of a recent commentary suggesting that what is needed to keep software development going is the invention of new programming languages because existing languages can't easily be upgraded beyond a certain point, so it is better to create entirely new ones.

Tags

More like this

Since my post on datatypes for my π-calculus language, I've gotten a bunch of questions from people who (I guess) picked up on the series after the original post where I said that the idea of the series was to see if I could create a programming language based on it. The questions are all…
Way back, about three years ago, I started writing a Haskell tutorial as a series of posts on this blog. After getting to href="http://scienceblogs.com/goodmath/2007/01/haskell_a_first_step_into_mona_1.php">monads, I moved on to other things. But based on some recent philosophizing, I think I'…
I just heard that John Backus died last saturday. John Backus was one of the most influential people in the development of what we now know as software engineering. In the early days of his career, there was no such thing as a programming language: there was just the raw machine language of the…
I came across an article yesterday about programming languages, which hit on one of my major peeves, so I can't resist responding. The article is at greythumb.org, and it's called [Programmer's rant: what should and should not be added to C/C++](http://www.greythumb.org/blog/index.php?/archives/…

Greg,
also really scary is the number of undocumented spreadsheets being used out there, some of which are business-critical applications.
I was first shocked by this during our Y2K effort and - be assured - they haven't got less.

Let me suggest that Cobol and likely Fortran programs are better because they don't and the complexity of interactivity. You enter the data, the program either accepts or rejects the data, and you try again. None of this event driven loop business, or let alone talk about the complexity of information sharing between programs that run at the same time such as OLE and its children, all be it that much of the boiler plate is now machine generated.

Oops typo I did not catch it should be add the complexity

Another possibility is that the figures weren't corrected for language expressiveness - if you just count bugs per kloc, then cobol wins simply because it takes more lines of code to express the same process compared to other languages.

(Whereas in, say, APL, you'd have to count bugs per 10 characters, or something like that.)

By Andrew G. (not verified) on 09 Dec 2011 #permalink

'Old' code was more thoroughly checked. A bug fix wasn't that easily sent to a client as is these days. Add in that these days restrictions on what a computer/code can handle are vastly increased (though that didn't stop people from writing crappy code) so people don't have to prepare as much to start coding anymore..

By Who Cares (not verified) on 09 Dec 2011 #permalink

Google recently released a new programming language (Dart) as a replacement for Java Script for the reason you mention. It is better to replace a language than upgrade it. Comparing COBOL and FORTAN with Java is just silly.

By Sarcastico (not verified) on 10 Dec 2011 #permalink

Having been involved in software since 1969 in various positions up to VP of software, I can say from experience that programmers being poor at their job is NOT something new.

I have been at companies with up to 200 programmers. Of that group about 5 or 6 were excellent programmers, 30 others were OK, if you give them specific short tasks to do that were well specified, and the rest of the programmers might as well have been living on the moon and were useless.

The same ratio seems to hold for software consultants too. A few are worth up to $100/hour because they get a lot of work done in a short time and do it with quality. The rest are a waste of money.

By NewEnglandBob (not verified) on 10 Dec 2011 #permalink

â...what is needed to keep software development going is the invention of new programming languages because existing languages can't easily be upgraded beyond a certain point, so it is better to create entirely new ones.â

&_&

Perhaps the âBlubâ* programming language factories really do need to keep churning out these horrors...

âWe were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.â --Guy Steele.

...but it sure as hell isn't for the reasons McAllister gives. ;-)

* http://en.wikipedia.org/wiki/Paul_Graham_%28computer_programmer%29#Blub

Been programming since 1978. Studied the math of it before that. Nerd. FORTRAN, APL, Pascal, C, LISP, Prolog, C++ Objective C, C#, SQL, and played with lots of other languages. Cut maybe 1 million lines of code i guess or more. Degree in Com Sci with some post grad papers - straight A's.

Languages suck because they allow programmers who suck to write code. Or programmers who are tired, stoned, pressured, angry etc etc.

When functional languages started to emerge there seemed to be some hope but the hardware was never up to it and let's face it, if every programmer had to be a mathematician most of the code out there would never have been written

As well, it seem pretty clear that some people, no matter how hard they might try and no matter how long they have a go at it - will never be able to program - their brains just don't seem to get it. Sure they can do a mashup or a spreadsheet or tinker with some BASIC but they just don't have the combination of creativity, vision, tenacity, math, obsessiveness or whatever it is to do it well

All that being said the biggest contributor by orders of magnitude to bad programs is bad managers and bad project leaders. Because they don't "get" the consequences of their shortcuts they direct things to be built that evolve to a point where the cost to maintain them exceeds the cost to rebuild them from scratch and the available budget.

I used to do high level consulting where i'd be asked to look at existing systems and then give them a bottom line.

Whenever i said "it's crap you have to start again and it will be expensive"

The usual response was to pay me and pretend i never existed. I'd watch those companies struggle with reality as time passed - usually if they did not go belly-up they'd at least loose market share and lag way behind until they did address the issue.

Things built by bright com sci trained people seem to do a lot better than things directed by managers who have neither understanding of code or trust in opinion of their best programmers.

But that's the nature of things - consider how absolutely ugly MS Windows was from the very start and understand that the death of MS in the mobile and embedded device market is because the only thing they seem to have left is ~30 year old DEC OS structure that suits big boxes but little else.

People rush things to make money and those things have a lifetime based on how ugly they are under the bonnet

no matter how good a programming language is it's not going to do much to stop that

pop

They've got something to sell, and wouldn't you know it, they say you need what they've got.

COBOL is an awful language but unfortunately is likely to hang around for a long time yet. JAVA has its uses but in my opinion is highly overrated and has some truly awful features that have you doing calisthenics to accomplish what should be a straightforward programming task. I'm astounded that JAVA sees such widespread use in big businesses - Sun sure had some good sales people.

Once upon a time people created new languages primarily because of the limitations of other familiar languages. These days I think most new languages are created for the hell of it. It's getting quite ridiculous - the Python camp is at war with the Ruby camp etc.

By MadScientist (not verified) on 10 Dec 2011 #permalink

Oh, the Pythons hate the Rubys

And the Rubys hate the Pythons.

And the Perl-ers hate the TCl guys

And everybody hates C#!

F# is my current favorite language. It's really sweet. Coding in functional languages is quite lovely. I learned Haskell many years ago by working through Simon Peyton-Jones's book, Implementing Functional Languages. It's got some tricky problems for the functional language beginner, and I remember meditating on one particular problem for hours, and when it finally "clicked", being moved to tears by the beauty of the code.

By InvincibleIronyMan (not verified) on 10 Dec 2011 #permalink

The article in Computerworld is unreadable, starting with the headline. "Cobol Apps"? WTF does that mean? Is there a link to the actual study rather than to this mishmash?

--bks

"Humans are allergic to change. They love to say, "We've always done it this way." I try to fight that. That's why I have a clock on my wall that runs counter-clockwise."

--Grace Hopper

http://en.wikiquote.org/wiki/Grace_Hopper

@InvincibleIronyMan#12:

'... and when it finally "clicked", being moved to tears by the beauty of the code.'

See, many language designers would see that as a fatal flaw (obscurity of code) rather than something wonderful. In the end people use whatever language they want (even though it is ill-suited to the task) and you'll always get some people defending a particular language. One of the worst languages I've seen is ADA - it's so bad that the designers later tweaked things to put very severe limits on what any one module can do - and now the horrible mishmash is touted as being 'reliable', 'maintainable', and 'encouraging correct coding'.

By MadScientist (not verified) on 11 Dec 2011 #permalink

@MadScientist Jeez, what do you take me for, some kind of masochist? Take it from me, Haskell is nothing like Ada! Neither is F#. I know Ada, it's like Pascal for anal retentives! Haskell is incredibly terse and powerful. Using it, you really feel like you are thinking about the problem you're trying to solve instead of struggling with how to express it in code.

F# is really nice because you get all the power of a functional language, but you can write in pretty much any style you like. Functional, imperative, object-oriented. It's strongly typed, but it has built in generics and type inference, so you can use it like a dynamic scripting language for rapid prototyping. Then, when it comes to writing a final product, you can flesh out your program and give it a properly rigorous and formal structure. And it's .Net, so you have that whole class library to work with right off the bat, whether your coding under Windows or on MacOS or Linux using Mono, the open source version of .Net. I really sound like I am trying to sell it to you don't I? Believe me, I am usually pretty hard to please!

If you are interested in taking a look at it, the introductory videos by Dom Symes a a pretty good place to start: http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Don-Syme-Intro…

Are you a Python programmer? You sound like you might be. Gotta love Python.

By InvincibleIronyMan (not verified) on 11 Dec 2011 #permalink

I have only one requirement for a computer program that as yet no regularly used program has implemented, and it is very very simple. It would make programming so much more error free, effective, and cool.

I'm not sure how much money I require to pass this on. Waiting for offers from Microsoft, Sun, all the big guns.

Screw the big guns. I'll volunteer to help you implement your idea for for free if it's any good, so long as you agree to Open Source it and give it away for nothing.

I made applications and websites for years for people like BT, Reuters, Lloyds Bank, Marks & Spencers et al. and it turned something which I love, programming, into an annoying, painful torture. I am not going to do it again unless it fulfills one requirement: it must be a good project that helps people and is worth doing for it's own sake, commercial considerations be damned. I'm not going to help these people ever again, and if I could help to undermine them then so much the better.

I must say, the title of your post really caught my eye since it's something I've been saying for years.

By InvincibleIronyMan (not verified) on 12 Dec 2011 #permalink

Some day I will write up the specifications for my project. It applies to allmost all programming languages but is especailly relevant to text processing and would need to be implemented in shell programming as well.

All that being said the biggest contributor by orders of magnitude to bad programs is bad managers and bad project leaders.

Good points, but you're still missing the real biggest problem: fucking customers. "Yeah, we'd like you to write some software to implement a business process that we don't even understand ourselves and which changes more rapidly than our understanding of it does. We're going to give you a bunch of contradictory requirements that we're going to keep changing at random for no apparent reason and with no regard for any knock-on effects. Oh, and we'd like to complete the project in half the time you said it would take, and the go-live date is set in stone because Marketing have already distributed a bunch of literature..."

Bastards. ;)

I do a lot of programming and from time to time I hear (or even say) âLanguage X Sucks for reasons A, B and Câ but Iâve come to realise that 99% of the time itâs not languages that suck itâs the programmers that use them.

I think that they're right that it is better to create entirely new ones! It's too hard to upgrade the language

By Development guys (not verified) on 17 May 2017 #permalink