Compiler construction 一种新的动态编程语言的后端选择?

Compiler construction 一种新的动态编程语言的后端选择?,compiler-construction,interpreter,smalltalk,vm-implementation,Compiler Construction,Interpreter,Smalltalk,Vm Implementation,我一直在开发一个Smalltalk变体,只是为了好玩,我想知道stackoverflowers的同事在瞄准后端时会选择什么。这些是我目前的考虑: .NET、JVM:这两个虚拟机主要用于静态类型的语言,我认为很难针对像smalltalk这样的动态语言 Python(作为源代码):似乎是最简单的方法。另外,如果我可以发出Python字节码,那就更好了,但是它没有像其他VM的AFAIK那样有很好的文档记录(需要挖掘Python的源代码以获取详细信息!) 自制的翻译:不可能,因为它没有乐趣:-) LLV

我一直在开发一个Smalltalk变体,只是为了好玩,我想知道stackoverflowers的同事在瞄准后端时会选择什么。这些是我目前的考虑:

.NET、JVM:这两个虚拟机主要用于静态类型的语言,我认为很难针对像smalltalk这样的动态语言

Python(作为源代码):似乎是最简单的方法。另外,如果我可以发出Python字节码,那就更好了,但是它没有像其他VM的AFAIK那样有很好的文档记录(需要挖掘Python的源代码以获取详细信息!)

自制的翻译:不可能,因为它没有乐趣:-)


LLVM、NekoVM、Parrot是我正在查看的其他选项。您对此有何看法?

我会选择JVM,但主要是因为我熟悉它

其客观原因是:支持主平台、许多库和良好的性能(在您提供的选择范围内,它可能具有最佳性能)

.Net在Windows上工作得最好。如果您选择它,您应该在上进行测试,使其更加平台中立

看起来也是个不错的选择。但我认为JVM有更多的库可用

在我看来太新鲜了,需要一些时间来成熟。但对未来来说,这是一个有趣的选择


其他的选择对我来说是新的,我会看看它们。

.NET作为动态语言的DLR,现在它位于CLR之上。

不要这么快就对.NET或JVM打折扣。正在为这两种语言开发动态语言(例如JVM上的Groovy、JRuby、Jython;以及.NET上的IronRuby、IronPython),而.NET正在获得“DLR”——动态语言运行时。(有关更多详细信息,请参阅。)

首选JVM。从第一天起,它将允许广泛的图书馆支持。看看这对Clojure有什么好处

此外,LLVM可能是一个有趣的选择,但我不确定它是否“经过验证”,因为我无法用LLVM后端实现一个成熟的语言

我会避开.NET。这将使围绕您的新语言收集社区和支持变得更加困难,您很快就会需要它。而且,它不是跨平台的


无论你选择什么,你都会从中学到很多。

Parrot非常酷,即使他们还没有发布任何“真正”的代码。但是由于这个项目只是为了好玩,这不应该阻止你:D.

JVM更稳定,文档也更完善,而且通常不太可能像.Net那样成为移动目标
而且,如果你选择开源,你更有可能找到可以帮助你的人。NET人才很稀少,大部分工作都是为了微软,所以他们不太可能有时间帮忙。

< p>既然你想实现SMALLATE,为什么不考虑SMALLIST启发的VMS中的一个呢?两者都是以smalltalk为灵感,以高性能为目标。YARV将成为新的标准Ruby虚拟机。

在.Net上进行操作,毕竟您希望这样做是为了好玩。所以让它有点挑战性。然后,任何发现都可以报告给Microsoft,以改进DLR及其支持的语言。

使用Parrot的一个优点是它附带了大量示例语言,包括一种称为聊天的Smalltalk变体。因此,您可以将其用作参考,以了解其他人是如何在Parrot上实现类似语言的。

您可能想了解一下——虽然这个项目是为了在Python(一个子集)中实现Python语言,但他们所采取的方法允许多个前端和多个后端(包括CLR、JVM、LLVM、C,甚至Smalltalk和JavaScript,我认为)。例如,已经使用Prolog作为前端语言,CLR作为后端。因此,您可能会加入实现Smalltalk的团队,稍后发现您还帮助其他人实现了Prolog,而不知道它…:-)

因子()可能会为此提供一些有用的功能。

如果您打算使用.Net,请查看漂亮的代码——其中有一篇文章是关于在.Net CLR上生成动态代码。

肯定是.Net使用动态语言运行时。当您完成时,C#和V.Net用户将可以直接使用您的对象(您打算发布一些东西?:-)


特别是,target在SilverLight中的reduced.Net下运行,这样您就可以获得最新的web丰富用户界面了。

如果这是为了好玩,为什么不从Squeak的开源代码库开始,并对其进行修改呢。Smalltalk应该有一个小型的运行时,您的小型有趣的变体可以从squeak的引导环境开始,它几乎是微观的,并且是从那里建立起来的

与.NET和JVM相比,我最大的问题是它的巨大规模。看看运行时“操作系统到smalltalk”阻抗匹配层有多小


有趣的项目不应该是,嗯。。。。。。有趣?吱吱声是很多东西,商业化不是其中之一,但有趣。。。当然。

为什么你认为utku“很快就会需要[社区和支持]?别忘了这个问题说这个项目“只是为了好玩。”另外,还有大量的.NET社区支持。。。看看最流行的标签,例如.sameless self-plug:和IronScheme:)和.NET4.0都内置了动态类型。真正的动态。@Warren:Boo不是动态的。在主页上:“Boo是一种新的面向对象静态类型编程语言”,这将很好地补充MagLev-Ruby在Gemstone Smalltalk上的运行。