C / C ++的脚本语言?

时间:2009-10-03 14:44:56

标签: c++ c scripting rad

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

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

12 个答案:

答案 0 :(得分:25)

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


注意:到目前为止,我只尝试了 Ch CINT 。我添加了 ccons UnderC 以使列表更加完整。

答案 1 :(得分:10)

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

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

答案 2 :(得分:4)

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

  

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

     

已经努力让它调用标准C函数和C ++方法而不需要代理函数。应用程序只是注册脚本应该能够使用的函数,对象和方法,并且不再需要对代码进行任何操作。脚本引擎也可以使用内部应用程序使用的相同功能,从而无需复制功能。

     

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

有关详细信息,请查看:http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

答案 3 :(得分:2)

许多项目结合在一起C ++和Python - 例如,参见 boost.python

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

这两种情况都为您提供了用于原型设计的脚本语言,并且易于“粘合”C ++以提高性能。

答案 4 :(得分:2)

pawn

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

这种语言与c语法非常相似,所以任何已经完成任何c ++,c,c#,java的人都能够读取它并简化它,因此没有编码器可以读取它。此语言目前在各地使用,其中包括针对halflife 1halflife2服务器的脚本。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

在为任务选择语言时,我发现选择最适合该工作的语言会更有用。如果作业要求的性能高于脚本语言在正常条件下可以提供的性能,通常最好只是切换而不是向后弯曲以尝试使代码快速。

答案 7 :(得分:0)

GML:www.yoyogames.com

答案 8 :(得分:0)

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

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

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

通过这种方法,您甚至可以分三步进行,

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

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

答案 9 :(得分:0)

我不确定我理解你的问题但是如果你想要实现自己的脚本语言可以与你的c ++代码接口,你可以看一下boost :: spirit。你只需要告诉它你的语法,你就可以使用脚本语言来完成你在c ++中所做的任何事情。您可以使用c ++运算符指定语法,使其非常简单直观。

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

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

答案 10 :(得分:0)

您可以使用D编程语言编写脚本或快速编译输出。

这篇文章详细讲述了D及其优点 "The Case for D"

答案 11 :(得分:0)

Cling是c ++ cling

的解释器