-
Notifications
You must be signed in to change notification settings - Fork 789
Rationale
There are many environments (e.g. browsers) in which Javascript is the only programmable technology. There are others (e.g. mobile) where Javascript is the most portable development approach. And Javascript is widely used as an extension or scripting language, e.g. as an extension or indexing language in a database.
However, even Javascript's proponents will acknowledge its shortcomings. There are many dark corners in the language semantics. It is not particularly concise, and it's not well suited for metaprogramming or extension. Most troubling is that writing robust Javascript programs, while possible, requires a combination of extensive discipline and convention, and conventions differ between development shops, communities and libraries.
Initial use of Javascript was oriented around adding interaction to document/page oriented sites closely aligned to the linked hypertext design of the web. Increasingly Javascript is being used to construct client-service applications (e.g. Google's apps), where the Javascript represents an ongoing piece of logic, data, and UI connected to one or more network accessible services. Such applications place much greater demands on their Javascript hosted portions.
As Javascript has been called upon to do more and more, Javascript engines have moved from simple interpreters to quite sophisticated and high performance execution platforms involving native code generation and classic and novel dynamic language optimizations. The engines, in the large, are specifically oriented around Javascript semantics and execution, i.e. they are not as general as the JVM and CLR.
As the leading purveyor of client-service applications, with tremendous resources and a vested interest in web-hosted applications, Google has cutting-edge technology in this area. From the V8 JS engine to the whole-program optimizing symbiotic pair of Closure library and the Closure compiler, Google has open sourced the most advanced technology available in this area. It is worthwhile to understand and leverage what they have provided.
A development platform with extensive reach, portability, multi-vendor support, an optimization arms race, sophisticated tools, implemented an all new devices, and a call for richer and more sophisticated applications - what more could developers want? - A better language, that's what.
You can't significantly improve something with extensive reach in a timely manner - your improved version won't have the reach for a long time.
- Rationale
- Quick Start
- Differences from Clojure
- [Usage of Google Closure](Google Closure)