我正在处理大量需要转换为 Ruby 的遗留 C 代码以用于项目。
我在网上看到过 Ruby 到 C 的翻译器,但不是相反。是否有一种简单的方法来解决这个特定问题?
我正在处理大量需要转换为 Ruby 的遗留 C 代码以用于项目。
我在网上看到过 Ruby 到 C 的翻译器,但不是相反。是否有一种简单的方法来解决这个特定问题?
您要么必须编写一个 C 到 Ruby 的转换器,这是可能的,但付出的努力可能是不合理的,或者您可以将 C 代码拆分成更小的模块,作为第一步,您可以创建 Ruby 包装器。一旦它们全部用 Ruby 封装并且主要控制流在 Ruby 中完成,您就可以编写一个测试工具(既可以验证替换代码的正确性,也可以帮助逆向工程)并开始用 Ruby 模块替换 C 模块。
如果您将模块用作本机扩展,则分治法应该适用于常规 Ruby,但如果您将 JRuby 之类的东西作为您的运行时环境,这显然会导致进一步的问题。如果您想根据您的评论在 JRuby 中做类似的事情,您正在考虑将 C 模块包装在 JNI 中并以这种方式从 JVM 调用。无论哪种方式都将允许您的 C 代码与 Ruby 代码交互,但这两种方法不可互换。
这两种方法都不会很快,而且都需要大量的工作。
你可以:
C 编程和 Ruby 编程具有完全不同的编程范式。因此,尽管您可以用任何语言编写 Fortran(或在这种情况下为 C)代码这句老话是正确的,但您最终通过机器翻译获得的 Ruby 代码根本不是 Ruby,除非在语法上。
所以,恕我直言,除了手动(我可能会补充说,由熟练的 Ruby 专家完成)以外的任何方式都是不可能的,或者至少根本没有用。
也许你可以试试这个https://github.com/jackieju/CPP2Ruby/ 它对 cpp 来说是新鲜的,但对于 c 到 ruby 来说存在的时间更长
你可以试试Abap2Ruby。它还可以将 cpp 转换为 ruby。