问题
Is there a scripting language for C++ (like perl) which can be used for rapid development and use some tool which can convert into C/C++ program to get higher performance for deployment?
EDIT:
Based on some commented, let me clarify the question. I should be able to convert script into C/C++ program or binary without modifying my script.
回答1:
With a C/C++ interpreter you can use C/C++ as a scripting language
Ch: http://www.softintegration.com/
Commmercial C/C++ interpreter with a free Standard Edition. Has support for various popular libraries and windowing toolkits.
CINT: http://root.cern.ch/drupal/content/cint
Actively developed open-source (MIT license) C/C++ interpreter. Developed as part of the ROOT environment at the CERN. Used by many physicist.
ccons: http://code.google.com/p/ccons/
An interactive C console which employs LLVM and its new C frontend (clang). Under active development
UnderC: http://home.mweb.co.za/sd/sdonovan/underc.html
An open-source (LGPL) C++ interpreter. Seems to be a bit dated (2002).
Note: So far, I have tried only Ch and CINT. I have added ccons and UnderC to make the list more complete.
回答2:
You may try Lua quite often used with C++ in games industry. It has a small memory footprint and is quite mature, has a great library... just give it a try.
hm... I do not understand what you want to achieve: do you want to find a scripting language that will somehow, magically be converted into c++ source? Or what you really want is just an option to create an executable from the script? If the latter - then you may try py2Exe.
回答3:
Anybody interested in a scripting language that is (mostly) very similar to C++, may want to take a look at angelscript (ZLIB):
The AngelCode Scripting Library, or AngelScript as it is also known, is an extremely flexible cross-platform scripting library designed to allow applications to extend their functionality through external scripts. It has been designed from the beginning to be an easy to use component, both for the application programmer and the script writer.
Efforts have been made to let it call standard C functions and C++ methods with no need for proxy functions. The application simply registers the functions, objects, and methods that the scripts should be able to work with and nothing more has to be done with your code. The same functions used by the application internally can also be used by the scripting engine, which eliminates the need to duplicate functionality.
For the script writer the scripting language follows the widely known syntax of C/C++ (with minor changes), but without the need to worry about pointers and memory leaks. Contrary to most scripting languages, AngelScript uses the common C/C++ datatypes for more efficient communication with the host application.
For more info, check out: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html
回答4:
Many projects combine e.g. C++ and Python -- see for example boost.python.
I prefer R and use the Rcpp interface from R to C++.
Either case gives you your scripting language for prototyping and easy 'glue' to C++ for performance.
回答5:
pawn
pawn is a simple, typeless, 32-bit extension language with a C-like syntax. A pawn "source" program is compiled to a binary file for optimal execution speed. The pawn compiler outputs P-code (or bytecode) that subsequently runs on an abstract machine. Execution speed, stability, simplicity and a small footprint were essential design criteria for both the language and the abstract machine.
This language is very simular to c syntax, so anyone that has done any c++,c,c#,java will be able to read it and its simplyfied so none coders can read it to. This language is currently used all around, among other places scripting against halflife 1 and halflife2 servers.
回答6:
There is a new package Chaiscript which is designed for C++. It's relatively new and not completely stable yet.
回答7:
For Python, I sometimes find psyco useful. Not sure if there is any equivalent for perl though.
When choosing a language for a task, I find it more useful to choose the language most suited for the job. If the job asks for more performance than a scripting language can provide under normal conditions, it is usually better to just switch than to bend over backwards to try to make your code fast.
回答8:
GML : www.yoyogames.com
回答9:
The question could be interpreted different ways...
If you have already coded a part of your application in C++ and need to add modules or scripts, that you want to add in the C++ code eventually for improved performance, you could use Qt which is a solid, very complete multi-platform framework.
It includes support for scripts (ECMAScript, the standardized version of Javascript), from which you can access your C++ objects if you need to. It also provides support for plug-ins.
With that approach, you can even proceed in three steps,
- first do some tests in Javascript,
- then code the base of your application in C++ and still use a part in scripts (for example if you need to try different algorithms),
- and finally port everything, or at least the critical parts, in C++.
Another option is to embed a Python interpreter in your code, although that will probably require more work.
回答10:
I'm not sure I understand your question but if your looking to implement your own scripting language which could interface with your c++ code you can take a look at boost::spirit. You just have to tell it your grammar and you have your scripting language doing whatever you tell it to in c++. You specify your grammar using c++ operators making it very easy and intuitive.
That's what I currently used for my recent needs and it looks like it will do the job just fine. You have full access to your c++ objects when specifying your grammar and your user can have a very simple language to learn (compared to CINT where the language would be c++ itself).
Compile time are a little slow right now but if you don't need to implement a very complex language it should be manageable (I wouldn't like to see the compile time for something like c++). Also documentation is a little lacking for the newest version (and the most up-to-date version is a little hard to find) but it's relatively easy to use so it might be worth a check, depending on your needs.
回答11:
You could code using D programming language as both a script or a fast compiled output.
- http://dlang.org/
- http://gdcproject.org/
here is an article that talks in detail about D and its advantages "The Case for D"
回答12:
Cling is an interpreter for c++ cling
来源:https://stackoverflow.com/questions/1513920/scripting-language-for-c-c