epi.clyce作者
12年9个月前IP:未同步
676502
4楼
金星凌日 发表于 2014-3-20 12:28
请教一下,Clojure有哪些独特的优势?我只会Common Lisp。


1 比CL精炼一些,同样的程序,clojure比CL要短
2 生态环境优良,可用的、稳定的库远丰富于CL,由于建立在jvm之上,任何java下可用的库、框架、工具集都能直接在clojure中以clojure自己的方式进行调用(而常用的java库往往都有非常好的clojure wrapper)
3 作为一个lisp dialect,至今没有什么大的分裂,虽然有clojure、cljs(编译成javascript的)、clojureCLR(编译成.NET executable的),但大体上共享了同一套理念和方法,最重要的是,相同的核心函数库
4 核心库遵循简单原则,只包含必要而且稳定的函数、宏
5 宏比CL好写
6 内置STM无锁并发模型,对并发编程非常友好,另外由于支持netty等java上的传输框架,使得制作distributed program非常方便

缺点:
1 在jvm上运行,继承了jvm上的一些缺点(比如没有direct call的TCO,要用专门的special form包装起来)(不过可以转向cljs或clojureCLR弥补)
2 clojure程序运行效率虽高,但是启动非常慢
3 直接throw java错误栈,对调试不友好(不过有相当多针对java或者clojure的trace库/工具集)
评论
文号 / 676502

万流景仰
名片发私信
学术分 21
总主题 345 帖总回复 2157 楼拥有证书:学者 机友 笔友
注册于 2007/07/10 01:49:00最后登录 2026/05/15 18:41:21
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的