哪种动态语言可以轻松使用其他语言的库?
请说说你认为为什么像Python、Perl、Ruby这些语言在使用其他语言的模块时,最简单、最省心。
为了更清楚,举个例子:我想用Python来写业务逻辑,但又想用一个方便的Perl模块里的功能。
换句话说,哪种语言和最多的模块“配合得最好”呢?
7 个回答
如果你想使用一个Perl模块,最合适的语言就是Perl。因为Perl能够正确地表达用Perl写的代码的含义和功能。这一点其实并不让人惊讶。
如果你有一个独立的程序,想从另一个程序中调用它,并且这两个程序不需要不断互动,那么任何语言都可以做到这一点,无论这些程序是用什么语言写的。在这种情况下,你其实并不是在一个程序里使用其他语言,而只是简单地调用其他程序。
有几个项目在尝试把不同的语言组合在一起,比如Parrot项目,旨在提供一个兼容多种语言的平台,还有像.NET这样的项目,几乎是偶然间实现了之前不兼容语言之间的兼容性。不过,我觉得这些项目大多数并没有你想象中的那么强大、成熟,也不太适合将普通代码结合在一起。
Parrot虚拟机看起来是实现这个目的的好选择,因为
Parrot目前支持多种编程语言的实现,这些语言的开发进度各不相同,包括Tcl、Javascript、Ruby、Lua、Scheme、PHP、Python、Perl 6、APL,以及一个.NET字节码翻译器。
我觉得,选择哪种语言作为“主要驱动”并不那么重要,哪种语言作为“客人”也无所谓——只要确保你选择的语言在Parrot上的实现是完整且成熟的就行(因为Parrot是一个相对较新的项目,而在它基础上实现的某些语言也同样是新的)。
Perl 语言通过一组叫做 Inline 的模块,能够很好地支持其他编程语言。
Inline::Python 这个模块让你可以把 Python 的模块、类和函数导入到 Perl 代码中,并且可以像使用 Perl 自带的功能一样调用它们 - 具体可以看看 导入函数 的部分。
Inline::Ruby 的工作方式几乎是一样的。