This is the fourth post in a five-post series about O’Reilly’s Fluent Conference.
I’ve been writing JavaScript for about a year now—not very long at all, considering the language was conceived more than 20 years ago. Nonetheless, even in those 12 short months, I’ve seen the language race forward in leaps and bounds. I’ve seen the decline of Underscore and Backbone, the continued growth of Angular, the slow but relentless advancement of Node.js, the stabilization of node-webkit, and the battle between React, Ember, and Meteor, and more for developer mindshare. I’ve worked with JavaScript server-side and client-side on mobile apps. I’ve seen JavaScript used as an object-oriented language, as a functional language, and as a build tool. It seems the language is advancing into areas it was never meant to be in, taking on functionality never before considered, and becoming more ubiquitous than ever before.
From many of the talks at Fluent, it became quite clear that, from LiveScript to ActionScript to ES6 and everything in between, JavaScript is a living language. One speaker at Fluent who really took this idea to heart is Erin McKean, who gave a talk on the linguistics of JavaScript.
Erin described JavaScript as a “Creole” language, one developed by adults as a second language which becomes a primary language for their children. The comparison is apt: JavaScript was designed as a scripting language for the web. But, just like Creoles, the language has evolved in ways that never could have been expected.
She continued the analogy to describe browsers as “dialects” of the language. Anybody who has written polyfills or shims so their JavaScript works across environments will understand the observation. The main idea is the same, but environmental differences require the occasional switch-up of vocabulary or syntax.
For me, one of the highlights of Fluent was seeing the inventor of the language himself, Brendan Eich, give a talk on the history—and future—of JavaScript.
Brendan started by detailing how LiveScript evolved from the primordial Mocha, of standardization through ECMA International, and of the first standardized release of ECMAScript 3 in 1999. This release marked the core features of JS and the beginning of a widespread, standardized browser scripting language.
When ECMAScript 4 was created, it was supposed to bring about a whole host of new features, but it was never completed. Nevertheless, it was an important period in JavaScript’s life as it became the basis for ActionScript, used primarily for the development of websites targeting the Adobe Flash Player platform. Eventually, though, ECMAScript 4 gave way to ECMAScript 5, which found widespread adoption with its implementation of new functions, a focus on getters and setters, and strict mode.
This brings us to the current day: We’re looking forward to ES6 (and using pre-compilers like Babel), which will bring us new syntaxes and concepts such as classes, fat arrows, template strings, destructuring, and more. Brendan didn’t stop there, though. He went on to describe the details of the already-in-the-works ES 7 spec, including comprehensions, async behaviors, and an “observe” keyword. He even hinted at macros coming in ES 8.
Perhaps the most interesting part of Brendan’s talk, though, was his commentary on JavaScript evolution. He described a tighter release cycle moving forward, where updates to the language will be released every one to two years—which means that an exciting past will be turning into an even more momentous future.