我正在研究编写玩具编程语言的爱好,部分原因是对其他语言的轻微烦恼,部分是为了让我能够理解它是什么样的,但大多只是为了愚弄。
关于它变得非常有用的可能性,我不希望它依赖于另一种编程语言的运行时来运行它编写的程序。也就是说,我希望解释器/编译器本身是一个本地编译到目标操作系统中的程序(语言本身可以解释/提供运行时)。
除了C之外还有其他选择吗?有哪些优点/缺点或使用每个?
澄清1:我不打算低级写入内核,文件系统,设备驱动程序,引导加载程序。但是,我希望能够管理自己的记忆。
澄清2:由于术语错误/误解,并且因为我习惯于在各种操作系统上运行的C运行时,我说C没有运行时/和/或者我对运行时不感兴趣。更好的方式来说明我真正想要的是我的程序本地编译到目标(桌面)操作系统,而无需从引导语言安装其他软件。
2.1:如果我在python中编写编译器/解释器,我不希望发出的可执行文件依赖于python程序。
2.2:如果我使用编译步骤,例如,使用perl编译程序,我不希望发出的可执行文件依赖于libperl.dll /。
2.3:运行时的异常是C,因为C运行时通常安装在几乎所有的桌面操作系统上,因为许多核心操作系统工具依赖它。
答案 0 :(得分:5)
您可以使用任何具有现有编译器的语言,该编译器可以发送没有依赖项的本机代码。 C和C ++是非常好的赌注,因为它们的运行时几乎可以在任何地方使用(在C中更是如此)。
您的语言构建中可能值得尝试的一种方法是:使编译器输出C(或C ++)。然后,您可以使用围绕这些语言及其运行时(链接器,对象转储程序,调试程序等)的所有现有生态系统,甚至计划与现有代码的集成。
这些工具既适用于您的语言用户,也适用于您在尝试使用该玩具语言时自己。
一旦你达到你的语言“自托管”的程度(即你的编译器是用你自己的语言编写的),你就可以开始考虑取消整个C部分并编写一个本地语言代码编译器及其运行时。
祝你好运: - )另外请务必查看LLVM。这是一个“编译器基础设施”。这可能是最近开始实施新语言的最佳场所。文档非常好,tutorials包括构建玩具语言。
答案 1 :(得分:2)
C有一个运行时... C ++的最小运行时间比C稍微大一些.Ada的一些实现有pragma允许检查某些强制使用运行时的功能没有被使用(我想知道是否他们之后没有标准化,我已经停止在90年代后期遵循Ada标准化了,这使得它可能具有与C相同的最小运行时间。
答案 2 :(得分:1)
PyPy使用RPython来实现python语言。这对你有用吗?
答案 3 :(得分:0)
我认为Python最适合你。 Python是一种编程语言,您可以更快地工作并更有效地集成您的系统。您可以学习使用Python,几乎可以立即获得生产力并降低维护成本。
Python最近已被移植到Java和.NET虚拟机上。
最重要的是,Python是免费的。
答案 4 :(得分:0)
答案 5 :(得分:-1)