JavaScriptが唯一のプログラミング可能な技術である環境(例:ブラウザ)は数多くあります。JavaScriptが最も移植性の高い開発アプローチである環境(例:モバイル)もあります。また、JavaScriptはデータベースの拡張機能やインデックス作成言語としてなど、拡張やスクリプト言語として広く使用されています。
しかし、JavaScriptの支持者でさえ、その欠点を認めるでしょう。言語のセマンティクスには多くの暗い隅があります。特に簡潔ではなく、メタプログラミングや拡張にはあまり適していません。最も厄介なのは、堅牢なJavaScriptプログラムを作成するには、広範な規律と慣例の組み合わせが必要であり、慣例は開発現場、コミュニティ、ライブラリによって異なることです。
JavaScriptの初期の使用は、Webのリンクされたハイパーテキストデザインに密接に合致した、ドキュメント/ページ指向のサイトにインタラクションを追加することに向けられていました。JavaScriptはますます、クライアントサービスアプリケーション(例:Googleのアプリ)を構築するために使用されており、そこではJavaScriptは、1つ以上のネットワークアクセス可能なサービスに接続された、進行中のロジック、データ、およびUIを表しています。このようなアプリケーションは、JavaScriptがホストする部分にはるかに大きな要求を課します。
JavaScriptがますます多くのことを行うように求められるにつれて、JavaScriptエンジンは単純なインタプリタから、ネイティブコード生成や古典的および斬新な動的言語最適化を含む、非常に高度で高性能な実行プラットフォームへと移行しました。エンジンは、全体として、JavaScriptのセマンティクスと実行に特化しています。つまり、JVMやCLRほど一般的ではありません。
クライアントサービスアプリケーションの主要な供給者として、Webホスト型アプリケーションに多大なリソースと既得権益を持つGoogleは、この分野で最先端のテクノロジーを持っています。V8 JSエンジンから、全体的なプログラムを最適化する共生ペアであるClosureライブラリとClosureコンパイラまで、Googleはこの分野で利用可能な最先端のテクノロジーをオープンソース化しました。彼らが提供したものを理解し、活用する価値があります。
アプリケーションがより多くのことを行うように求められるにつれて、開発者はより多くの、より大きなライブラリを使用しようとします。しかし、多くのターゲットプラットフォームはメモリが制約されているか、ネットワークに接続されており、コードサイズを削減する圧力が高まっています。minify化は各ライブラリを小さくしますが、minify化だけでは、minify化されたライブラリサイズの合計に等しいコードサイズが依然として必要です。しかし、アプリケーションは、消費するライブラリのすべてのコードを使用することはめったにありません。プログラム全体の最適化を使用して、利用するライブラリの数やサイズに関係なく、実際に使用されるコードのみで構成されるコードサイズフットプリントを持つアプリケーションを構築できます。これは、Google Closureライブラリとコンパイラのペアが追求する戦略です。
広範な普及、移植性、マルチベンダーサポート、最適化競争、高度なツール、すべての新しいデバイスに実装され、よりリッチで洗練されたアプリケーションへの要求がある開発プラットフォーム - 開発者は他に何を望むでしょうか?違う言語、それが答えです。JavaScriptを改善するための努力は行われていますが、広範な普及を実現しているものをタイムリーに大幅に改善することはできません。改善されたバージョンは、たとえそうなるとしても、同じ普及度を長い間持つことはないでしょう。したがって、現在のJavaScriptは所与のものであり、ソース言語ではなく、ターゲットになります。
ClojureScriptは、JavaScriptを堅牢で簡潔かつ強力なプログラミング言語であるClojureに置き換えることで、クライアント/組み込みアプリケーション開発のストーリーにおける弱点を解決しようとしています。実装において、ClojureScriptはGoogle Closureライブラリとコンパイラの戦略を採用し、両方のツールを効果的に活用し、大規模で実用的なライブラリとプログラム全体の最適化を実現できます。ClojureScriptは、Clojureの豊富なデータ構造セット、関数型プログラミング、マクロ、リーダー、デストラクチャリング、ポリモーフィズム構造、状態管理、その他多くの機能を、JavaScriptが到達するすべての場所に提供します。