16

是否有用于 C++ 的脚本语言(如 perl)可用于快速开发并使用一些可以转换为 C/C++ 程序的工具以获得更高的部署性能?

编辑:
根据一些评论,让我澄清这个问题。我应该能够在不修改脚本的情况下将脚本转换为 C/C++ 程序或二进制文件。

4

12 回答 12

25

使用 C/C++ 解释器,您可以将 C/C++ 用作脚本语言


注意:到目前为止,我只尝试过ChCINT。我添加了cconsUnderC以使列表更完整。

于 2009-10-03T14:56:46.260 回答
10

您可以尝试在游戏行业中经常与 C++ 一起使用的Lua 。它的内存占用很小,而且非常成熟,有一个很棒的库……试试看吧。

嗯...我不明白你想要实现什么:你想找到一种脚本语言,它会以某种方式神奇地转换为 C++ 源代码吗?或者您真正想要的只是从脚本创建可执行文件的选项?如果是后者-那么您可以尝试py2Exe

于 2009-10-03T15:00:04.613 回答
4

任何对(大部分)与 C++ 非常相似的脚本语言感兴趣的人都可能想看看angelscript (ZLIB):

AngelCode 脚本库,也称为 AngelScript,是一个极其灵活的跨平台脚​​本库,旨在允许应用程序通过外部脚本扩展其功能。它从一开始就被设计为易于使用的组件,适用于应用程序程序员和脚本编写者。

已经努力让它调用标准的 C 函数和 C++ 方法,而不需要代理函数。应用程序只需注册脚本应该能够使用的函数、对象和方法,而无需对您的代码做任何其他事情。应用程序内部使用的相同功能也可以由脚本引擎使用,这消除了复制功能的需要。

对于脚本编写者,脚本语言遵循广为人知的 C/C++ 语法(稍作改动),但无需担心指针和内存泄漏。与大多数脚本语言相反,AngelScript 使用常见的 C/C++ 数据类型来更有效地与主机应用程序通信。

欲了解更多信息,请查看:http ://www.angelcode.com/angelscript/sdk/docs/manual/index.html

于 2010-03-07T21:54:57.087 回答
2

许多项目结合了例如 C++ 和 Python —— 例如参见 boost.python

我更喜欢R并使用从 R 到 C++的Rcpp接口。

无论哪种情况,您都可以使用脚本语言进行原型设计,并轻松“粘合”到 C++ 以提高性能。

于 2009-10-03T14:49:49.097 回答
2

典当

pawn 是一种简单的、无类型的 32 位扩展语言,具有类似 C 的语法。典当“源”程序被编译为二进制文件以获得最佳执行速度。pawn 编译器输出随后在抽象机器上运行的 P 代码(或字节码)。执行速度、稳定性、简单性和占用空间小是语言和抽象机器的基本设计标准。

这种语言与 c 语法非常相似,因此任何做过 c++、c、c#、java 的人都可以阅读它,而且它很简单,所以没有编码人员可以阅读它。这种语言目前被广泛使用,以及针对半衰期 1半衰期2服务器编写脚本的其他地方。

于 2009-10-03T15:58:18.813 回答
2

有一个为 C++ 设计的新包Chaiscript 。它相对较新,还不完全稳定。

于 2009-10-04T10:03:28.187 回答
1

对于 Python,我有时会发现psyco很有用。不确定是否有任何等效的 perl。

在为任务选择语言时,我发现选择最适合该工作的语言更有用。如果工作要求的性能比脚本语言在正常情况下所能提供的性能更高,通常最好只是切换而不是向后弯腰来尝试使您的代码更快。

于 2009-10-03T15:01:48.950 回答
0

GML : www.yoyogames.com

于 2009-10-03T14:55:48.837 回答
0

这个问题可以用不同的方式来解释......

如果您已经用 C++ 编写了应用程序的一部分并且需要添加模块或脚本,并且您希望最终添加到 C++ 代码中以提高性能,那么您可以使用Qt,它是一个可靠的、非常完整的多平台框架。

它包括对脚本(ECMAScript,Javascript 的标准化版本)的支持,如果需要,您可以从中访问您的 C++ 对象。它还提供对插件的支持。

使用这种方法,您甚至可以分三个步骤进行,

  • 首先用Javascript做一些测试,
  • 然后用 C++ 编写应用程序的基础代码,并且仍然使用脚本中的一部分(例如,如果您需要尝试不同的算法),
  • 最后用 C++ 移植所有内容,或者至少是关键部分。

另一种选择是在你的代码中嵌入一个 Python 解释器,尽管这可能需要更多的工作。

于 2009-10-03T15:33:17.863 回答
0

我不确定我是否理解您的问题,但如果您希望实现自己的脚本语言,该语言可以与您的 c++ 代码交互,您可以查看 boost::spirit。你只需要告诉它你的语法,你的脚本语言就可以按照你在 c++ 中告诉它的任何事情去做。您可以使用 c++ 运算符指定语法,使其非常简单和直观。

这就是我目前用于满足我最近需求的东西,看起来它可以很好地完成这项工作。在指定语法时,您可以完全访问您的 c++ 对象,并且您的用户可以学习一种非常简单的语言(与 CINT 相比,语言本身就是 c++)。

编译时间现在有点慢,但如果您不需要实现非常复杂的语言,它应该是可管理的(我不希望看到像 c++ 这样的编译时间)。最新版本的文档也有点缺乏(最新版本有点难找),但它相对容易使用,因此可能值得一试,具体取决于您的需要。

于 2009-10-04T03:13:06.000 回答
0

您可以使用 D 编程语言作为脚本或快速编译输出进行编码。

这是一篇详细讨论 D 及其优势的文章 “The Case for D”

于 2013-07-23T18:36:35.970 回答
0

Cling 是 c++ cling的解释器

于 2016-09-29T19:11:01.620 回答