I am delighted to announce that I will be joining Jeremy Ashkenas, David Nolen, Joanne Cheng, and a host of other thoughtful (and exciting!) speakers at Barcelona Future JS, May 1 – 3, 2014. Future JS is organized by the same good people who’ve organized the amazing BaRuCo (“Barcelona Ruby Conference”), and I’m giddy with anticipation.
We’re at a very exciting place in JavaScript’s history. I predict that some years from now, we’ll look back at this as a turning point. JavaScript owes a great deal of its popularity to being in the right place–the browser–at the right time-the explosion of the Internet. Most people accept that it is an imperfect language with some good bones and some people who are amazingly passionate about building on those good bones.
And there is exciting building going on, in compile-to-JS languages like CoffeeScript, in compile-to-JS technologies, in sweet.js hygienic macros, and in compile-to-js infrastructure like asm.js. But that’s far from all. Within JavaScript itself, people are doing great work on new paradigms like promises and react.js.
But people are also looking backwards. In mature OO language communities like Java, the notion of class hierarchies has been severely deprecated. Folks have realized that building deep ontology of subclasses leads to the fragile base class anti-pattern.
And yet… ES6 introduces a class
keyword that may actually encourage us to move backwards to the programming style of the 1980s and 1990s. Not a day goes by without finding another “how to write classes in JavaScript blog post.” I wrote one myself!
the future
JavaScript is unique amongst languages in that it is so minimal, so un-opinionated, that literally anyone can invent The Next Big Idea. It provides so little that in some ways, it makes anything possible. That’s part of why there are so many ideas going on in the JavaScript community, why there’s a “Cambrian Explosion” of frameworks and libraries in JavaScript. That’s what makes it a very interesting language and very interesting community if you’re interested in new ideas, if you’re interested in the future.
And being interested in the future, I think it’s wrong to slavishly copy the ideas of forty years ago: JavaScript may have first-class functions and delegation through prototypes, but it isn’t Clojure, it isn’t Haskell, and it certainly isn’t Smalltalk.
That doesn’t mean we should ignore the lessons those languages teach, and ignore the wisdom those communities have accumulated. It’s ridiculous to blatantly ignore sensible and proven practices like encapsulation and use “JavaScript isn’t such-and-such-a-language” as an excuse for writing fragile, coupled code.
We should learn from what came before, and then we should go ahead and invent what is to come next. We should not ask ourselves how to copy the ideas of 1984, we should ask ourselves how to invent ideas other languages will copy from JavaScript in 2044.
I’m looking forward to Future JS, and not just because it’ll be an opportunity to talk to people about these ideas: It’ll be an opportunity for me to hear first-hand some of the ideas that might be part of JavaScript’s legacy in the years and decades to come.
If that excites you the way it excites me, I’ll see you there!