+27 11 463 3633 info@e-merge.co.za

This post was written by Paul Krill and originally published on InfoWorld on 3 March 2017

What lies ahead for programmers in a theoretical post-JavaScript world? Developer Douglas Crockford, best known for his work on JSON, believes the web development staple needs a successor that can fix multiple programming nuances.

Speaking at the recent Oracle Code conference in San Francisco, Crockford called JavaScript the most popular programming language in the world. But, he asked, what happens after JavaScript? Taking swipes at JavaScript and sometimes programming in general, Crockford covered a laundry list of what he would like to see in a future language, noting that “it would be sad if JavaScript turns out to be the last language.”

Crockford griped about systems clutter and confusion in programming, offering a litany of examples. As an example, he mentioned the ongoing disagreement among developers over whether to use tabs or spaces. “Get programmers together and ask, tabs or spaces, and they will have very strongly held opinions and no data to support those opinions,” he lamented. “So we spend a lot of time arguing and having problems interoperating.” He proposed getting rid of tabs as a solution.

Furthermore, JavaScript as of the ECMAScript 2015 specification has both let and var statements but both are not needed, he said. Var declares a variable in a function, while let is for declaring variables in a block. He prefers let because var confuses Java programmers, and he prefers the const statement, which is similar to let but does not accept assignments.

Crockford criticized JavaScript for having two bottom values: null and undefined. “There’s an argument among language designers, should we have bottom values at all? But there’s nobody who thinks you should have two of them,” he said. Crockford advises not using null, as null is associated with some “terrible” design errors. He believes that the next language should not have null pointers, but nullness maybe should be in it, possibly as an immutable empty object.

He also presented a scenario with JavaScript being turned into a purely functional programming language by getting rid of “impurities” like date, the delete operation, math.random and object.assign. Afterward, he stressed replacing JavaScript rather than adding functional capabilities to it.

Crockford emphasized security as well, noting that it should be built into the structure of a language to stifle the exploits that have been happening frequently. The next language also should be better able to deal with multiple cores. Most languages have followed the sequential model of Fortran, executing one operation after another, he said. “That’s not how the world works anymore. We now have lots of cores available to us, which all want to be running at the same time.”