Language agnostic 是否有任何静态类型的、可嵌入的脚本语言?

Language agnostic 是否有任何静态类型的、可嵌入的脚本语言?,language-agnostic,embedded-language,static-typing,Language Agnostic,Embedded Language,Static Typing,我想知道是否有任何静态类型的、可嵌入的脚本语言。Python、JavaScript等都是很棒的语言,但它们是动态类型化的(也就是说,在运行时检查类型)。我想知道有没有人知道任何静态类型的脚本语言都可以嵌入到C++应用程序中? 嗯,有——嵌入式C/C++解释器< /P> < P> C如何?查看Mono对C#“脚本语言”REPL()的实现 更新:如果您不知道REPL是什么,那么它就是您在不带任何参数的情况下运行Python时看到的,或者irb我建议您检查一下。我们用过了,非常好。它具有您期望的所有特

我想知道是否有任何静态类型的、可嵌入的脚本语言。Python、JavaScript等都是很棒的语言,但它们是动态类型化的(也就是说,在运行时检查类型)。我想知道有没有人知道任何静态类型的脚本语言都可以嵌入到C++应用程序中?

嗯,有——嵌入式C/C++解释器< /P> < P> C如何?查看Mono对C#“脚本语言”REPL()的实现

更新:如果您不知道REPL是什么,那么它就是您在不带任何参数的情况下运行Python时看到的,或者irb

我建议您检查一下。我们用过了,非常好。它具有您期望的所有特性,如类、内存管理等。由于它是静态类型的,因此它可以为您进行更好的优化,因此字节码比其他脚本语言更快

但是,AS不像Lua那样容易使用,而且只有一个.zip下载——这意味着没有.exe安装程序、.deb包、.dmg或任何东西。通常这是可以的,因为您无论如何都希望将AS捆绑到您的项目中。与Lua相比,主要的困难在于库要大得多(但有更多的特性)。并不是很多人使用它,所以很难找到示例和帮助,但是有好的文档,所以开始使用它应该不那么困难


然而,我个人更希望有一种用于脚本编写的动态语言。当我编写一个应用程序的脚本时,我想进入其中并将其编码出来,而不用担心C风格的行李。除了AngelScript,我真的想不出还有什么值得推荐的了。

Haskell是静态类型的。您可能可以将ghci或hugs(两者都是解释器)嵌入到另一个程序中。但这并不容易,好吧。

python是如何松散类型化的?在Python中,许多操作都会引发一个类型错误,这将导致C++中的未定义行为。其中大多数(Python、Ruby、……)可以根据定义(@运行时即被认为是强类型的)。您可能需要扩展特定的强类型定义。Python肯定比C强类型。询问者将“显式类型”(即,即使编译器/解释器可以唯一地推断它,也必须指定类型)与“强类型”混淆,可能吧。如果您的意思是希望在编译或加载时而不是在执行时发现键入错误,那么您应该说“静态类型”,而大多数脚本语言都是“动态类型”。这对我来说似乎是一个真正的问题。第一个版本只是措词不当。这些问题并没有涉及嵌入式脚本语言,嵌入式脚本语言是一种几乎完全是动态语言的特殊领域。你能在Ch上再扩展一点吗?是跨站台的吗?它是根据GPL发布的还是其他许可证?文档是最新的吗?在什么情况下C算是“静态类型的”?@Jacques:在这个世界上,AFAIK。C中的类型与变量有关,而与值无关,并且是在编译时确定的,这使得它是静态类型的。对不起,我在那些“对编译器撒谎”(也称为casting)不被认为是特性的语言中工作太久了。所以,是的,严格来说C可以被认为是类型化的。但我所认识的大多数人都经历过类型非常重要的语言,他们不再认为C是类型化的。我很久以前就开始认为C是“可移植汇编程序”……在我的书中,C/C++不符合“脚本”语言的条件。诚然,我的书中没有关于“脚本语言”的正式定义,但我认为C/C++与之相去甚远。我曾尝试使用Haskell替代Python,但经过几次尝试后,很明显,在Haskell中实现任何东西所需的时间是在Python中的5倍。我试图将这种差异归因于我对Haskell的知识贫乏,但在重新考虑之后,我从未在使用任何新语言时表现得如此糟糕,因此我坚持使用Python。另外,延迟评估与IO结合会产生可怕的不可预测的错误。这就像在顺序重要但事情发生无序的情况下掌握多线程一样,在Haskell的情况下,你没有强加顺序的手段。Haskell绝对有强加的顺序。例如,IO操作的顺序就是它们发生的顺序。“不用担心C风格的包袱”:事实上,Angelscript对我来说似乎太重了,无法作为“脚本语言”使用。