声明:JavaEye新闻文章的版权属于JavaEye网站所有,严禁任何网站转载本文,否则必将追究法律责任!
Clojure 是什么?
引自官方网站的介绍
它基于JVM,能调用Java的类库,支持并发,与Scala(http://www.scala-lang.org/)很相似。先前曾有人将Scala比作是Java平台上的Erlang语言。
官方例子:基于Lisp语法,使用了Java并发库的并发编程
可见这里的并发只是使用了Java的线程,并非像Scala那样基于Actor模型。
在论坛 http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631 上面,有人提出了这样的对比:
有兴趣的朋友,可以到 http://clojure.sourceforge.net/ 下载
引自官方网站的介绍
引用
Features
* Dynamic Development
* Functional Programming
* Lisp
* Runtime Polymorphism
* Concurrent Programming
* Hosted on the JVM
* Dynamic Development
* Functional Programming
* Lisp
* Runtime Polymorphism
* Concurrent Programming
* Hosted on the JVM
它基于JVM,能调用Java的类库,支持并发,与Scala(http://www.scala-lang.org/)很相似。先前曾有人将Scala比作是Java平台上的Erlang语言。
官方例子:基于Lisp语法,使用了Java并发库的并发编程
(import '(java.util.concurrent Executors))
(defn test-stm [nitems nthreads niters]
(let [refs (map ref (replicate nitems 0))
pool (. Executors (newFixedThreadPool nthreads))
tasks (map (fn [t]
(fn []
(dotimes n niters
(sync nil
(dolist r refs
(set r (+ @r t)))))))
(range nthreads))]
(. pool (invokeAll tasks))
(. pool (shutdown))
(map deref! refs)))
(test-stm 10 10 10000)
(550000 550000 550000 550000 550000 550000 550000 550000 550000 550000)
可见这里的并发只是使用了Java的线程,并非像Scala那样基于Actor模型。
在论坛 http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631 上面,有人提出了这样的对比:
引用
Erlang: The Movie <=> Clojure: The Podcast
Single Assignment <=> Immutable Data Structures
Mnesia <=> STM
ErlangVM <=> JVM
Hipe <=> JIT
Pattern Matching <=> Multimethods
Erlang Shell <=> REPL
Hot Code Reload <=> Dynamic Compilation
Behaviours <=> Extensible Abstractions
Tail Recursion <=> recur
fun <=> fn
syntax from 1987 <=> syntax from 1958
EMP2 <=> CL style macros
Fiber/Actor <=> Termite
Single Assignment <=> Immutable Data Structures
Mnesia <=> STM
ErlangVM <=> JVM
Hipe <=> JIT
Pattern Matching <=> Multimethods
Erlang Shell <=> REPL
Hot Code Reload <=> Dynamic Compilation
Behaviours <=> Extensible Abstractions
Tail Recursion <=> recur
fun <=> fn
syntax from 1987 <=> syntax from 1958
EMP2 <=> CL style macros
Fiber/Actor <=> Termite
有兴趣的朋友,可以到 http://clojure.sourceforge.net/ 下载


评论 共 3 条 发表评论
YRHYRH 2007-12-03 14:29
pf_miles 2007-11-29 17:18
每种语言都有它特别适合的应用情况,Java这种面向对象的语言并不是所有情况都能用的很顺手的.所以会出现一些脚本语言或函数式编程语言来弥补.
zhangcheng 2007-11-28 12:51