Step 1: Ship asm.js to every browser.
Step 1.5: Do a complete job of binding asm.js to all browser features. (My impression is that right now it doesn't do DOM manipulation, for instance.)
Step 2: Define a serialization of asm.js that is more like a traditional binary bytecode.
Step 3: Everybody compiles to that bytecode. No JS is in sight. Language diaspora slowly follows. Benchmarks start flying; JS, optimized as far as it can possibly be, still can't beat out more statically typed languages, though it only matters for the most performance-sensitive applications.
This is by far the most likely outcome at the moment, in my opinion. I'm not advocating or celebrating this (or necessarily upset about it, either), just observing the current landscape.
When I talk about the "end of history", yes, the web is the correct focus to read it.
Yet, companies are demanding the devs to be more than frontend or backend devs. Look at the DevOps movement. JS allows your developers to work on both sides of the network with a single knowledge. It may become more than a blip, though I doubt it could ever takeover the backend or smartcards for instance.
So your point (correct me if I'm wrong) is that we'll be going down from JS to a lower-level paradigm, then "something" will bump and from this diaspora you're talking about, one language will prevail, I guess.
I like your perspective of viewing JS as the first native inhabitant of an island called "browser languages". Yet I'll need to think more before I can agree or disagree.
> Something will come someday that will supersede it.
Js gained wide adoption thanks to favorable comparison on specific traits when compared to other languages.
- lower barrier to entry as far is toolchain setup is concerned. Nothing to install to build a Hello world.
- no weird concepts to grasp at first: many commonalities with other languages, meaning you don't start the learning curve with a big step.
I could go on but the gist is that JS is kind of like the pop music of programming languages: easy to like, with room to grow (as opposed to Justin Bieber or Miles Davis who miss one of these traits.)
To the question of what will be the next "buzz" (Js is a buzz, but those have different timelines and emotional loads than "leave Britney alone") the answer is:
Something even easier to grasp and access with a barrier to entry, smoother learning curve and wider applications.
It might even be an abstraction like those of Brett Victor.
I'd say that's not so much the language but what it allows beginners to achieve that is wave-defining.
Development has become mainstream and JS is the Pop Music of our days.
* Run on every browser in use
* No compile/build step required
* Work with browser tooling and debuggers
And it will probably need:
* Familiar syntax
* Work with all significant existing JS tooling, libraries, and frameworks
...and that's before we even get to the merits of the language itself.
It's worth noting that ES6 actually does not run without compilation on every browser (and will not for a while) since it introduces breaking new syntax instead of stuff that could be polyfilled. For all intends and purposes it's a new language (it's like C++ to C). So maybe any other superset of JS would have the same chances.
- make it easier to use multiple processors
- use a new type of DOM designed for web app GUIs which can be translated as necessary back to our current DOM
- have built in version checking for its interpreter/JIT
- make it easier to manage memory usage
- have a module system
- be highly specialized towards the web and web app development
- eg. built in language components that make communicating with the web server easier
- be easier to implement in the browser
I guess that if we want to have something after JS, that will come either with:
* more standardized languages, with native in-browser VMs, as Google is trying to do with Dart.
* get rid of the browser.
The latter is way more contraversive, but I like it nonetheless.
The less contraversive version is: the end of the browser as we know it.
how will platforms evolve?
I'd say it will be a language that is parallel to the core and only sequential in edge cases, because thats what the underlying platform (processor, graphics card) is evolving to. parallel first, sequential second.
I think that from the user perspective, one gets from Internet nearly everything one wants in terms of content. The new frontier, I believe, is interoperability. That is the possibility to make it work together and in smart ways all of our electronic devices, from the tiniest (e.g. wristwatch) to the biggest (e.g. TV set, car), anywhere any time. So I predict the next platform shift will be initiated by a large consumer electronics manufacturer.
This is precisely where my thoughts led me, but by a different path:
* it's standardized
* it's easy (yes, it is, period)
* it's f*ing included in each and every browser, and its rise followed closely that of the web.
Moreover, the fact that Adobe came with a more powerful yet proprietary VM (namely, Flash) forced evolution of Web standards (JS included) so they could live on. That's Darwin 101.
Every use of JS outside the browser comes from developers willing to have the same ease of use out-browser than they had in-browser.
But JS, as popular as it is, is not yet as popular outside of the browser than it is inside of it.
Stop looking at the Web ecosystem and dive into the industry, you'll see.
What will happen to JS if we kill the browser?
Or what will come out that will kill the browser? And will it have an impact on JS?
The bond is yet very tight between those two pals, don't you think?
And the old sexy. Back in the day, UNIX was a piece of garbage and the future was LISP machines, if you asked a lot of people. Nowadays, to similar people, C/Go/Java are garbage and the future is, I dunno, Haskell or something.
I like the idea of LISP, I not only aced the SICP class back in college but tutored it, too. I get it. And I wouldn't use a LISP for the majority of the work I do these days, it's just harder to work with than imperative code for a lot of normal, boring business use cases. You can write imperative code in a functional style when you have to, it's a lot harder to get the imperative advantages from a purely functional language.