Clojure,学习入门(1)——,学习资料x
发布时间:2020-08-29 来源: 党课讲稿 点击:
Clojure 学习入门(1 )—— 学习资料
Clojure(发音类似"closure",["kl????(r)])是一套现代的 Lisp 语言的动态语言版,它是一个函数式多用途的语言,其语法和其他的 Lisp 一样,都是建立在 S-expression 之上,即”全是括号,前缀表达式”的语言。
Clojure 可以执行于 Java 虚拟机(JVM)、通用语言运行时(CLR),以及JavaScript 引擎之上。与其他 Lisp 一样,Clojure 认为代码即数据,同时有复杂的宏系统。
Clojure 的理念和特性 Clojure 是什么,为什么有人要学这门语言? 总的来说,那些认为 Clojure 会在现有的大多数编程语言中取得成功的人至少基于这样一个理由: 它是一门新的,支持并发的语言。而那些对 lisp 语言缺乏了解的人却往往会认为:这是一门相当奇怪的,充斥着令人困惑的圆括号和方括号的语言. 但是,不争的事实是 Clojure 在市场上赢得比其他新诞生的编程语言更多的追捧和表现,更强的发展势头。它第一个对外的发行版是在 2007 年秋季的时候发布的,在 2009 年 5 月发行了第一个稳定版,到这个时候,它已经培育了一个活跃的、充满热情的社区,一个欣欣向荣的开发工具和类库的生态系统,它们被用在迅速增长的一系列专业的应用程序中。
下一代的语言 每一年,在世界范围内的众多机构中的都有很多有才华的计算机科学家通过发表成千上万的论文来阐发它们新的和有趣的想法。这些新的概念在经受了自然选择和沉淀后,其中那些优秀和有用的部分会被准许进入实际的应用环境中。
Clojure 包括了众多尚未在其他(任何)编程语言的实现中出现的最新的想法和伟大的理念. 这其中最引人注目的就是涉及并发程序的部分:软件内存交互和基于代理的进程调度 (Software Transactional Memory and agent-based processing ) 被 "烧录进" (嵌入)到 Clojure 编程语言的底层. 除此之外(例如持续不可更改 persistent immutability) 还拥有很多精妙的设计理念,这些设计理念是现代学术研究的成果,也是数十载实践的经验。
抛开 Clojure 的学术背景,Clojure 是主要设计原则是坚持: 有用性(useful 有益处的) 高于可用性. 它的高级属性是被精心选择的,目的是向程序员提供健壮的、干净的代码,以便程序员容易理解和高效编程. Clojure 虽然有很强的学术背景支持,但是绝不是一门只在象牙塔中的语言,每天都有众多开发者在各自的开发领域内使用它。
动态而强有力 ( 没错, 它是 lisp!) 对下面语句的意思的理解会因为读者编程经验的不同而有很大差异,它可能会让你非常兴奋,也可能让你产生一些轻微的不适. Clojure 是完全的,真正意义上的神圣的 lisp 语言的一个方言。
lisp 语言因为其无以伦比强大能力和几乎无穷的表达力而获得了盛誉,Clojure 自然也不例外。它的功能和元编程的能力是建立在这样的基础之上的:异常驯服的 C语言的"石头" 或 具有延展性的 java 语言的"木头" . 你可以用几百行甚至几十行Clojure 代码取替代几千行静态语言的代码,伴随着这而来的是 bug 数量的减少和开发时间的缩短。
样板代码(Boilerplate code )被完全删去. 域指定语言(Domain Specific Languages ) 不仅简单,而且更一般化--lisp 程序往往是按照 "自下而上" 的开发方式写成的。展开式(演进式)的 结构和语法更适合特定的问题领域。你在程序运行的时候取修改程序,而不需要重新编译或重启程序。
但是,历史上也有对 lisp 进行诋毁的人,或许称为抱怨更为合适. lisp 发展过程中,没有完整的规范, 各种不兼容的实现,陈旧落伍的限制.cruft accumulate 在其存在的四五十年里一直存在. 对于 大多数人来说,它的语法过于诡异了。
Clojure 修正上面的大多数这些问题. 它保留了 lisp 的思想和哲学,并同时清除了过去的很多限制. Clojure 高速、干净、具有优先能力和优雅的特征. 但是没有改变 lisp中 "代码也是数据" 的哲学. Clojure 语言在直觉和观感上比历史上的 lisp 更易于阅读. 在后面开始学习的初级阶段,你就发现虽然 仍有各种括号,但是代码是难以置信的容易读和写。
对于那些熟悉 lisp 语言的人来说,他们很快就会发现他们非常适应 Clojure. 对于那些原先没有接触 过 lisp 的人来说,也没有必要担心, Clojure 是简洁和无痛学习。
官方文档:
官方文档:
http://clojure.org/documentation
中文资料 中文资料(强烈推荐):
1. clojure 入门教程
http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/
2. clojure 文档翻译
http://code.google.com/p/clojure-doc-en2ch/w/list
3. clojure 手册(低版本)
http://qiujj.com/static/clojure-handbook.html
4. clojure 中文社区:
http://blog.clojure.cn/
5. Lisp 中文社区:
http://www.lispchina.com/
英文资料 英文资料(强烈推荐):
http://clojure-doc.org/articles/content.html
clojure 开源工具:
开源工具:
clojure 工具箱汇总:
http://www.clojure-toolbox.com/
ring server:
https://github.com/ring-clojure/ring/wiki
compojure:
https://github.com/weavejester/compojure/wiki
noir web 框架:
http://www.webnoir.org
sandbar session 框架:
https://github.com/brentonashworth/sandbar/wiki
clojureQL 连接数据库:
http://www.clojureql.org/
datomic 数据库:
http://www.datomic.com/
fleetdb 数据库:
://fleetdb.org/
https://github.com/mmcgrana/fleetdb-client
pdf 处理:
https://github.com/yogthos/clj-pdf
csv 处理:
https://github.com/clojure/data.csv
json 库:
dakrone/cheshire
https://github.com/mmcgrana/clj-json
mail 库:
clojurewerkz/mailer
https://github.com/MayDaniel/clj-mail
图形处理库:
mikera/clisk
ztellman/penumbra/wiki/Applications
https://github.com/quil/quil
音频处理库:
https://github.com/overtone/overtone
报表工具库:
http://incanter.org/
定时任务框架:
http://clojurequartz.info
webservices
http://clojure-liberator.github.com
附:编程语言发展的编年史 编程语言的历史早于真正意义的计算机的出现。19 世纪就有“可编程的”织布机和钢琴弹奏装置出现,它们都是领域特定语言(DSL)的样例。
据统计已有 256 种编程语言,这么多的语言中只有一些是常用的或实用的。
1 Regional Assembly Language 2 Autocode 4 IPL (LISP 语言的祖先) 5 LOW-MATIC (COBOL 语言的祖先) FORTRAN (第一个编译型语言) 7 COMTRAN (COBOL 语言的祖先) LISP 8 ALGOL 58 FACT (COBOL 语言的祖先) COBOL 59 RPG APL imula 2 SNOBOL • 1963 – CPL (C 语言的祖先)
BASIC 4 PL/I 6 JOSS 7 BCPL (C 语言的祖先) 8 Logo 69 B (C 语言的祖先) Pascal 0 Forth C Smalltalk 2 Prolog 3 ML 5 cheme 78 SQL 0 C++ (既有类的 C 语言,更名于 1983 年 7 月) 3 Ada Common Lisp 4 MATLAB 5 Eiffel Objective-C 6 Erlang 7 Perl Tcl 8 Mathematica 89 FL 0 Haskell Python 1 Visual Basic Ruby 3 Lua 4 CLOS (ANSI Common Lisp 的一部分) Java Delphi (Object Pascal) JavaScript 5 PHP 6 WebDNA 7 Rebol 1999 D 0 ActionScript • 2001 – C#
1 Visual Basic .NET 2 F# Groovy 3 Scala 7 Clojure 09 Go • 2011 – Dart 从 1951 年至今,人类一共发明了 256 种编程语言,每一种语言的出现都带有某些新特征。编程语言不断的在革新,很快就会有超出这个清单的新编程语言出现。更多参考 程序员必须知道的编程语言编年史
热点文章阅读