Programming languages 用两种语言编写程序?

Programming languages 用两种语言编写程序?,programming-languages,Programming Languages,一个程序可以用多种编程语言编写吗?我在每日WTF上读到的内容似乎暗示,大公司/组织在构建大型应用程序时会使用几种不同的语言。这是怎么回事?我从Django的工作中了解到,动态网页通常是由一系列不同的语言组合而成的(Python用于控制器,HTML+Django的模板语言用于视图,SQL用于模型),但是程序呢,即编译时会变成.exe的程序呢 如果不同语言的编译器可以生成相同格式的对象文件,则链接器不关心编译它们的语言 或者,您可以从任何语言编译.dll,其工作原理相同。这是可能的,尽管不是很常见。

一个程序可以用多种编程语言编写吗?我在每日WTF上读到的内容似乎暗示,大公司/组织在构建大型应用程序时会使用几种不同的语言。这是怎么回事?我从Django的工作中了解到,动态网页通常是由一系列不同的语言组合而成的(Python用于控制器,HTML+Django的模板语言用于视图,SQL用于模型),但是程序呢,即编译时会变成.exe的程序呢

如果不同语言的编译器可以生成相同格式的对象文件,则链接器不关心编译它们的语言


或者,您可以从任何语言编译.dll,其工作原理相同。

这是可能的,尽管不是很常见。所有语言最终都编译成汇编语言,因此只要每种语言使用相同的ABI(调用约定等),用不同语言编译的模块就可以链接在一起。但这并不常见


此外,许多程序使用扩展语言。例如,魔兽世界中的大部分用户界面都是用Lua扩展语言编写的,即使核心WOW程序可能是C++。

< P>简短的答案是肯定的,答案是:

是,通过执行以下一项或多项操作:

  • 构建库并在编译时将它们链接在一起
  • 构建动态库并在运行时链接到它们,这样您就可以拥有一个exe和一些DLL
  • 对于像.net这样的框架来说,只要框架支持它,语言就无关紧要,因为它要么用相同类型的代码编译,要么框架知道如何运行它

  • 是的,您当然可以用多种语言编写程序。您需要做的是将程序模块化。例如,将模块编写为DLL。如果愿意,可以对每个DLL使用不同的语言,只要DLL之间的接口是通用的


    我从事的一个项目已经发展了8年多。这个程序是在C++中开发的。今天,它的.NET。模块化是通过构建COM对象来实现的。这使我们能够为同一应用程序使用多种语言和技术。我拥有的最古老的代码是basic vanilla C,最新的代码是C#3.5。

    当然可以。在.NET中,Windows可以在DLL中生成C、VB和C++,这些组件都生成IL对象代码。 在Windows或其他平台(Unix、Linux)上编译为本机时,许多编译器以标准/共享格式生成目标文件。在这种情况下,链接器可以轻松地将它们组合成共享库、静态库或最终运行时(Unix术语中的.out或ELF二进制)


    这通常是因为不同的程序员有不同的偏好,而且一些语言结构有助于更好地描述特定类型的解决方案。

    大多数编程语言都有一种与C接口的方法。当一个应用程序由多种不同的语言组合在一起时,它可以通过为每个不同的组件创建C接口并连接C接口来实现,也可以将不同的组件编译成单独的应用程序,使用套接字或其他形式的进程间通信相互通信。

    在编程方面接近石器时代,当一切都用汇编语言编写时,编译语言就出现了。在经历了一些痛苦、悲伤和岁月之后,人们犹豫地承认,至少用“高级语言”(如FORTRAN)编写应用程序的某些部分是件好事。但许多模块仍保留在汇编中,其中包含FORTRAN不能很好完成的事情,如CPU欺骗、微小的代码空间需求等


    在我上世纪80年代开发的一个应用程序中,我们使用FORTRAN、PL/M、8086汇编和C语言开发。语言的选择是由历史的发展势头以及不断改进的编译器和构建工具推动的。

    今天,您不太可能只使用一种语言

    看看Adobe。所有流行的Adobe产品现在都包含越来越多的Lua脚本。他们从Lightroom开始,现在的技术业务策略是用C/C++/Assember编写基本例程(快速SSE图形需要这个),所有GUI都用Lua粘在一起。

    以上答案(我到目前为止看到的)都是正确的。还有一点没有提到,公司/组织对“大型应用程序”的定义有时与程序员的定义不同

    对于医疗服务部门来说,医院医疗信息系统是一个“大型应用程序”,即使它实际上涉及到,例如,一系列不同的web服务器、数据库、用于集成各种第三方产品的各种定制脚本、专门编写的放射诊断客户端程序、医生和护士的不同web界面,以及在上传结果时呼叫医生的短信系统等


    换句话说,如果你认为“大型应用程序=一个大型二进制文件”,那么一个组织可能会认为“大型应用程序=一个名词,代表一堆大型IT合同,而不管涉及多少二进制文件。”

    是的,这是可以做到的。通常情况下,之所以不这样做是因为目标语言没有特定的功能,或者所述功能更容易在另一种语言中实现

    性能是在单个应用程序中混合语言的另一个原因。在解释语言中,速度可能比C/C++慢几个数量级。应用程序可以使用C/C++编写CPU密集型部分,同时将大部分程序逻辑保留在更高级的语言中,以获得最佳性能和编程方便性。

    使用不同的语言和技术构建大型应用程序是很常见的。混合语言