是否有任何可扩展的解释型编程语言是用标准的,独立于平台的C或C++编写的?
我希望能够简单地将所有源代码放在一个目录中,使用任何符合标准的C或C++编译器编译源代码,并生成一个可执行文件,以指定的脚本语言读取和解释脚本文件.
似乎许多编程语言"用C语言编写"通常包含许多依赖于它们所在平台的特性,因此,需要一些配置程序来运行基于您的目标系统(例如Autoconf),这会使事情复杂化并限制交叉平台兼容性.
问题原因:
我有兴趣学习编程语言设计.在完成了涉及yacc,lex和llvm的教程后,我玩了一些玩具编程语言.然而,最近我对研究用可移植C/C++编写的编程语言感兴趣,因此,我可以在任何支持标准C或C++编译器(甚至可能在我的ipad上)的机器上研究程序和代码,有一个相当统一的经验.
由于这仅用于教育目的,脚本语言不需要支持像C这样的超低级功能,也不需要像Java一样使用GUI(我不认为你可以编写任何类型的GUI仅限于标准C无论如何/ C++或任何复杂的io.但是,我希望语言足够完整,以便在语言中编写一些有用的程序是可行的(例如,应该可以使用C/C++扩展语言,以便您可以像tty上的shell一样使用它) .
谢谢.
编辑:
@AndréCaron如果至少语言的核心是100%独立于平台,我更喜欢它.如果该语言包含一个依赖于其他库以使其"更有用"的大型标准库,那就没关系了,但是,我希望能够剥离标准库并仅使用该语言的核心(可能使用自定义)手写的图书馆)如果我想.
也许嵌入Lua?
实际上核心Lua本身可能更好.乍一看,虽然eLua声称它在许多不同的系统上运行意味着它具有高度可移植性,但实际上它需要核心Lua并增加了一堆硬件驱动程序,这显然不那么便携.
Ocaml将是另一个很好的选择.它声称"字节编码系统目前在符合ANSI标准的C编译器的任何符合POSIX标准的操作系统上运行" 而且Caml Light特别适合学习."运行时系统和字节码解释器是用标准C编写的,因此Caml Light很容易移植到几乎任何32位或64位平台上."
Lua真的是你最好的选择.核心Lua解释器尽可能简约.发行版包含一个makefile,但它的内容与它一样简单.甚至还有说明解释了构建核心语言所需的文件,哪些是Lua标准库,哪些是命令行解释器.
核心语言本身不会触及任何特定于平台的API或标头.标准库可以,但只能以最小的方式.而你不具备建立标准库,如果你不喜欢它.
您可以使用一些#defines来配置构建,但这主要用于DLL构建等.
注意:autotools和其他特定于平台的构建配置实用程序的目的是允许库在平台中立的界面中有效地包装特定于平台的内容.在具有纯平台中立的C或C++标准库的大多数平台上,您无法做很多事情.您甚至无法访问目录树并搜索文件,更不用说打开窗口这些非常有用的东西了.对于简单的stdin/stdout应用程序,这可能就足够了.但对于绝大多数情况,事实并非如此.
我的建议是你习惯于为特定平台配置构建.除非您的域名是科学应用程序(在某些情况下,甚至不是那样),否则您不会从平台无关的编程中获得太多.您将不得不学习使用这些类型的库.
对于图书馆来说,Lua是一个异常值.大多数库都不是文件列表,您只需将其推入目录并进行编译即可.你越早弄清楚如何使用图书馆使用的工具,你就会越好.