我听说有些人在一个项目中使用多种语言进行编程。我无法想象这些语言如何相互作用。
我的意思是没有像这样的Java方法
myProgram.callCfunction(parameters);
从来没有发生过还是我错了?
在一个项目中使用多种语言实际上很常见,但背后的原理并不总是简单。
在简单的情况下,不同的语言被编译为相同的代码。例如,C 和 C++ 代码通常编译为机器汇编程序或 C#,而 VB.Net 则编译为 IL(.NET 运行时理解的语言)。
如果语言/编译器使用不同的类型系统,事情就会变得更加困难。可以有很多不同的方式,基本数据类型如整数、浮点数和双精度数在内部表示,甚至还有更多的方式来表示字符串。当在不同语言之间传递类型时,必须确保双方对类型的解释相同,或者 - 如果不是 - 类型被正确映射。这种类型映射也称为编组 http://en.wikipedia.org/wiki/Marshalling_(computer_science).
不同程序语言之间的互操作性的经典示例是(主要来自 Windows 世界):
- .NET 平台可用的各种语言。其中包括 C#、VB.Net、J#、IronRuby、F#、XSLT 和许多其他不太流行的语言。
- 用 C++ 或 VB 编写的本机 COM 组件可以与多种语言一起使用:VBScript、VB、所有 .NET 语言、Java
- Win32 api函数可以从.NET或VB调用
- IPC(进程间通信)
-
Corba https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture,可能是最全面(也是最复杂)的方法
- Web 服务和其他面向服务的架构,可能是最现代的方法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)