从讨论中我已经有关于语言的设计,这似乎是一个很多人说没有,将来也不会是"一种真正的语言"。所替代,根据这些人,以熟悉多种语言并挑选合适的工具的工作。 这非常有意义,在整个项目或一个大型次级项目,只有与其他项目通过一个非常狭窄的定义明确的接口。

另一方面,使用大量不同的语言似乎是一个非常尴尬的事情要做时,试图解决很多的小子问题优雅。换句话说,恕我直言,通用语言是体面的一切仍然重要。作为一个微不足道的例子,让我们说你需要做到以下几点:

  1. 读一堆数据中的一些任意的格式,从一个文件。检查它的错误,等等。(最佳做喜欢的东西Perl).
  2. 载入这个数据进入矩阵,做了一堆的铁杆矩阵行动上(最佳做喜欢的东西Matlab).
  3. 运行一个自定义、计算密集程序,必须快速和空间效率(最佳做C或C++)。

这是一个相当简单的项目,其他比写的计算密集的定义阵处理例行程序,但只有很好的回答关于什么使用的语言似乎是一个一般性目的的一个体面的一切。

我是什么丢在这里?一个人如何使用多种语文有效地利用他们的每一个优势?

有帮助吗?

解决方案

我曾在许多项目包含一个相当的多样化的混合语的语言。除非它是一个.净的项目,常常使用这些不同的语言,在不同的层次,或在不同的进程。也许你的网络应用程序是在PHP和应用程序服务器。所以你不是真的"混合和搭配"在方法的水平。

中。净和一些java vm语文的规则的改变一点,因为你可以混合使用更多自由。但特征的这些语言主要是定义的类库-这是常见的。所以动力交换的语言。净是通常由其他因素,例如其语言的开发人员知道。F#实际上提供了相当多的语言特性,都是特定的语言,因此它似乎是一点点的一个例外之内。网。一些java VM语言也增加方法的标准java库、添加功能,不适用。

你做的实际上获得相当使用与多种语言,只要所有人都有良好的IDE支持。没有,我真的认为我会丢失。

其他提示

嵌入式的语言,如Lua使这很容易。Lua是一个巨大的动态语言沿线的红宝石或Python并允许迅速发展高质量的代码。它还具有紧密的一体化与C,这意味着可以利用C++库和优化业绩的关键部分通过编写他们在C或C++。

在科学的计算是,也不罕见,有一个脚本,例如将做一些数据处理Matlab中,使用Perl重新格式化的输出,然后传递到另一个程序写入Matlab、C或什么的。这往往是更常见的时综合应用程序,已经由不同的人比当发展中东西从头开始,虽然。

考虑最困难的部份你的任务。是分析文件最复杂的部分?一个良好的语言阅读文件,然后操纵他们可能是最恰当的选择。

是数学的转变最困难的部分?你可能想把它吸和使用matlab,喂它在脚本,或其他家庭成长的工具。

是的性能最重要的一部分?多少算将完成对变革和分析?如果90%的工作将在计算,而其他部分只是暂时的,然后考虑C/C++的解决方案。

有没有内在的错误玩到多种语言的长处在一个简单的解决方案,尤其是如果你不介意的胶合它连同脚本。然而,更多的语言和模块,你将增加你的依赖,而更多依赖关系的,你有,更多的和更多的困难就变成分发和维护应用程序。这就是真正的折衷之处在于:少技术、图书馆和位的软件你需要运行的应用程序,简单就越大。简单的应用程序,更多的可维护性、可分发,可调试,并使用就越大。

如果你不介意的额外开销的整合多件技术,或者开销将节省您的等或更大量的发展时间,去吧

我认为这很好。如果你将它作为一个多层设置在哪里的每一个层访问什么是它的下面同样的方式(肥皂/XML/COM等),我发现它是隐形的结束。

对你的例子,我会选择一个语言用于前端,方便、快速、灵活和可以做出许多,很多,很多,很多,很多类型的呼吁不同的接口,如com、corba xml,.净额,定dll库、ftp和定义活动的网关。这保证你可以打电话或接口与任何其他语言容易。

我的首选工具对这Coldfusion从工作与ASP/PHP/Java和一点的红宝石。这似乎有这一切在一个地方,是非常简单的。为你的特定情况下,COldfusion会让你编译自己的图书馆的标记,你可以打电话在你的网页码。内部标记,你可以把所有对c码你喜欢并使它做任何你想要的。

有免费和开放源码版本的Coldfusion提供和它是梦幻般的使Java和。净呼叫天真地从一个代码的基础。检查出来,我真的觉得这可能是最适合为它是由于这些种类的企业解决方案。

我知道PHP可以很好这也取决于你的情况,并且我是肯定的Asp.net 不是太远远落后。

我的工作在多种语言都有所涉及的只是一个简单的混C#and C++/CLI(这就像C++。净,如果你有没有听说过的话)。我不认为这是值得说的。净和Visual Studio能让你相结合许多不同的语言一起意味着,你不会具有尽可能高的开销,因为你通常会期望当结合两种语言-Visual Studio保持它所有的在一起。鉴于有许多。净的克隆的各种语言,IronPython,如何从语言特性,JScript.NET 例如-Visual Studio是一个相当好的方式,可以结合各种语言。

下述的技术水平,这听起来像什么你是感兴趣,它的方式在视觉工作室是你必须有一个项目为每一个单独的语言,并且每个项目被编制成一个组件基本上这意味着它成为一个图书馆的其他项目使用。你会有一个主要项目,该项目驱动器的一切,并呼吁其他图书馆。要求各个不同的语言具有是一个不同的项目指你不会改变语言的方法的水平,但是如果你正在做一个足够大的应用程序,可以在逻辑上分成多个项目,这实际上可能相当有用的。特别是,分离和抽象,可以使事情更容易的整体。

你是说这的选择是一)把一切都写在一个语言和失去效率,或者b)拼凑在一起一堆不同的可执行程序,以便使用更好的语言为各个部分的工作。

大多数工作程序挑选择c:做最好的,他们可以与语言的其它部门支持在生产。通常程序有一些限定语言选择在一个特定的框架如JVM或CLR-所以它既不是"工具箱"乌托邦,也没有monolanguage贫民窟。

即使灯和轨支(需求,真的)不同语言的不同层次-HTML,Javascript,Ruby,C情况下的轨道。如果你写的软件服务(这是在哪里最有趣的工作是发生这些日)然后你在几乎没有写在只是一个语言。但是你的选择不是无限的,任。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top