C/C++的脚本语言?

C/C++的脚本语言?

问题描述:

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

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

+0

@rjoshi的解释,也许你需要澄清。我认为@Mike的反义词是你想在C++应用程序中托管一种脚本语言。我已经使用VBScript引擎完成了Windows,所以也许这是我的经验,因为我的偏见。 – kenny 2009-10-03 14:59:37

+0

我想在脚本语言中为开发做一个快速原型,并且应该能够部署高性能,所以我想知道一些可以将脚本转换为C/C++程序进行部署。 – rjoshi 2009-10-03 15:18:51

+0

@rjoshi:请不要评论你自己的问题。请更新您的问题。评论你自己的问题是愚蠢的 - 你拥有这个问题。你可以修复它以澄清事情。 – 2009-10-03 15:21:32

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


注:到目前为止,我已经试过只CINT。我已添加cconsUnderC以使列表更加完整。

+0

这些链接非常非常有趣,感谢与我们分享!我认为实际上并没有创建C++脚本的可能:) – MaciekTalaska 2009-10-03 15:50:13

+0

还有一个:** SCC **:http://volnitsky.com/project/scc/ – 2012-07-24 08:25:40

+0

什么是“C/C++”?这些解释器是否支持C或C++或两者? – 2013-07-23 18:40:16

许多项目将例如C++和Python--例如参见 boost.python

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

无论是哪种情况,您都可以使用脚本语言进行原型设计,并且可以方便地向C++“粘合”以提高性能。

GML:www.yoyogames.com

你可能会尝试Lua经常与游戏行业的C++一起使用。它有一个小的内存足迹,已经相当成熟,有一个很棒的图书馆......只是试试看。

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

+0

“小脚印”是一个相对术语...... Lau需要的内存超过了我希望使用它的一些系统。 – NoMoreZealots 2010-03-30 11:15:12

+0

对于每一个内存字节都很有价值的嵌入式开发(和类似的),使用自带虚拟机的任何语言都可能不是最好的解决方案(我认为)。您还没有指定要使用脚本语言,在什么样的平台上,有什么限制......这很难猜出;) 如果您想比较各种语言的性能:http ://shootout.alioth.debian.org/ – MaciekTalaska 2010-04-04 05:40:38

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

在为任务选择语言时,我觉得选择最适合这项工作的语言会更有用。如果作业要求的性能比脚本语言在正常情况下可以提供的性能更高,那么通常切换要比向后弯曲以尝试使代码快速更好。

+0

我同意你的评论,但问题在于你正在做快速原型,并且直到产品成功并且性能成为瓶颈时才会知道性能要求。 – rjoshi 2009-10-03 15:16:00

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

如果你已经用C++编写你的应用程序的一部分,需要添加的模块或脚本,要在C++代码添加最终为改善性能,您可以使用Qt这是一个稳固,非常完整的多平台框架。

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

有了这种方法,你甚至可以继续在三个步骤,

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

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

pawn

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

这种语言与c语法非常相似,所以任何已经完成C++,c,c#,java的任何人都可以读取它,并且它的简单性让所有编码者都无法读取它。这种语言目前用于所有地方,其他地方使用halflife 1halflife2服务器。

+0

/我喜欢我的棋子,AMX家伙用这种语言做了一些INSANE的事情。 – 2009-12-30 14:11:47

我不确定我是否理解你的问题,但是如果你希望实现自己的脚本语言,它可以与你的C++代码接口,你可以看看boost :: spirit。你只需要告诉它你的语法,并且你的脚本语言可以做你在C++中告诉它的任何东西。您可以使用C++运算符指定您的语法,使其非常简单直观。

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

编译时间现在有点慢,但如果你不需要实现一个非常复杂的语言,它应该是可管理的(我不希望看到类似C++的编译时间)。此外,文档对于最新版本有点缺乏(最新的版本有点难以找到),但使用相对简单,所以根据您的需要可能值得一试。

有一个新的包Chaiscript是专为C++。这是相对较新的,并不完全稳定。

任何有兴趣的脚本语言,(主要是)非常相似,C++,可能想看看angelscript(ZLIB):

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

已经努力让它调用标准C函数和C++方法,而不需要代理函数。应用程序只需注册脚本应该能够使用的功能,对象和方法,而不必使用代码进行更多操作。脚本引擎也可以使用应用程序在内部使用的相同功能,这样就不需要复制功能。

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

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

+0

很酷的东西! :-D – ASBai 2014-01-04 19:27:27

你可以使用代码编程d语言既是一个脚本或快速编译的输出。

这里是详细谈论d和它的优点 "The Case for D"

保鲜的文章是针对C++ cling