in reply to TMTOWTDI... and most of them are wrong

Although you don't realize it, you're asking for a program that will verify that any other program is correct. This, in essence, is what Godel proved to be impossible in his Incompleteness proof and what the Halting problem is all about. At some point, you have to trust the programmer, even if only just a little bit.

Now, there's two ways of approaching this need to trust the programmer. Languages like Java say "I'm only going to trust you as far as I have to, but no further." This may be perfectly valid in some situations. I know that if I'm coding with a bunch of people I don't know, I'd prefer to do it in Java instead of Perl.

On the other hand, languages like Perl and C say "Since I have to trust you, I might as well TRUST you." And, so, they leave as much as possible up to the programmer. The major difference between Perl and C (which is what BrowserUk alluded to) is that Perl provides a lot of scaffolding for you. Little things like automatic memory management, useful types, and dynamic recompilation.

My reasons for this prediction were that corporations and other large organizations have less use for brilliant code that only to a small number of Perl wizards can grok, than for mundanely-written code that even the non-wizard can follow.

This point deserves a special response. There is "brilliant code" in every language that only the wizards can grok. When was the last time you read the Perl source?

My last contract was at a place where the code that underpinned half their applications was truly understood by only 4 people. Yes, others could have come in and studied the code and become experts, if there was a business case to do so (and there are arguments either way). The same goes for the steaming pile of Javascript crap I was handed, as well as any significantly complex application. Just because the code is simple to read doesn't mean that application is simple to understand. And, just because the code is hard to read doesn't mean the application is hard to understand.

Remember this - reading code is hard. If it was easy, then no-one would pay use the big bucks. It's not supposed to be commotitizable. If it was, then outsourcing would actually work in the average case.


My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
  • Comment on Re: TMTOWTDI... and most of them are wrong