gpt4 book ai didi

c++ - 语言整合

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:34 29 4
gpt4 key购买 nike

我可能是这里的少数,但似乎在我的整个学术/职业生涯中,我都被教授过不同的语言。在此期间,语法和编程范式是重点,但我们从未被教导如何集成使用不同语言编写的系统以及做出此决定的正确方法。

郑重声明,我不是在谈论规范的网络堆栈或更新、更性感、对 JVM 友好的语言。我想知道是否有“已知资源”可以让我了解绑定(bind)语言(例如 Java 和 C++)背后的决策过程。

当然,我会想到 XML、JSON 和 XMPP 等工具。再一次,我看到系统使用序列化绑定(bind) Java 和 C++。我不是在寻找一种一劳永逸的解决方案。我更有兴趣了解不同的解决方案以及我应该如何做出此类决定。

如果这对于这个论坛来说过于宽泛,我深表歉意,但至少我没有要求人们更正或重写我的拙劣代码;)

最佳答案

我能想到四种不同的模型:

  • 在应用程序中嵌入一种动态语言,该语言主要使用更“系统”的语言编写,例如嵌入在 Java、C++ 或 C# 应用程序中的 Lua、Python 或 Javascript。这主要用于应用程序的脚本/自定义组件。这将通过以动态语言可以使用的格式公开一些主机应用程序数据类型来实现。

  • 为存在性能问题的语言编写 native (或 C# 或 Java)扩展。 Python 和 Ruby 有很多这样的扩展。这与上面的不同之处在于动态语言是框架。这是通过编写 native 库(或其他 native 库的包装器)以符合客户端语言的调用约定来实现的。在系统代码中将汇编程序与 C 混合使用时,这也是相同的通用结构。

  • 在不同的地址空间中运行应用程序并通过套接字或管道进行通信。在这种情况下,应用程序在同一台机器上运行只是巧合——它们也可以通过网络进行通信。

  • 使用共享相同平台和调用约定的多种语言开发应用。例如,Java 和 Scala 可以自由混合。

关于c++ - 语言整合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258238/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com