I like C# and all, but when I write JavaScript I don't have figure out if I need to type `using Document.Query;` or just `using Document;` or `using Document.Query.HTML;` I can just type `document.getElementsByTagName('a')` and do what I want to do with the result.
The absence of ceremony makes getting simple things done much easier. It does not make hard things easier. And that's the problem JavaScript is dealing with...people are increasingly trying to do harder things in a big language that is not designed to be extended easily.
On the other hand, these things take time. It took about twenty years for the Lisp community to move toward Common Lisp and another decade before the community had mostly converged. And that was with a language where hard problems such as development tool development are in the sweet spot.
Javascript/Client Challenges
- No built-in module definition system
- No encapsulation
- Prototypal-based inheritance system unlike most languages
- No static type declarations or compilation
- Dynamically modified objects and data
- Minimal standard library
- Variations in browser capabilities
- Document layout model repurposed for application layouts
Javascript/Client Dev Goals
- Minimize bytes sent over the wire
- Handle browser compatibility issues
- Fill in gaps in JS standard library and language spec
- Reuse and share code between apps
- Build increasingly complex full-blown applications that just happen to live inside a browser
[0] http://blog.isquaredsoftware.com/2016/10/presentation-modern...