APL语言编译器到IL

时间:2017-09-07 20:02:04

标签: .net transpiler apl

我没有任何与APL合作的经验,我们团队中没有人,但我们拥有的是巨大的代码库,必须使用更现代的方法重写。所以我只是想知道是否有任何编译器,它可以帮助从APL代码生成IL代码?或者其他任何建议都受到欢迎,我们应该如何处理呢?

2 个答案:

答案 0 :(得分:5)

你没有说为什么必须重写它。我想这可能是以下任何一个原因:

您需要进行更改,而您的团队没有任何APL程序员。
那里有 APL程序员和顾问,而且还有更多人不断出现。我建议您在an APL forum上宣传您的需求并联系各种user groupsapplication developers

您正在使用供应商的APL系统,该系统不再提供所需的支持,或者您希望切换平台。
Contact Dyalog直接将Dyalog has much experience迁移到Dyalog APL积极维护,开发和支持的交叉系统中。

APL被认为是老式的,因此您希望通过更改为更常用的语言来为您的系统提供面向未来的保障。
Dyalog APL是一种经过30多年调整和优化的语言,因此已经从经典的APL2风格演变为现代的多范式编程语言。由于Dyalog APL有full support and integration with .NET,因此它位于Microsoft的 .NET语言的正式列表中。

您正在寻求更高的性能。
根据您使用的APL系统,您可以在此处选择多个选项。只需升级到最新的解释器版本即可获得极大的加速。顾问也可以调整您的APL代码以提高速度。 Dyalog APL includes an on-the-fly compiler现在有built-in hashing以便更快地查找。如果您将自己限制在Dyalog APL的函数编程子集 dfns ,则可以使用Co-dfns Compiler从APL代码创建C ++代码。

如果这些原因都不适用于您,请将您的问题更新为更具体。

答案 1 :(得分:1)

有几个APL编译器输出不同的目标语言,即C,C#,Java,JavaScript,SAC,或许还有其他语言。然而,这些编译器可能是实验性的,学术性的或不具有预期的商业质量。此外,编译器可能仅支持该语言的子集或不支持更新的语言功能(如Dfns)。最后,编译器发出的代码非常大,可能不是人们想要继续保持的东西。 Google Snake Island Research,Aaron Hsu和Timothy Budd获取更多信息。

另一件需要考虑的事情是,APL编程背后的哲学和思想可能与C#或Java等语言中的编程不同(如果不是非常,甚至不是很深刻)。从2017年9月11日开始看看Aaron Hsu的演讲,这很好地解释了这一点。见https://video.dyalog.com/Dyalog17/?v=cpbtX0jK1z4 - 亚伦的谈话从凌晨2点左右开始。

了解有关APL代码的内容是非常有用的 - 大概是在编写APL系统的时间和内容,然后是您希望使用代码的地方 - 目标语言(Java等),操作系统,是否应该是一个Web应用程序等。