什么情况下语言应该混合?
我不是在谈论将ASP.NET与C#和HTML一起使用,或者是用C语言编写的应用程序通过SQL查询访问SQL数据库.我正在谈论的事情,例如将C++与Fortran或Ada与Haskell等混合使用.
[编辑]
首先:谢谢你的所有答案.
当我问这个问题时,我记得你总是读"每种语言都有其特殊用途".
通常,您可以使用特殊库来获得几乎所有语言的完成.但是,如果您有兴趣学习不同的语言,为什么不采用最符合您目的的编程语言而不是解决您的语言最初不是为其设计的问题的库?
例如,在视频游戏中,我们使用不同的语言用于不同的目的:
应用程序(游戏)代码:必须快速,有条理并且大部分时间跨平台(至少胜利,MacOS是设想的),通常在约束重型平台(控制台)上,所以C++(有时候是C和asm) ) 用来.
开发工具:关卡设计工具生成游戏代码将使用的数据.这些工具不需要在目标平台上运行(但如果你可以更容易调试),那么它们往往是用快速开发语言,如C#,Python等.
脚本系统:游戏的某些部分必须由设计师使用变量或脚本进行调整.嵌入脚本语言而不是编写脚本语言真的更容易和便宜,因此经常使用Lua或其他类似的脚本语言.
Web应用程序:有时游戏需要在线提供一些数据,最常见的是在使用SQL访问的数据库中.然后,Web应用程序使用可能是C#,Ruby(ROR),Python,PHP或其他任何有利于工作的语言编写.因为它是关于网络的,所以你必须使用HTML/Javascript.
等等...
在我的游戏中,我也使用HTML/Javascript进行GUI.
[编辑]
要回答您的编辑:您最了解的语言并不总是最有效的工作工具.这就是为什么例如我将C++用于我的自制游戏,因为我最了解它(我可以使用很多其他语言,因为目标是Win/Mac/Linux,而不是控制台)但我使用Python来处理与构建过程相关的所有内容,文件操作等.我不深入了解Python,但使用C++进行快速文件操作比使用C++更容易.出于显而易见的原因,我不会将C++用于Web应用程序.
最后,您可以使用对工作有效的方法.这就是你在现实世界的约束中学到的东西,并考虑到金钱,时间和质量.
好吧,最明显(也是最常见)的情况是当你使用一些高级语言来制作大部分程序时,获得快速开发和稳健性的好处,同时使用一些较低级别的语言,如C甚至汇编来获得速度在哪里很重要.
此外,很多时候有必要与其他语言编写的其他软件接口.这里有一个很好的例子是操作系统公开的API - 它们通常用C编写(虽然我记得一些使用Pascal的旧MacOS版本).如果您的语言编译器基础结构没有本机绑定,则必须编写一些接口代码以"粘合"程序"另一方".
还有一些特定于域的语言,专门用于有效地表达某种类型的计算.您通常不会将整个程序编写在其中,只是某些部分是适当的工具.Prolog就是一个很好的例子.
最后但并非最不重要的一点是,您有时会有大量旧的和经过测试的代码用另一种语言编写,您可以从中受益.您可能只想将其与新程序连接,而不是用新的更好的语言重新发明轮子.这可能是最常见的(如果不是唯一的)将类似用途的语言混合在一起的情况(你提到的是C++和Fortran吗?).
通常,不同的语言有不同的优点和缺点.您应该尝试使用适当的工具来完成手头的工作.如果用不同语言表达程序某些部分的好处大于这引入的问题,那么最好去做.