由多种语言组成的程序是如何工作的?这些语言是如何协同工作或相互作用的?他们如何理解彼此的立场?您如何知道何时使用任何给定的语言,以及如何实现它们从而使它们协同工作?(不是就优势和弱点而言,而是就任务和职能而言)。这不是为什么要使用多种语言的问题,而是如何使用多种语言的问题。
请告诉我任何可能有助于我寻求理解的资源。
发布于 2016-03-30 08:38:04
语言之间的接口往往处于“最低公分母”级别。Java对C++类一无所知,C++对Python一无所知,等等。剩下的就是简单的函数调用和基元类型,例如整数、浮点数和字符串的字符数组。
在实践中,这种“最低公分母”通常是C。现在许多操作系统都是用C和/或C++编写的。因此,操作系统将有一个C编译器、一个C标准库和一个C(例如,Windows上的Win32 )。
理想情况下,在一个应用程序中避免使用多种语言,因为它会变得混乱。如果必须的话,那么只需使用简单的函数调用,就需要在两者之间设计一个干净简单的接口。这几乎就像写两个不同的节目,互相交谈。
发布于 2016-03-30 08:50:38
使用多种编程语言的程序是相当罕见的。除非有充分的理由这样做,否则通常应该避免这样做,因为它增加了必要的知识--维持这种知识所需的技能。
允许用不同的编程语言实现程序的不同部分的技术是Microsoft的公共语言运行时(),它是基于.NET的编程语言的目标。这是因为所有基于CLR的语言都编译成相同的字节码格式,然后由CLR执行。CLR是面向对象的,基本数据类型是标准化的,所以用一种语言编程的类可以实例化并使用用不同的编程语言编写的类的对象。
你经常看到的另一件事是使用脚本语言的程序(就像用C++编写的游戏引擎,它使用用LUA编写的脚本)。在这种情况下,程序使用一个库与脚本语言解释器接口。它将脚本源代码作为字符串传递给库,然后获取一组库函数来告诉脚本语言执行该代码。
然后你有更大的项目,由几个独立的程序组成,它们通过网络相互通信。例如,您可以让HTML+Javascript应用程序在web浏览器中运行,该浏览器调用运行在web服务器上的PHP后端,后者调用运行在应用服务器上的C++数据库。虽然从技术角度看,这些程序都是不同的,但从用户的角度来看,它们看起来就像一个应用程序。由于所有的通信都是通过标准化的网络协议实现的,因此各个组件不需要相互关心其他组件采用哪种技术来实现。
https://softwareengineering.stackexchange.com/questions/314230
复制相似问题