首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为元环境的Lisp

作为元环境的Lisp
EN

Stack Overflow用户
提问于 2012-05-23 05:12:04
回答 3查看 697关注 0票数 2

我正在攻读博士学位,通过集成不同类型的计算机语言来实现更好的软件重用。由于性能和安全问题,我不考虑将它们与外部函数调用和/或web服务的使用集成在一起。

Lisp是我最喜欢的工具,因为它是交互式开发、宏、在运行时进行修改、将代码作为数据(人们通常会想到Lisp这个词),等等。有一些方法可以将不同类型的Lisp移植到虚拟机,如JVM (clojure、kawa、SISC、ABCL等)。或者.NET (clojure .NET,DotLisp,IronLisp)。这非常有趣,但人们被限制在各自虚拟机的“宇宙”中。

有没有人知道另一种方法,即在Lisp系统上运行Java或C#?我找到了斗篷的其余部分。它似乎或多或少是一个死亡的项目。对我来说,将Lisp作为一种公共抽象,托管其他语言,如Java和C#,会更明智得多。

你看到了什么障碍来克服这种缺乏通用的和可扩展的“语言环境”集成语言,如Java或C# (没有外部函数调用或(web)服务)?这是不是因为没有Lisp系统运行在某种虚拟机上,比如LLVM,或者其他什么?

致以最好的问候,英格玛

EN

回答 3

Stack Overflow用户

发布于 2012-05-23 06:16:16

由于Lisp的宏功能,它是这种语言托管的一个很好的平台。然而,您需要更多的语言特性来做好这件事:模块、阅读器宏、高级宏规范等等。Racket就是朝着这个方向前进的Lisp变体之一。您已经可以使用Algol 60Prolog的变体、typed sister language等等。随着ECMAScript的实现,Guile也在朝着这个方向前进。

就在Lisp上实现Java或C#而言,理论上是可能的,但在实践层面上支持这些语言需要大量的工作(球拍用于实现一小部分Java)。考虑到CLR和JVM现在都是多语言平台,也不清楚您是否真的能获得任何好处。更有趣的是,利用Lisp宏来定义更好的自定义语言(DSL),定义有用的Lisp方言,或者实现另一种专门用于引导有用工具的语言(例如,Guile实现Emacs Lisp)。

票数 2
EN

Stack Overflow用户

发布于 2012-05-23 06:33:53

嗯,“这要看情况”,一如既往,对吧?

如果有的话,你希望向Java公开多少Lisp?例如,如果您将JVM移植到Lisp,您是以某种方式将垃圾收集器所需的JVM与Lisp实现的实际底层GC相匹配,还是只编写自己的GCs JVM堆中的JVM对象。

出于几个原因,将两者结合起来很可能是不切实际的。Lisp GC与Javas GC非常相似,在实际实现中是非常隐蔽的。这可能太过隐蔽,无法与JVM实现一起工作。

没有理由不能用Lisp构建一个JVM,它只是一堆字节码。Lisp可以很好地处理字节。

在JavaScript中已经有了JVM的实现,它的核心与Lisp没有太大的区别。

但是,除了使用lispy命令行与JVM交互之外,JVM本身也不会很"lispy“。怎么会这样呢?它是一个JAVA VM。实现可以是"lispy“的,但理想情况下,这种lisp不会扩展到JVM本身。

除了Lisp在开发任何程序方面的任何优势之外,我不认为Lisp特别适合于“更好”地开发虚拟机。

Lisp非常擅长开发其他语言,特别是其他基于S-Exp的语言。但VM就是VM。Monster case语句或其他基于数值机制分派。

票数 0
EN

Stack Overflow用户

发布于 2012-05-23 07:32:34

对于这样的元平台,Lisp是一个完美的宿主语言,但对于编译低级和命令式的东西来说,它不一定是理想的目标语言。幸运的是,没有什么能阻止您在Lisp环境中生成汇编代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10710243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档