【发布时间】:2012-05-22 21:12:04
【问题描述】:
我正在攻读博士学位,通过集成不同类型的计算机语言来更好地重用软件。由于性能和安全问题,我不考虑将它们与外部函数调用和/或 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,还是其他原因?
最好的问候,英格玛
【问题讨论】:
-
你为什么要运行例如lisp 虚拟机中的 C#?
-
如果您有实际的软件相关问题,请在此处提问。如果您的问题更笼统,请使用 programmers.stackexchange.com 。请参阅 stackoverflow 常见问题解答。
-
在 Let Over Lambda 中有一个 Forth 转编译器到 Common Lisp 的示例,还有一个 Python 代码转换(转编译器)到 Common Lisp 作为 CLPython。如果您还没有,可能值得您花时间检查一下。
-
为什么喜欢在一个平台上运行 SCALA、Java 和 Ruby?因为需要为一个项目集成这些语言。没有灵丹妙药,不同的语言解决不同的问题。此外,我们拥有任何语言的数万亿行代码。为什么不重复使用它们?与其每隔几年重新发明轮子,不如将这些程序集成起来更有意义,这已经部分实现了,但你必须遵守其中一个大型 VM(Java 和 .NET)的规则。
-
VM 是集成异构语言运行时的媒介,任何给定 VM 的单一宿主语言都无法替代它们。否则(例如,使用 SBCL 或任何其他本机 Lisp),您将必须专门为每个语言对处理 FFI 和编组。而且,.NET 并没有那么糟糕——它也可以处理 JVM(参见 IKVM)。
标签: lisp metaprogramming environment