Chris EK, on life as a continually learning software engineer.

JavaScript's Historical Context (According to Douglas Crockford)

Jul 21st, 2014

Summary: I’m working my way through a few must-watch videos about JavaScript. If you know JavaScript, pretend to know JavaScript, or hope to learn JavaScript, check out those videos. Or read this and the following post (and save yourself three hours of video-watching), in which I pull some of my favorite quotes from what Douglas Crockford has to say about JavaScript.

Notes: The quotes below represent some of the key statements (as I judge them) in order of their appearance in Crockford’s first and second talks on JavaScript. Read together, they outline the main trajectory of Crokford’s presentation, but they are not intended to replace the entirety of the talk. The first 50 minutes of the first talk, which cover the history of programming before 1970, are excluded from this post, not because they’re unimportant (they are!), but because it was difficult to pull single quotes that represented the content. All emphases mine.

Innovation since the ‘70s

“The other thing we’ve seen is an end to CPU innovation. We used to see a lot of really radical new designs happening all the time, but we don’t see that happening anymore. Basically we’ve got three architectures that we use for most of our stuff: virtually all the computers are on Intel, most of the game platforms are on Power PCs, most of the mobile devices are on ARM, and that’s it. Nobody’s making new stuff, nothing radical, it’s just refinements of stuff that’s been happening for several decades.

“We’re doing even worse in operating systems. It used to be that every model of every machine had its own operating system, and that came with a lot of obvious inefficiency, so we’ve pushed that down and now we have just two: we’ve got Unix which was developed in the ‘70s, and we’ve got Windows that was developed in the ’80s. Of the two, Unix is obviously the better one, but there’s no innovation happening in operating systems. Basically we’ve been rewriting the same systems for 40 years. That’s just not where we do innovation. Where we do innovation is in programming languages, and that’s been going on for quite a long time.” (link)

Leaps

“Software development comes in leaps, and our leaps are much farther apart than the hardware experiences. Moore’s Law lets the hardware leap every two years; we leap more like every twenty years. Again, basically we need a generation to retire before we can get the good new ideas going, so despite the fact that we’re always talking about innovation and how we love innovation and we’re always innovating, we tend to be extremely conservative in the way we adopt new technology.” (Link)

The beginning of JavaScript

“Basically, [Brendan Eich] took these components: he took the syntax of Java, he took the function model of Scheme—which was brilliant, one of the best ideas in the history of programming languages—and he took the prototype objects from Self. He put them together in a really interesting way, really fast; he completed the whole thing in a couple of weeks. It’s a shame that he wasn’t given the freedom that Xerox had to spend a decade to get this right. Instead of ten years it was more like ten days, and that was it. I challenge any language designer to come up with a brand new design from scratch in ten days and then release it to the world and call it done and see what happens with that.

“One of the consequences of it was that there are parts of it that are just awful. If they’d had more time they probably would have recognized that and fixed it, but they didn’t. Netscape was not a company that had time to get it right, which is why there’s no longer a Netscape.

“But despite that, there is absolutely deep profound brilliance in this language, and this language is succeeding in places where many other languages have failed because of that brilliance; it’s not accidental that JavaScript has become the most popular programming language in the world.” (Link)

A great time to be a programmer

“One thing that’s different now than in the ‘50s and ’60s is there are lot of computers out there, and there are a lot of people writing programs now. It’s possible to get a community of people even if you have a minor language, enough to do useful things, to do a lot of group work. You’ve got a group large enough to justify writing books, which was something we didn’t have back in the ’50s and ’60s. So I think this is a great time to be a programmer. We have lots of choices, and we need to be smart about making those choices and be open to accepting the new ideas, because there are a lot of new ideas out there that we shouldn’t be rejecting just because they’re unfamiliar and we don’t see the need for them. There are actually a lot of good ideas in all of these languages, not least of which is JavaScript…” (Link)

Mythology of innovation

“Now, if you were here last time you’ll remember I went through the history of everything that ever happened, starting with The Big Bang, going through The Dawn of Man, and then finally there was JavaScript. The reason I did that was because understanding the context in which this stuff happens is really important to understanding what we have now. Without that understanding you’re consumed by mythology which has no truth in it, that the history of innovation has been one thing after another where the new, good thing always displaces the old stuff. That’s not how it works, generally. Generally the most important new innovations are received with contempt and horror and are accepted very slowly, if ever. That’s an important bit of knowledge to have, in the case of JavaScript.” (Link)

JavaScript has good parts

“Having that background [understanding history and innovation] allowed me to make the first important discovery of the 21st century, which was that JavaScript has good parts. This was an unexpected discovery, and when I tried to share it with the rest of the community there was a huge amount of skepticism; a lot of people refused to believe it was possible that JavaScript had any redeeming value whatsoever. In fact, it has very, very good parts. But I’m getting a little ahead of the story, so let’s back up a little bit.” (Link)

Why it’s called JavaScript (Netscape-Sun history)

“It was very clear at the time that there was a lot of excitement about Java and the Netscape browser, and Sun and Netscape decided they needed to work together against Microsoft because if they didn’t join forces Microsoft would play them off against each other and they’d both lose. The biggest point of contention in that arrangement was what to do with LiveScript. Sun’s position was: “Well, we’ll put Java into the Netscape browser, we’ll kill LiveScript, and that’ll be that.” And Netscape said no, that they really believed in the HyperCard-like functionality, and they wanted a simpler programming model in order to capture a much larger group of programmers.

“So there was an impasse, and the relationship almost broke up, when I think Marc Andreessen—and I have been able to document this, but people have told me—Marc Andreessen, maybe as a joke, suggested: ‘let’s change the name to JavaScript.’ And it worked! Except that Sun claimed ownership of the trademark. Even though they had nothing to do with the language and they tried to kill the language, they said ‘we own the trademark, but we’ll give you a license to use the trademark’. Netscape said ‘great, an exclusive license, only we can call it JavaScript, that’s fine’.” (Link)

The destruction of Microsoft

“At Microsoft they’d been watching this with some alarm, particularly when folks at Netscape were saying that Netscape Navigator was going destroy Microsoft. Microsoft said ‘oh, we don’t want to be destroyed’. It turned out Netscape Navigator didn’t destroy Microsoft. In fact, the software that is going to destroy Microsoft is Windows Mobile.” (Link)

JavaScript naming confusion

“What should we call the language? There’s a lot of confusion. Some people still think that JavaScript, JScript, and ECMAScript are three different languages, and that’s not the case. It’s three silly names for one silly language. JavaScript isn’t actually an open name, which is surprising in that this is the language of the world’s biggest open system. It’s a trademark now of Oracle, and we don’t know what they’re going to do with that. We probably should call it ECMAScript, except it’s such an awful thing to call it.”