The Wise and the Foolish Builders November 22nd, 2015

There aren't many truly nice things to be said about the Windows API, but the one thing it got right was that it was agnostic. It didn't care much what programming language you worked in. C, Pascal, Assembly, Fortran, Lisp. As long as you could either compile down to machine code, or use an interpreter to do it for you, then you could use ship on Windows.

Assembly formed a bedrock - you could build anything you liked on top of it. There seems to be a trend now to not supply bedrocks any more. Source-code-only languages like GLSL and JavaScript supply templates for you to build within. Pre-made houses of an exact design they've chosen for you. If you don't like the house, you just have to try and repaint it the color you do like. Choosing a different house is not an option.

This is why compilers are so important. People want to compile programs not because they're concerned only about speed, nor worried someone will steal their source, but because it flattens the details out. It confines the complexity to where it can be supervised by those who care most about it.

When you move house, you don't just grab things and carry them, you package them up into boxes or wrap them in blankets, because the little parts that stick out could get damaged in transit. That's what source-code is; a thousand little parts that stick out, a thousand little ideas and dependencies, all ready to fall off as soon as you try and get it through the door.

Every statement in a program creates a new potential failure point. A program might have 100000 failure points in. With such a potential for failure, you want to really make sure that failure happens on the developers' computer, where you can fix it. Not spread out across the computers of a million customers.

We need more bedrocks.

Written by Richard Mitton,

software engineer and travelling wizard.

Follow me on twitter: