Programming languages 什么时候混合语言?

Programming languages 什么时候混合语言?,programming-languages,mixing,Programming Languages,Mixing,在哪些情况下应该混合使用语言 我不是说使用ASP.NET和C#和HTML,也不是说用C编写的应用程序通过SQL查询访问SQL数据库。我说的是像C++和FORTRAN或艾达和Haskell等混合的东西。 [编辑] 首先:谢谢你的回答 当我问这个问题时,我记得你总是读到“每种语言都有它的特殊用途” 一般来说,通过使用特殊的库,您几乎可以用任何语言完成所有工作。但是,如果你对学习不同的语言感兴趣,为什么不选择最适合你的编程语言,而不是一个解决你的语言最初不是为之设计的问题的库呢?混合语言的最大原因是因

在哪些情况下应该混合使用语言

我不是说使用ASP.NET和C#和HTML,也不是说用C编写的应用程序通过SQL查询访问SQL数据库。我说的是像C++和FORTRAN或艾达和Haskell等混合的东西。 [编辑]

首先:谢谢你的回答

当我问这个问题时,我记得你总是读到“每种语言都有它的特殊用途”


一般来说,通过使用特殊的库,您几乎可以用任何语言完成所有工作。但是,如果你对学习不同的语言感兴趣,为什么不选择最适合你的编程语言,而不是一个解决你的语言最初不是为之设计的问题的库呢?

混合语言的最大原因是因为一种语言在某些方面有优势,一个人在另一个人身上有优势。因此,您试图通过将两者结合在一起来利用两者的功能。一个常见的例子是使用C和ASM,因为C更抽象,更容易在程序中完成更复杂的工作,但是,您可能希望使用ASM来完成硬件和处理器的底层工作。因此,考虑到C语言的性质及其在嵌入式系统中的使用,它们通常是混合的。

根据语言所属的范式,它有其优缺点。例如,人们可能希望使用C#的GUI功能,但在显示某些细节之前,可以使用Prolog(逻辑范式中的一种语言)的高效回溯或人工智能功能来计算这些细节

一个简化的例子

想象一下,试图编写一个程序,允许用户对计算机下棋

(可能)我会:

1。)使用Windows GUI库创建视觉效果

2。)使用Prolog计算可能的移动,并选择最佳/最可行的移动

3。)在我的C#代码中从Prolog中检索步骤2的结果,并呈现结果

4.允许在C#中进行游戏性和快速的视觉和UI开发,并依靠Prolog进行计算/回溯

  • 两个头比一个头好

    我经常看到Flash嵌入C语言中,AI和其他重代码从C++ DLL中运行。

  • 被迫

    编写新代码以扩充旧框架支持的新系统


    • 我知道在你的问题中,你排除了这一点,但不同的领域使用不同的语言

      现在我正在开发一个数据可视化工具,数据在数据库中,因此当然有一些SQL,但这很难计算,因为它很小,而且经常需要。数据被转换成一系列的图形,我使用的是R,它类似于MATLAB,但是是开源的。它是一种独特的统计语言,具有一些高级绘图功能

      数据可视化工具不仅仅是一个图形生成器,因此需要有一种方法来浏览和导航这堆图像文件。我们选择使用html和嵌入式javascript构建一个可以轻松分发的离线“应用程序”。它是离线的,因为它是自包含的,html是精心生成的,其中的js是精心设计的,允许用户浏览成千上万的图像,并根据许多标准进行排序或过滤

      如何根据数据库结构精心设计javascript和html,随着团队其他成员的进步,数据库结构会发生变化?它们是由一个perl程序(真正的单通道脚本)生成的,该程序读入数据库中获取一些结构和关键信息,然后输出超过300KB的html/js。它也不完全是简单的html,与R绘图和一些onclick()javascript仔细对齐的图像映射允许用户实际与普通图像绘图交互,因此整个过程感觉像一个真正的数据浏览器/可视化工具应用程序

      这是四种“语言”,如果算上SQL,就是五种,只是为了制造一个单一的最终产品


      我不认为用一种语言做这件事是一个好的选择,因为我们正在利用真正的web浏览器的功能,为我们提供一个免费的GUI和前端。

      例如,在视频游戏中,我们使用不同的语言用于不同的目的:

        >强>应用程序(游戏)代码:必须快速、有组织,并且大部分时间跨平台(至少Win,MacOS是设想的),经常在约束重平台(控制台)上,所以使用C++(有时C和ASM)。
      • 开发工具:级别设计工具生成游戏代码将使用的数据。这类工具不需要在目标平台上运行(但如果可以的话,它更容易调试),因此它们通常是由快速开发语言(如C#、Python等)制成的
      • 脚本系统:游戏的某些部分必须由设计师使用变量或脚本进行调整。嵌入脚本语言比编写脚本语言更简单、更便宜,因此经常使用Lua或其他类似的脚本语言
      • Web应用程序:有时游戏需要在线提供一些数据,最常见的是在使用SQL访问的数据库中。然后,web应用程序使用的语言可能是C#、Ruby(R.O.R.)、Python、PHP或其他任何对工作有利的语言。因为它是关于web的,所以您也必须使用HTML/Javascript
      • 等等
      在我的游戏中,我也使用HTML/Javascript作为GUI

      [编辑]

      回答您的编辑:您最熟悉的语言并不总是最有效的工作工具。这就是为什么我用C++来制作自制游戏,因为我知道它最好(我可以使用很多其他语言,因为目标是WIN/MAC/Linux,不是控制台),但我使用Python做每一个游戏。
      Public Function GetEmployeeXml (ByVal salesTerritoryKey As Integer) As XElement
          Using context As New AdventureWorksDW2008Entities
              Dim x = <x>
                      <%= From s In context.DimSalesTerritory _ 
                      Where s.SalesTerritoryKey = salesTerritoryKey _
                      Select _
                      <SalesTerritory 
                          region=<%= s.SalesTerritoryRegion %>
                          country=<%= s.SalesTerritoryCountry %>>
                          <%= From e in s.DimEmployee _
                              Select _
                          <Employee firstName=<%= e.FirstName %> lastName=<%= e.LastName %>>
                               <%= From sale in e.FactResellerSales _
                                   Select _
                              <Sale 
                                  orderNumber=<%= sale.SalesOrderNumber %>
                                  price=<%= sale.ExtendedAmount %>/>  %>
                          </Employee> %>
                      </SalesTerritory> %>
                      </x>
              Return x
          End Using 
      End Function