Press "Enter" to skip to content

Category: Developing

Babel

The story of the Tower of Babel is often on my mind. You know the story. According to Genesis 11, Mankind grew so prideful in their knowledge and skills that they decided to build a city that would compare with heaven. At it’s center would be a tower that would reach all the way to heaven so that their city would make a name for itself that would never be forgotten. The God of the Bible visited the town and saw their plans held a single point of failure. They were predicated on the fact that all men spoke the same language. This made it easy for engineers to devise their tower. God, being God, decided to remedy that by making them all speak different languages. And the engineers of the Tower of Babel were stymied. Planning and building complex projects became impossible and the citizens scattered across the globe.

This is how we ended up with different languages and millennia of international confusion. Good story. While it may be a retcon of how we ended up with many tongues, it does point out the benefits of a shared language when attempting complicated projects… or rather the problems you can face without one.

As a person who’s made a career out of learning computer programming I have an interesting perspective on the evolution of new languages. One would think, knowing the lesson of Babel, that smart people would work toward a single unified programming language that all people could learn and use. But that’s not what we’ve done is it? Computer scientists keep coming up with new languages. Each year there are more, not fewer ways to tell a device what to do. Did the Tower of Babel teach us nothing?

Depends on your point of view I guess.

If you look at each coding language you find that it is built to a purpose. Each language is an answer to a question, a solution to a problem. Assembler allowed early engineers to do amazing things but sweet Jeebus! the mind it took to learn it! BASIC might not have had the power of Assembler but it brought programming to the masses of mere mortals who didn’t naturally think in raw bits. Both were powerful in completely different ways.

Compare a runtime language like Javascript with a compiled language like Swift. These are my two current working languages, though in my life I’ve worked with eight. They’re both incredibly human readable, meaning you could show it to your grandparents and they’d probably be able to understand the gist of some code. But Javascript is made to be interpreted at runtime by your computer’s browser and turned into machine code on the fly while Swift is made to be interpreted and turned into machine language (compiled) before it ever reaches your device. This makes your machine run each very differently. Compiled Swift doesn’t need your computer’s resources to do much beside the tasks specific to the program itself. Runtime Javascript requires your browser and your processor to evaluate and compile the code as it encounters it, line by line. So, every time you open a page, your computer has to do the job that a compiled language did once on the developer’s computer.

Why does this matter? Well, if your machine is really speedy and you’re plugged into a 110 volt outlet, probably not much. You won’t notice the performance hit or the power drain (though your fan may kick in when the going gets hot). But, if you have a tiny little device in your pocket running off a battery, it may be the difference between getting a full day on a charge and having to plug in at lunch. It might be interesting to calculate exactly how many watts are burned over and over again as those instructions are recompiled over and over again. World-wide it might amount to something.

Anyway, different languages for different problems.

As we move into the world where your life is full of computer enabled devices there will be more problems to solve. Many different power profiles. Many levels of human interaction, including some where no human interface is ever required. I expect we’ll see more, not fewer coding languages emerging. Will that cause more confusion and keep us from building great things?

Nah!