gpt4 book ai didi

lisp - 自托管的概念

转载 作者:太空宇宙 更新时间:2023-11-03 18:47:23 25 4
gpt4 key购买 nike

所以我正在开发一种小型编程语言,并试图掌握“自托管”的概念。

维基百科指出:

The first self-hosting compiler (excluding assemblers) was written for Lisp by Hart and Levin at MIT in 1962. They wrote a Lisp compiler in Lisp, testing it inside an existing Lisp interpreter. Once they had improved the compiler to the point where it could compile its own source code, it was self-hosting.

据此,我了解到有人拥有 Lisp 解释器(假设是 Python)。
然后 Python 程序读取 Lisp 程序,而 Lisp 程序又可以读取 Lisp 程序。

通过术语“自托管”,这当然不能意味着 Python 程序可以停止使用,因为删除它会删除运行读取其他 Lisp 程序的 Lisp 程序的能力!

那么,通过这种方式,程序如何能够直接在操作系统上托管自己?也许我只是没有正确理解它。

最佳答案

在这种情况下,术语自托管适用于他们编写的 Lisp 编译器,而不是解释器。

Python Lisp 解释器(如您的示例)会将 Lisp 源代码作为输入并直接执行。

Lisp 编译器(用 lisp 编写)可以将任何 Lisp 源代码作为输入并生成本地机器二进制文件 [1] 作为输出(然后可以在没有解释器的情况下运行)。

有了这两个部分,消除 Python 就变得可行了。流程如下:

python.exe lispinterpret.py lispcompiler.lisp -i lispcompiler.lisp -o lispcompiler.exe

我们要求 Python 从源代码 (lispcompiler.lisp) 解释一个 lisp 程序,并将 lispcompiler.lisp 本身作为输入传递。 lispcompiler.lisp 然后输出 lispcompiler.exe 作为输出,这是一个本地机器二进制文件(并且不依赖于 Python)。

下次要编译编译器,命令是:

lispcompiler.exe -i lispcompiler.lisp -o lispcompiler2.exe

而且您将拥有一个不使用 Python 的新编译器。

[1] 或者您可以生成汇编代码,将其传递给汇编程序。

关于lisp - 自托管的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com