Хороший способ понять Lisp с точки зрения хакера C состоит в том, что загрузка Lisp-файлов для создания программы аналогична не столько компиляции C, сколько связыванию.
В инструментальной цепочке на основе языка C компоновщик переносит объектные файлы в память, разрешает символы и создает исполняемый образ.
В Лиспе система Лисп загружает файлы и создает изображение (в памяти). Обычно существует какой-то механизм для сохранения всего, чтобы создать исполняемый файл.
Динамическая загрузка еще больше похожа на Lisp: способ загрузки модулей Firefox или способ загрузки модулей ядром Linux или веб-сервером Apache.
ALI Все эти технологии, основанные на обеспечении безопасности и управления версиями при динамической загрузке, будь то COM от Microsoft и его IUnknown
и QueryInterface
, или управление версиями символов в ядре Linux, или механизм совместно используемых библиотек ELF, по сути, являются "Greenspunning" функции компиляции и загрузки Lisp и привязка символов Lisp к сущностям, таким как классы, функции и переменные.
Ссылки:
Оценка и компиляция
http://www.lispworks.com/documentation/lw60/CLHS/Body/03_.htm
Конструкция системы:
http://www.lispworks.com/documentation/lw60/CLHS/Body/24_.htm