Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this questionI am wondering if there are any statically typed, embeddable scripting languages. Python, JavaScript, etc. are great languages, but they are dynamically typed (that is, types are checked at run time). I am just wondering if anyone knows of any statically typed scripting languages that can be embedded in a C++ application?
I'd suggest you check out Angelscript. We used it on Warsow and it's pretty good. It has all the features you'd expect like classes, memory management, etc. Since it's statically typed, it can make better optimizations for you, and so the bytecode ends up faster than other scripting languages.
However, AS is not as easy to use as others like Lua, and there is only a single .zip download -- that means no .exe installers, .deb packages, .dmg or anything. Generally this is OK because you'll want to bundle AS into your project's anyways. The main difficultly compared to Lua is just that the library is a lot bigger (but has more features). Not that many people use it so it's a lot harder to find examples and help, but there are good docs so it shouldn't be all that hard to get started.
However, I would personally rather have a dynamic language for scripting. When I script an app, I want to get in there and code the crap out of it without worrying about C-style baggage. Other than AngelScript I really can't think of any others worth recommending.
Well, there's Ch - the embeddable C/C++ interpreter
How about C#? Check out Mono's implementation of a C# "scripting language" REPL (http://www.mono-project.com/CsharpRepl)
Update: If you don't know what a REPL is, it's what you see when you run Python without any arguments, or irb
Haskell is statically typed. And you can probably embed ghci or hugs (both are interpreters) into another programm. But it's not easy, afaik.
精彩评论