Google & the Future of JavaScript
infrequently.org
infrequently.org
From a philosophical standpoint I'm rooting for an open, interoperable web as much as anybody. As a programmer though it's hard to feel much enthusiasm for such a fragmented, baroque, and inadequate toolkit.
One thing the richer mobile toolkits leave out, that drove the web's success, is the "view source" feature, a tremendous way to on-board new developers.
Browsers are at a disadvantage because they need to have a ton of security built in because people casually go to websites, whether or not they are malicious, but are more hesitant to download an app. Also if an app is malicious it can be removed from the store, taking down a website on the other hand is not an easy feat.
Maybe it's just me but I also find that Java's static type checking eliminates a lot of the dumb mistakes I tend to make in JS/Ruby/Python.
However, it also defeats the point of using HTML in the first place. When you abstract everything away to make the development environment sane, you abstract away the features that make HTML useful, like the ability for the markup to be interface agnostic.
I often feel the browser should become what Java was intended to be and let HTML and CSS be one application of that system. It is the direction we seem to be heading. Giving the applications a more direct path to the hardware is the natural evolution going forward. Why are we fighting the HTML/CSS layer? It is surprisingly accommodating, but adds a lot of needless overhead.
Now the experience is much broader, many users will have a smart phone, maybe a Mac at home and PC at work, then throw in the use of web applications like Google Docs and the whole interface landscape has become much more diverse.
Leaning towards the web as a user interface guide makes as much sense for most developers as anything else.
(See also Java/GTK/... cross-platform desktop apps)
Having said that, we do native apps as well; on iOS the experience is better, but you'll be paying a bit more to get it to that point. While on Android, it is just very very hard to get something as nice looking as we can do it in HTML5. It can be done, but personally I don't think it's worth it. For our development process we use 'business value' as a key indicator of deliverability and the difference between the PhoneGap apps and and native apps on Android do not deliver enough (actually any) business value to warrant the higher price tag.
Unless Microsoft adopts Dart, I see them fighting hard to improve the JavaScript development experience.
Why not just leave JavaScript alone, and push for a more universal way for browsers to run code? Then different languages could be used, and those who want it could program with more advanced languages (or whatever they deem to be advanced).
Scoped Object Extensions. ClojureScript.
Modules. ClojureScript.
And you don't have stop there. Want advanced pattern matching? Want logic programming? Want delimited continuations?
You don't need to wait for Apple, for Google, for Mozilla, for Oracle. Language development is too important to not happen where development happens best - in the field and in open source software projects.
And, your statement that development happens best in open source software is optimistic and opinionated.
All those companies are moving their languages and libraries at an incredibly slow pace and will continue to do so (since their languages don't really give them any alternatives). Nothing pessimistic about that. They are large companies with little room for flexibility.
The best type of comment to make!
Also, there's merit in what he says about language development. A lot of the really nice languages are developed in the open.
1) "this" binding is dangerous - you can easily shoot yourself in the foot with it (it is a "foot-gun").
2) "this" binding can probably be repaired with softly-bound "this".
There's no such thing as "binding foot-guns", the phrase breaks down between "binding" and "foot-". But "'this' binding" and "foot-gun" are both somewhat obscure phrases so this probably was not as clear as it could have been.