`
xiuzhuchenqing
  • 浏览: 15808 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Clojure的方言:ClojureScript

 
阅读更多

很奇怪,Clojure(可千万别张冠李戴,不是GoogleClosure)本身就是Lisp的一种方言(基于java虚拟机JVM),而它竟然也拥有自己的方言ClojureScript。威武之处,尽显神通啊,难怪说Lisp是一门可以编程的编程语言,如果你足够强大,那么用Lisp或者Clojure定义自己的一套专用的语言,不过你可不能说你创造了一门语言,只能说你定义了一种基于Lisp的方言。 
Clojure本身相关的知识,这里就先不祥述,可以参考徐明明所翻译的Clojure入门教程: Clojure – Functional Programming for the JVM中文版》 
以下知识主要参考https://github.com/clojure/clojurescript/wiki/Rationale,如果你的英语够牛逼,敬请移步。 

善加利用,限制往往是一种优势ClojureScript得以存在就像它的主子Clojure存在的理由一样,Clojure也是看到Java本身的强大和存在的各种不足顺应业界呼唤而生,在Clojure日趋成熟的今天,又按照同样的思路在侵入JavaScript的领域。主要基于如下原因: 

1) JavaScript已经足够牛逼;
 
在许多生态环境(例如浏览器)中JavaScript是仅供选择的一种编程技术。在诸多移动设备上,JavaScript也是用的最广的。JavaScript作为扩展和和脚本也被广泛采用,例如作为数据库的索引语言。 
2) JavaScript不够健壮 
然而即使是Javascript的力挺者们也承认js本身所存在的不足。在语言的语义上就有不少暗角。它不是特别简洁,而且它的内容不是适合进行元编程或扩展。如果要最大可能的构建健壮的js程序时会麻烦不断,它需要结合广泛的理论知识和协定,这些协定在开发商、协会和库之间都很不相同。 
3) 客户端-服务器端应用的日益递增 
最初设计Javascript的目的是让网站上静态文本的超链具有可交互性。后来越来越多的js代码被用来构建客户端-服务器端应用(例如。Google App),在那里JavaScript代表正处于运行状态的连接到一个或多个可访问服务的块逻辑、数据和界面。如此多的应用使得JavaScript在宿主上需要占用更多空间。 
4) JavaScript引擎更加强劲 
随着JavaScript越来越多的被使用,当今的JavaScript不再是一个简单的解析器,由于包含了高性能的本地代码生成和典型而有新颖的动态语言优化,JavaScript引擎变得更加精致(一人得道鸡犬升天)。该引擎特别面向JavaScript语法和执行,因此不像一般的JVM或者CLR 

5) Google作为行业巨擘,杀出了一条血路 
作为客户端-服务器端应用的供应商,在web宿主应用中拥有海量资源和获得巨大利益的google在该领域拥有非常尖端的技术。从V8 JavaScript引擎到与其共生共存的Closure库和Closure编译器的整个编程语言环境的优化,google开发了该领域最先进可用的技术源码。 
6) 引用库所存在的问题 
一个应用所需要做的越多,开发人员也将寻求更多的使用一些更大的库。但是许多的目标平台都会受到内存的限制或者来自网络连接方面的限制,减少代码尺寸变得相当就有压力。通过将所有js压缩到一行上虽然在一定程度上减少了代码的尺寸,但并有根本上解决问题。然而经常出现的情况是,应用很少使用到他们所调用库的所有代码。实际上只将那些真正被调用的代码包含进来将会构建出更加优化的应用,无路被调用的库的数量和大小怎么样。googleClosure和库采取就是这种策略。 

ClojureScript的机遇 



一种具有覆盖范围广泛、具有可移植性、多个厂商支持、被竞相优化、拥有尖端的工具、在所有新的设备上被实现、被更加丰富和精致的应用所的调用的开发平台,还有什么开发者想要?那就是一种不同的语言,这就是他们想要的。为进行JavaScript优化正在苦苦抗战的你不能及时显著的改善任何东西,可以假定在可见的未来,你也不会获得被优化多少的版本。 因此就像目前存在的JavaScript可以作为一种给定的目标语言而非编程时所用的源语言 
ClojureScript寻求解决在客户机/嵌入式应用程序开发过程中的薄弱环节,用一种健全的、简洁和强大的编程语言Clojure取代JavaScript。实施过程中,ClojureScript采用谷歌Closure库和编译器所采取的策略,能有效地利用两个工具,获得一个大的,高质量的库和全编程优化。ClojureScript带来丰富的数据结构的集合,函数式编程,,读取器,解析,多态性构建、状态自持,以及Clojure能够替代的每一个JavaScript能够达到的特性。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics