【发布时间】:2011-08-20 08:05:21
【问题描述】:
我正在寻找具有以下功能的语言:
- SWIG 兼容或类似。与 C++ 的兼容性应该很容易:
C、C++、AllegroCL、C# - Mono、C# - MS .NET、CFFI、鸡、CLISP、D、Go ,Guile,Java,Lua, MzScheme/Racket、Ocaml、Octave、Perl、 PHP、Python、R、Ruby、Tcl/Tk
- 静态类型:没有像 Lua 中的 myObject.CompletelyNewFieldWithUnknownSideEffects = GuessWhat()。没有像 php 中的 isinstance()。没有像 Python 中的 newVariableOfUnknownType = foo()。最好也是强类型(“Hello”+“0”而不是“Hello”+0):
C、C++、C#、D、Go、Java、Ocaml、PHP、Ruby?其他?
- 可以在运行时编译(和 exec("gcc plugin.cpp")! 不算数!)成任何 asm/中间语言。
C : libCLang, Ch; C++:中文;任何脚本语言;其他?
- 可以(离线或运行时)编译成 x86 .dll/.so 或 .cpp
C:gcc、libClang 等; C++; C#; D; Python;走; OCaml; Lua:LuaJIT;红宝石:可笑
- 最好带调试器:)
TL;DR
我想要一种静态类型的、可嵌入的脚本语言,可以针对性能进行编译。
想法?注释 ?任何形式的输入?谢谢!
编辑到目前为止的有效命题:
- Java : http://download.oracle.com/javase/6/docs/api/java/lang/Compiler.html
- C#:http://support.microsoft.com/kb/304655/en-us
- C++,由 Ch 解释,用普通编译器编译,希望与 GCC/VC 兼容
- 球拍:http://pre.racket-lang.org/docs/html/inside/overview.html#%28part._embedding%29
所以希望比我最初想象的要多得多:)谢谢大家!我会继续调查,并在我对此主题有更多经验时接受答案。
【问题讨论】:
-
Racket 附带静态类型语言 - Typed Racket,但我不知道它与 SWIG 互操作。
-
我很好奇你为什么说 "exec("gcc plugin.cpp") 不算数!"将它与 dlopen 结合使用,您就拥有了一种完整的编译代码并在编译它的进程中运行代码的方法。诚然,它对文件系统的使用有点繁重,但除此之外它应该可以正常工作。
-
它可以在我的机器上运行。在 Windows 上重新启动:不起作用。没有 Cygwin :不起作用。错误的 gcc 版本:不起作用。错误的文件权限:不起作用。路径不正确:不起作用。
-
在 Windows 上,您需要将程序与 MinGW 一起发布,就像 Git 与 MSYS 一起发布一样。由于编译器的 ABI 不同,因此您需要使用 MinGW 而不是 Visual C++ 构建 C++ 程序还有另一个问题。
标签: scripting-language compiled-language