uzo*_*uzo 66 lisp jvm clojure kawa
在Clojure到达现场之前,JVM已经有三个Lisps:Kawa,Armed Bear和SISC.
那些Lisps留下的Clojure填补了什么空白?
dno*_*len 109
Kawa,ABCL和SISC是现有语言的重新实现,这些语言相当长.如果出于某种原因,您希望在JVM上使用标准Scheme或标准Common Lisp,那么它们非常出色.
Clojure是一种新语言.它没有填补空白.它增加了全新的可能性.它有利于纯粹的功能性方法 - Scheme和CL都是多范式的.Clojure借鉴了各种FP语言(ML,Haskell)的设计.
是的,你可以为其他Lisps添加并发支持,但这完全忽略了这一点.Clojure从一开始就被设计为并发语言.因此,在Clojure中编写并发程序是微不足道的 - 而不是火箭科学,因为它是非函数式语言(Scheme,CL不排除).看看这个方式:
人们说C允许你默认编写快速程序.
好吧,Clojure允许你默认编写并发程序.
z5h*_*z5h 33
"Clojure是一个不受向后兼容性约束的Lisp"(来自Clojure网站).这是一个新的开始.这是进步.使用使Lisp/Scheme强大的思想,但在Java 平台上重新考虑它们.
Clojure将永远是最新的Clojure.使用移植到JVM的任何其他语言,JVM版本可能总是在追赶.如果您不需要Java平台,为什么要使用SISC而不是另一个Scheme?如果你这样做,为什么不使用专门为它设计的Lisp(Clojure)呢?
设计时考虑到了并发性.
Fra*_*son 11
clojure.org上的基本原理页面指出:
为什么我要编写另一种编程语言?基本上是因为我想:
- 一个Lisp
- 用于功能编程
- 与既定平台共生
- 专为并发而设计
而且找不到一个.
您提到的3种语言(Kawa,ABCL和SISC)是否符合这些要求?他们是:
但它们不是为(STM)并发而设计的; 但是,为了公平和完整,我发现至少有2个ST尚未提及的STM库:
嗯...那么为什么要创建一个新的Lisp?主要是因为这些是图书馆.clojure.org上的理由页面继续(重点补充):
标准Lisps(Common Lisp和Scheme)怎么样?
- 标准化后缓慢/没有创新
- 核心数据结构可变,不可扩展
- 规范中没有并发性
- JVM已经存在良好的实现(ABCL,Kawa,SISC等)
- 标准Lisps是他们自己的平台
正如其他人所提到的,这是一个语言并发设计问题.
此外,为什么要停在JVM?Clojure CLR支持正在积极开发中.
从我的角度来看,这是它填补的两个空白.如果满足您的需求,您应该使用Clojure.如果Clojure从地图上掉下来,不要担心失去你的技能.你的Lisp技巧,但更重要的是你的思维方式,将延续到其他Lisp方言.
我还要补充一点,Clojure是一种相对较新的语言,由一个人实施,具有良好的营销技巧和大量精力.他投入了大量的时间和大肆宣传...有时,炒作是一个自我实现的预言,如果你能说服足够的人,这是最新的最伟大的东西,那么你可以获得足够的支持和动力来实现它工作.
我怀疑Kawa等的实施者没有那么多的利害关系,因此并没有大肆宣传他们的产品.此外,有什么炒作?"我们有一种很棒的语言......它被称为Lisp"这是一个更难的营销销售.
我认为Java就是一个很好的例子.它有一些非常严重的缺陷,但由于它的销售和炒作如此之大,它取得了很大的动力,这意味着硬件/软件供应商,工具生产商,工业投资等的支持.无论哪种方式,它都达到了一定程度的成功,虽然我讨厌编程.Clojure可能会取得类似的成功,其他Lisps也没有.
Clojure的优势在于它允许您访问所有Java库/代码,并支持多线程,因为它基于JVM.此外,它的设计考虑了并发性,这通常不是设计用于lisp,尽管由于映射原语,设计一个能够很好地支持并发性的lisp可能并不困难.
话虽这么说,我尝试了Clojure,并且讨厌那些似乎与Java连接的对接因素的语法和痛苦.
| 归档时间: |
|
| 查看次数: |
13012 次 |
| 最近记录: |