首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >链接语言

链接语言
EN

Stack Overflow用户
提问于 2008-11-07 08:07:10
回答 6查看 884关注 0票数 15

我早些时候问了a question关于AI原型使用哪种语言的问题。人们的共识似乎是,如果我想让它变得更快,我需要使用Java或C++之类的语言,但Python / Perl /Ruby语言对于接口部分来说是很好的。

所以,这就引出了另一个问题。将这些语言链接在一起有多容易?哪种组合效果最好?所以,如果我想让Ruby CGI类型的程序调用C++或Java函数,这容易做到吗?有什么建议可以让我在哪里找到关于做这类事情的信息?或者一个不同的组合会更好?

我编写web应用程序的主要经验是从PHP开始的,然后转向Java servlets (大约10年前),然后在离开编程很长一段时间后,我做了一些C++。但我没有用脚本语言编写web应用程序的经验,脚本语言会调用编译语言来处理速度关键的部分。所以任何建议都是受欢迎的!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-11-07 09:46:14

Boost.Python提供了一种将C++代码转换为Python模块的简单方法。它相当成熟,在我的经验中运行得很好。

例如,不可避免的Hello World...

代码语言:javascript
复制
char const* greet()
{
  return "hello, world";
}

可以通过编写Boost.Python包装器向Python公开:

代码语言:javascript
复制
#include <boost/python.hpp>

BOOST_PYTHON_MODULE(hello_ext)
{
  using namespace boost::python;
  def("greet", greet);
}

就这样。我们说完了。我们现在可以将其构建为共享库。生成的DLL现在对Python可见。下面是一个Python会话示例:

代码语言:javascript
复制
>>> import hello_ext
>>> print hello.greet()
hello, world

(取自boost.org的例子)

票数 14
EN

Stack Overflow用户

发布于 2008-11-07 09:14:33

首先,元评论:我强烈建议用高级语言编写整个代码,像mad一样分析,并仅在分析显示必要的地方进行优化。首先优化算法,然后优化代码,然后考虑引入重量级的功能。当你需要在低级语言中重新实现时,拥有最优的算法和干净的代码将使事情变得容易得多。

就Python而言,IronPython/C#可能是最简单的优化路径。

使用C++的CPython是可行的,但我发现C更容易处理(但作为C语言并不是那么容易)。两个简化此问题的工具是cython/pyrex (用于C)和shedskin (用于C++)。它们将Python编译成C/C++,从那里您可以轻松地访问C/C++库。

我从未使用过jython,但我听说jython/Java优化路径并没有那么糟糕。

票数 9
EN

Stack Overflow用户

发布于 2008-11-07 10:42:11

我同意这样的想法:首先用Python这样的高级语言编码,然后用C/ C++实现任何需要加速的代码,然后包装它以便在高级语言中使用。

作为boost的替代方案,我建议使用SWIG来创建C语言的Python可调用代码。它使用起来相当轻松,并且可以编译适用于多种语言的可调用模块。(Python、Ruby、Java、Lua.举几个例子)从C代码中。

包装过程是半自动的,因此不需要向基本C代码添加新函数,从而使工作流程更加流畅。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/271488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档