代码之家  ›  专栏  ›  技术社区  ›  Stefan Mai

多编程语言项目的最佳实践

  •  0
  • Stefan Mai  · 技术社区  · 17 年前

    有人有做这件事的经验吗?我现在正在使用C++中的Java反编译程序,但是希望使用高级语言来完成内部树的实际转换。我很好奇,在语言之间整理数据的开销是否值得更具表现力和语言的好处,以便更好地表达我正在尝试完成的工作(如haskell)。这实际上是在“真实世界”中完成的,还是通常在项目开始时选择一种语言并坚持下去?那些尝试过的人有什么建议吗?

    3 回复  |  直到 13 年前
        1
  •  2
  •   James Eichele Bernard Igiri    17 年前

    我一直主张为每个挑战选择正确的编程语言。如果有另一种语言可以很容易地处理一些棘手的任务,我会说去做。

    这是发生在现实世界吗?对。我目前正在研究一个由PHP和Objective-C代码组成的项目。

    正如你所指出的,诀窍是两种语言之间的交流。如果可能的话,让每种语言都坚持自己的领域,并让这两个部分以尽可能简单的方式进行通信。在我的例子中,它是通过HTTP发送的XML文档。在您的例子中,某种格式化的文本文件可能是答案。

        2
  •  1
  •   Barry Kelly    17 年前

    编组成本取决于您使用的语言和体系结构。例如,如果您在CLR或JVM上,有低成本的互操作解决方案可用——虽然我知道您正在使用可能的非托管C++。

    另一种方法是嵌入式领域特定语言。树转换通常可以通过模式匹配和少量函数的应用来表示。您可以考虑编写一个简单的树模式匹配器-例如,一些看起来像lisp s-exprs但使用占位符来捕获变量的东西-与转换匹配子树的函数相关联的操作。

        3
  •  1
  •   ConcernedOfTunbridgeWells    17 年前

    John Ousterhout ,的发明者 Tcl/Tk 他是多语言编程的忠实拥护者,写过很多关于它的文章。为了做到这一点,您需要一个干净的接口机制,在您为它使用的语言之间。有相当多的机制可以做到这一点。执行此操作的不同机制示例如下:

    • SWIG (Simplified Wrapper and Interface Generator 可以采取C 或C++(或其他几种语言) 头文件并生成 高级语言的接口 例如Perl或python, 您可以访问API。有 其他使用此功能的系统 方法。

    • Java支持 JNI 以及各种 其他系统,如python ctypes VisualWorks DLL/C connect 是本机机制 让你明确 构建对下层的调用 级别子系统。

    • Tcl/Tk明确设计为 嵌入,并且具有 native API 对于C库,添加钩子到 语言。的构造 这类似于argv[]结构 C,并被设计成 相对容易接口A 基于命令行的C程序 TCL。这与上述情况类似 示例,但来自相反的 方向。许多脚本语言 例如python、lua和tcl支持 这种机制。

    • 明确的粘合机制,如 Pyrex ,类似于 包装生成器,但是 用于定义 接口。Pyrex实际上是 完整的编程语言。 中间件,如 COM 或 CORBA 允许泛型 要生成的接口定义 在应用程序外部 interface definition language 和的语言绑定 使用相关语言 公共接口机制。

    推荐文章