Jeremy Bernier

One Language To Rule Them All (no, not Javascript)

June 14, 2015

In the web world, frameworks and languages come and go so quickly that it’s nearly impossible to keep up.

Backbone was the hot thing one year, followed by Angular the following year, followed by React the next. It didn’t take long for Ruby on Rails to be eclipsed by Node. Every week a new flux framework comes out.

What’s next?

Of course, like trading stocks, it’s pretty much impossible to predict the future. But here are my thoughts (which in 6 months may be totally different).

I think that Node has its place in the foreseeable future for webapp development, largely because it allows the developer to share code on the client and server. Javascript has become the hot language and will probably stay that way in web world for a while, mostly because it’s the only language that browsers can read.

That being said, Javascript is not the end all be all. It has warts, and makes it all too easy to write terrible code. ES6 is a huge improvement, but it’s still Javascript. Typescript adds static typing, but it’s still Javascript. And Javascript will never change at a fast enough pace or on a fundamental level because standards committees are slow and risk-averse (not wanting to break the web and all).

I believe that coding in vanilla Javascript will eventually be superseded by a better language(s) that compiles to Javascript (eg. Clojurescript), and ultimately a language that also compiles to HTML and CSS as well (eg. Elm).

That language will most likely be functional, declarative, and reactive. I don’t think that the fundamental principles behind increasingly popular technologies like React and Clojurescript are just a fad. Functional programming is getting more popular because it leads to more resilient code. The future is declarative, allowing the programmer to simply specify what he/she wants without having to be bogged down by unimportant details.

HTML, CSS, and Javascript were built 20 years ago. The web has evolved considerably since then, and yet the fundamental trinity of web technologies haven’t changed much. CSS still sucks (even with Sass) and is not totally decoupled from HTML (which uses XML…). No amount of monkey patching and trying to make it as expressive as a language without it really being a language is going to fix the problem.

Either browsers will change the technologies of the web, or we’re going to work around it. The latter is far more likely.

Eventually we’re going to have one language to rule them all, and it’s going to make web development a hell of a lot easier and less error-prone.

I had the privilege of seeing Jeremy Ashkenas (creator of Backbone, Underscore, and Coffeescript) give a talk at Genius a couple months ago, and he basically said the same thing.

The closest thing we have to a unified web language right now is Elm, a young language created by a 25 year old kid during his senior year at Havard. It’s still very premature, but I think it’s a preview of what the future is going to look like.

Jeremy Bernier

Written by Jeremy Bernier who left the NYC rat race to travel the world, work remotely, and make the world a better place.