码迷,mamicode.com
首页 > 其他好文 > 详细

学习使用clojure(1)

时间:2016-08-03 15:47:42      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:clojure

clojure 是一门函数式语言。

函数式语言并非当今开发语言的主流。

主流多是“命令式”语言 (imperative language)

其中以面向对象范式居多。


发展趋势上看,并行,分布式,多cpu越来越普及。

主流语言在对待这些变化上事倍功半,有点力不从心。

所以,近些年,函数式语言有卷土重来的意思。


函数式或崇尚函数式的语言很多,最古老的Lisp系列,

学究式的 Haskell, ML家族的Ocaml

妄图取代java的 scala

当然还有至简而务实的 clojure


clojure很简,整个语言就是一个 clojure-xxxx.jar 文件,发展了近10年,仍只有大约3M。

函数式的共同特性是:

  1. 崇尚“纯函数”,就是没有副作用,对特定的输入,永远是相同的输出。

  2. “函数”是一等公民。可以同int string 类型的变量一样作为参数传递,作为返回值,

    也可以说,支持高阶函数特性。

  3. 使用不变的“数据”,而非“变量”

    这个好处很多,可以很容易地处理并发,无“锁”的困扰

  4. 关注点在“变换”以及“变换的组合”,这是关注“动词”,而非面向对象王国里的“名词”--即对象。有称之为“动词的复仇”


clojure 很务实,没有清高地畅游于数学世界,而是选择了JVM为宿主。

可以像调用自身函数一样简单地操控java类库中的类、对象、方法。

java能做得很好的事,clojure就不再重新发明,至多是包装一下,为了更好组合。

clojure强调“不变性”,但并不拒绝偶尔使用“变量”

clojure强调“纯函数”,但不拒绝必要的“副作用”(比如调试的打印)

clojure崇尚“惰性求值”,但并不强迫你必须如此。


最后,clojure是一种Lisp的方言,在JVM上的Lisp方言。

它保持了Lisp的强大,并且更简洁


即便永远都不用它,其设计理念,内中哲学绝对值得品味!

学习使用clojure(1)

标签:clojure

原文地址:http://9329142.blog.51cto.com/9319142/1833794

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!