What’s in a language?
By: Michael Stone
Tags: Mobile, Software Development, JavaScript, Technology

Different languages generally evolve from the surroundings of the people that use them. For instance, it is reasonably well known then the Inuit people have a lot of words about snow. But did you know that the Baniwa tribe of Brazil have 29 words for ants. The Hawaiians have 108 words for sweet potato. The Somail have a huge number of words for camels, whilst the Greeks have just as many for face slapping.

One would assume that with the depth and nuance that could be used to describe sweet potatoes, doing so would be significantly superior in Hawaiian. Alternatively, if I wanted to discuss camels I would be much better off slipping out of English and into Somalian. Yet very rarely when I see a nest of ants do I discard my mother language and start speaking in Baniwa. Firstly, because my Baniwain knowledge is pretty basic but also because it wouldn’t make much sense to the rest of the context of my English sentence, even if my audience did speak both English and Baniwa.

Likewise, it would seem that if I want to write an in depth paper on snow I would be better outsourcing this work to the Inuits. For sure they would need to spend a lot less time writing metaphors and similes to describe the topic at hand. It would be concise, beautiful even, but I personally wouldn’t be able to make heads or tails of it and if there was a change in our collective knowledge of snow I’d be damned if I tried to update it.

This is not to say that learning another language isn’t a fun or rewarding activity and lots of people (I’m not one of them) can converse naturally in many languages , switching between them depending on the audience they want to understand (or perhaps the audience they don’t). However, when most people in the western world want their communications to be understood by the widest audience they tend to use English. English is not the best language, some would argue that English isn’t even that good of a language. There are words that are spelt the same that sound different and words that are spelt differently that sound the same. There are peculiarities in both spelling and grammar that trip up even those that only speak English. I’m constantly using the wrong ‘their’ I probably have already in this little think piece.

It is far from the perfect language but what it does have is a very strong user base. There are very few concepts that I can’t with a little imagination explain in English. It might take longer, not be overly optimised, it may contain lots more words than in another language perhaps, but I can eventually more or less get there. Even better many more people will be able to understand it, modify it, improve it, much more than if I used a more bespoke language better suited to the topic at hand but only a small percentage know.

So why is it that when it comes to software languages we turn this metaphor entirely on its head?

We value using the ‘best tool for the job’ regardless of whether that limits the ability to support or maintain the code moving forward. We silo our knowledge in different layers of architecture because Java, C++ or Python is better in the backend and JS is better in the browser, perhaps I want supreme fault handling so I use Erlang or Haskell but how often do these tradeoffs really make sense?

Much like in language there are times when the justification can be made. I wouldn’t want to try and explain a soufflé in English, I just wouldn’t do it justice, but for the most part these should be the exceptions rather than the rule and the challenge from moving away from the common should be justified under examination.

As far as I am aware there is only one popular language, JavaScript, that can be used across the full architecture sphere from the browser to mobile, testing and in backend business logic layers. Is it the best tool in every scenario? Definitely not. Is it even the best in most? I’m not even sure of that, but if we applied the same logic to software development as we did to written language why wouldn’t we apply it as our first choice default, only moving to other languages when there was a proven strategic benefit in doing so?

This would produce is a blurring of the lines between the software factions. A sharing of knowledge and techniques between Front End, Back End, Testers and Mobile developers. Perhaps the knowledge brought with them from other languages would push JavaScript even further forward, but one thing is for sure it would break down the boundaries and give a team the chance to be truly cross functional during design, build and run.

The advantages in maintainability, readability and consistency of a product can only be significant. So I ask, unless JavaScript is going to seriously inhibit you from building a product your customers are going to love, why wouldn’t you use it? Even if it was a bit more verbose, or slightly less elegant or maybe even slightly slower than the alternative?

</rant>