Architecture 多语言编程:用多种语言构建应用程序是一种好的实践吗?
我正在考虑构建一个混合了动态语言(python或ruby)和编译语言的应用程序,需要一些帮助来说服自己这是一个好主意 我的想法是,我可以使用动态语言快速编写大量代码,然后使用c/c++等编译语言来实现性能关键型代码 我可以看到这种方法的许多好处:Architecture 多语言编程:用多种语言构建应用程序是一种好的实践吗?,architecture,polyglot,Architecture,Polyglot,我正在考虑构建一个混合了动态语言(python或ruby)和编译语言的应用程序,需要一些帮助来说服自己这是一个好主意 我的想法是,我可以使用动态语言快速编写大量代码,然后使用c/c++等编译语言来实现性能关键型代码 我可以看到这种方法的许多好处: 通过主要使用动态语言进行编码,提高了生产效率 提供两种语言的图书馆 但也有一些不利因素: 维护两种语言之间的桥梁 依赖两种语言和语言/库错误,而不是一种 这种方法的其他优点/缺点是什么?有人知道这方面的资源和/或最佳做法吗?有。许多程序是高级语言(如P
这种方法的其他优点/缺点是什么?有人知道这方面的资源和/或最佳做法吗?有。许多程序是高级语言(如Python或Ruby)和低级语言(如C)的混合体。在垃圾收集OO语言中编码逻辑的好处在于,您仍然可以在紧密的内部循环中手动管理寄存器。我认为您的方法非常明智。解决这些问题的方法是提前发现,在决定是否使用它来为项目使用动态语言时,将动态语言与C或C++连接起来是多么容易。p>
此外,您需要考虑是否希望应用程序跨平台。与编译语言相比,动态语言对平台的依赖性可能要小得多。这可能是决定应用程序的哪些部分应该用C或C++来做的一个因素。 < P>我认为这是个好主意。
<>因为大多数(几乎所有)OSE都是用C或C++编写的,每一个动态的或解释的语言都在某种程度上回落到一个编译的、优化的语言中,对于低层次的事物。 < P> JA,Bion Sur.,mein freund。这确实是联合国的想法。博阿分拣机 我当然是在开玩笑。web开发人员每天都这样做,甚至没有注意到:Java、JSP、EL/OGNL、HTML、CSS、Javascript、ant、XML、XSLT
我认为多语言编程是自然的、强大的、高效的,比其他编程更酷。当然,它必须以正确的方式使用,以利用每种语言的最大能力,并且不要混淆团队中的其他人。您可能会发现,在以后的时间之前,您不需要实现任何性能关键的东西。因此,我将努力反对这些性能关键的重大变化之一的进入,直到您真正确定您需要这样做 否则,只需选择一种根语言,perl和ruby使用c,因此它们的合并非常简单。您还可以在JavaVM上运行python(jython)或ruby(jrunby),这将为您提供Java作为后端。尽管它可能会带来一些其他问题,因为我不熟悉针对这些语言版本进行开发 但并不是所有的性能问题都需要您使用低级语言,所以在快速跳转到另一种语言之前,请先尝试用一种语言解决它
祝你好运,我赞成用最好的工具来完成这项工作。在软件工程中,这意味着要精通多种语言。你永远不会期望木匠只使用锤子,不管他/她在做什么。为什么对我们来说应该有所不同呢?这很常见,但请确保您知道为什么要以您自己的方式来设计它 游戏编程就是一个例子。在许多游戏中,性能关键型游戏引擎是用C语言编写的,而级别脚本则是用Python、Scheme、一种本地语言或其他语言编写的 这意味着性能极客使用的是他们喜欢的语言,这给了他们所需的低级控制,而级别设计者可以使用更高级的语言,他们不需要担心内存管理等问题。@ 我对Jython和JRuby都有经验。。。JRuby带来了更多的好处 我必须说它们是很好的平台,您可以从动态语言中获得巨大的好处,再加上丰富的Java第三方和第一方库支持,再加上高度独立于平台的基本编译语言,再加上两种语言中的垃圾收集(理解内存管理很重要,但我的阵营是,除非您真的需要它,否则最好不要使用它,例如,如果您正在做驱动程序或内核级的工作,或者需要尽可能提高性能的工作) 我只想给大家讲一个简单的故事。我最近正在构建一个ruby脚本来为Solr实例编制索引,我需要访问一个DB2数据库(我们要编制索引的数据源)。Straight ruby失败得很惨……它有可怕的DB2支持,需要完整安装DB2 express edition……但它仍然没有像广告中那样工作(在我完成安装后,我无法编译Ruby驱动程序),解决方案是切换到JRuby并从Ruby端使用JDBC,使用两个易于安装的JAR(以及比DB2安装小得多的文件) 我强烈建议考虑使用JRuby或Jython,而不是使用C作为后端……我发现算法和资源性能对应用程序性能的影响通常比您选择的语言大得多,Java平台可以提供很多(从早期人们指责它比C/C++慢得多的时候起,它已经走过了很长的一段路。)除非你正在做大量的计算密集型工作,而这些工作无法通过算法进行重构,否则你很可能不需要使用编译语言,不管你选择什么
PS在JRuby中与Java的集成是非常无缝的(从JRuby到Java端),因此维护桥接器不是问题