【问题标题】:Convert prolog application to a JVM based language? [closed]将 prolog 应用程序转换为基于 JVM 的语言? [关闭]
【发布时间】:2014-01-14 08:53:06
【问题描述】:

我有一个中等大小的遗留 ISO prolog 应用程序,我想迁移到基于 JVM 的语言。该应用程序是一个命令行工具,可以解析文本文件、进行一些评估/转换,然后导出基于文本的文件。

我的团队主要使用 Java 进行开发,因此我们拥有大量现有的 Java 能力和可重用组件。然而,Prolog 的能力非常低。

我不希望有一个工具可以获取 prolog 源代码并将其转换为其他语言。但我试图了解什么是最简单的解决方案。从头开始使用 Java 还是使用更实用的语言(如 Clojure)?

【问题讨论】:

  • 您确定需要函数式编程吗?该应用程序的真正作用是什么?有许多用于文本转换和评估的 java 库 - jakarta、velocity、...
  • @NeplatnyUdaj 为什么这是个问题? Clojure 是一种 JVM 语言,可以使用任何现有的 JVM 库。
  • @NeplatnyUdaj 顺便说一句,没有名为“Jakarta”的图书馆。 Jakarta 是许多 Java 项目的保护伞。
  • 我不是说这是个问题。我只是想知道是否有必要。任何事情都可以在纯 Java 中完成,这取决于具体的任务是学习新的编程范式还是使用团队已经体验过的技术更好。当然,你对 jakarta 的看法是对的,我应该说 apache commons。
  • 那些搁置这个问题的人比我更有名望,但我想知道这个问题是否应该被允许,尽管它是边缘性的。这个问题很模糊,答案可能到处都是,但 OP 有一个非常实际的问题,需要一些指导才能找到更具体的问题。 (或者问题应该转移到 Programmers.SE。)

标签: java clojure jvm prolog


【解决方案1】:

但我正在尝试了解最简单的解决方案。

Prolog 的一些实现在 JVM 平台上运行。维基百科在这里列出了其中的 5 个:http://en.wikipedia.org/wiki/Comparison_of_Prolog_implementations。因此,也许最简单的解决方案是在您的团队中使用 Prolog 培训某人,然后将应用程序移植到 JVM Prolog 实现中。 (这可能是一件简单的事情......)

您团队中的某些人可能需要 Prolog 技能才能成功地将 Prolog 翻译成其他语言。


但是,我知道翻译可能还有其他原因;例如如果现有的 Prolog 代码无论如何都需要大修。

【讨论】:

    【解决方案2】:

    这主要取决于您团队的技能。您提到您的团队拥有相当不错的 Java 技能;为什么不从那开始呢?

    如果他们不了解 LISP,他们将花费大量时间从头开始学习它。学习 LISP 是一项相当大的投资,但最终肯定是有回报的。

    虽然 Clojure 会在您的情况下为您提供很多帮助(因为数据流和数据转换),但我想说 Java 是一个更好的选择,因为您的团队可以胜任它。

    【讨论】:

      【解决方案3】:

      您可以考虑将 Clojure 与 core.logic (tutorial) 一起使用,这是一个 miniKanren 实现。你需要一些逻辑/函数式编程技能,但你可以留在 JVM 上。

      【讨论】:

      • +1 for core.logic - 这是一个精心制作且非常高效的工具,我已成功使用它来解决一些逻辑编程问题。
      【解决方案4】:

      Prolog 与 java 和其他面向对象语言非常不同。我研究这种语言是为了了解另一种编程方式。 但我不认为有一个神奇的解决方案可以将 prolog 应用程序转换为 java 应用程序。逻辑不一样,没有其他语言像 Prolog。我认为您将不得不分析您的 prolog 应用程序究竟做了什么,并从头开始使用新的 java 应用程序。

      【讨论】:

        猜你喜欢
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 2014-06-07
        • 2013-09-08
        • 1970-01-01
        相关资源
        最近更新 更多