`
xiuzhuchenqing
  • 浏览: 16198 次
  • 性别: 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能够达到的特性。

分享到:
评论

相关推荐

    infamous:ClojureScript DSL(用于Famous.js)

    ClojureScript是一种基于Lisp的方言,它继承了Clojure的强大特性和简洁语法,与JavaScript高度兼容,同时又提供了更高级的抽象和元编程能力。 在使用Infamous:ClojureScript DSL之前,你需要在你的`project.clj`...

    clojurescript-examples:clojurescript-examples

    ClojureScript 是一种基于 Lisp 语法的编程语言,它是 Clojure 的一个方言,主要用于编写运行在浏览器中的 JavaScript 代码。ClojureScript 能够通过 Google Closure 编译器转换为高效的 JavaScript,从而利用 ...

    borsuk:ClojureScript 黎曼仪表板

    ClojureScript 是一种基于Clojure语言的方言,专为编写浏览器端JavaScript代码而设计。它保留了Clojure的语法和特性,同时提供了与JavaScript无缝交互的能力,使得开发者可以利用Clojure的强大功能来构建现代Web应用...

    clojurescript-examples-源码.rar

    ClojureScript是一种基于Clojure语言的JavaScript方言,由Rich Hickey设计,主要用于编写高性能、跨平台的Web应用。这个压缩包"clojurescript-examples-源码.rar"包含了丰富的ClojureScript源码示例,是学习和理解...

    breakout:ClojureScript 中的突破

    ClojureScript 是一种基于 Clojure 语言的方言,专为编写高效、可维护的 JavaScript 代码而设计。这个名为 "breakout" 的项目显然是一个使用 ClojureScript 开发的实验性应用,旨在探索并展示这种编程语言在游戏开发...

    重图:clojurescript和clojure的graphql客户

    Clojurescript是Clojure的JavaScript目标方言,它允许开发者使用Clojure语法编写前端代码。Clojure,作为一种函数式编程语言,以其强大的元编程能力、简洁的语法和丰富的库生态系统而受到赞誉。重图(Re-Graph)利用...

    Learning.ClojureScript.2016.6.pdf

    ### 学习ClojureScript:掌握敏捷单页Web应用开发艺术 #### 标题与描述解析 《Learning ClojureScript》是一本专为希望学习ClojureScript语言的开发者准备的书籍,出版于2016年6月。本书旨在帮助读者掌握如何利用...

    awesome-clojurescript:ClojureScript框架,库和包装器的社区驱动列表

    ClojureScript,作为Clojure语言的一个方言,是用于编写JavaScript应用的高级编程语言。它以其独特的语法、强大的函数式编程特性和对JavaScript的无缝集成,吸引了众多开发者。在本文中,我们将深入探讨一个名为...

    cljs-cm-editor:ClojureScript包装的CodeMirror编辑器(未记录的个人使用)

    2. **ClojureScript**: ClojureScript 是Clojure语言的一个方言,专门用于编写Web前端代码。它是基于Google的 Closure Tools编译的,能够生成高效的JavaScript代码。ClojureScript保留了Clojure的核心特性,如Lisp...

    cljs-test-display:ClojureScript测试的可视显示

    ClojureScript是Clojure编程语言的一个方言,主要用于编写Web应用的前端代码。它结合了Clojure的强大功能和JavaScript的运行时环境,为开发者提供了丰富的库和工具生态系统。在ClojureScript中进行测试是确保代码...

    Cloggs:简单记录Clojure和Clojurescript

    ClojureScript是Clojure的一个方言,主要用于编写JavaScript运行时的代码,它通过Google Closure Compiler进行编译,生成优化的JavaScript代码。ClojureScript保留了Clojure的核心特性,同时也解决了跨平台的问题,...

    zerkdown:ClojureScript的s-expression解析器宏的可扩展抽象减价

    s-expressions,或符号表达式,是Lisp家族语言中的基本构建块,包括Clojure和ClojureScript。这个系统允许开发者对源代码进行结构化处理,为编写编译器、解析器或者语言工具提供了强大的支持。 ClojureScript是...

    rss-painter:Clojurescript 中可定制的 RSS 转 HTML 页面

    这是一种基于Lisp的编程语言,它是Clojure的方言,专门用于编写JavaScript应用程序。Clojurescript编译成JavaScript后,可以在任何支持JavaScript的环境中运行,包括Web浏览器。通过使用Clojurescript,rss-painter...

    sqlingvo:适用于SQL的Clojure和ClojureScript DSL

    ClojureScript是Clojure的一个方言,用于编写JavaScript运行时环境的代码,特别是Web应用。Lisp家族的语言以其独特的括号语法和强大的宏系统著称,这些特性使得构建DSL变得非常自然。 sqlingvo就是利用了Clojure和...

    flow-storm-debugger:Clojure和ClojureScript的调试器,具有一些独特的功能

    而ClojureScript是Clojure的一个方言,用于编写JavaScript的源代码,通常用于前端开发。Flow Storm Debugger正是为这两种语言提供了强大的调试支持。 Flow Storm Debugger的独特之处在于其对Clojure调试生态的深入...

    boxes:学习clojurescript异步

    ClojureScript 是一种基于 Lisp 语法的编程语言,它是 Clojure 的一个方言,设计用于编写高性能的客户端应用程序,尤其在浏览器环境中。JavaScript 是 Web 开发中的基石,它被广泛用于实现网页动态效果和与服务器...

    hello-clojurescript:简单的clojurescript启动项目

    ClojureScript 是一种基于 Lisp 语法的编程语言,它是 Clojure 的一个方言,主要用于编写 JavaScript 运行时环境中的代码。这个"hello-clojurescript"项目是一个基础的入门教程,旨在帮助开发者快速理解...

    errai-marshalling-3.2.4.Final.zip

    1. **ClojureScript**:是由Rich Hickey设计的Clojure方言,专为编译到JavaScript而生。它继承了Clojure的所有语言特性,如宏、多态、动态类型等,并针对JavaScript环境进行了优化。 2. **宏**:ClojureScript支持宏...

    承租人:承租人:Clojure,ClojureScript,Reagent(React)+ Sente(Web套接字)。 Heroku准备好了!

    ClojureScript是Clojure的一个方言,专门针对JavaScript环境设计,使得Clojure代码能够无缝地运行在浏览器中。它保留了Clojure的核心特性,同时也解决了与JavaScript交互的问题,为前端开发提供了新的可能性。...

    advenjure:用Clojure和ClojureScript编写的文本冒险引擎

    Clojure是一种基于Lisp的函数式编程语言,而ClojureScript是其在JavaScript上的方言,主要用于前端开发。结合这两种语言,advenjure实现了跨平台的能力,可以在服务器端和浏览器端无缝运行。 ### 1. Clojure语言...

Global site tag (gtag.js) - Google Analytics