Я заметил, что некоторые люди используют термины, как если бы они были синонимами.
Например, в том же сценарии я услышал «добавьте эту функцию в образ lisp, оценивающий ее» и «вычислите эту функцию в интерпретаторе Lisp, чтобы использовать ее позже».
Однако я не уверен, что использование технически точно. Таким образом, вопрос.
«Изображение» — это файл на диске.
"Add a function to the image"
означает оценку функции и сохранение изображения, чтобы функция сразу же была доступна при следующем вызове.
«Интерпретатор» — это (обычно) неправильный уровень абстракции; следует использовать Вместо этого "REPL". Например, SBCL вообще не имеет интерпретатора (все всегда компилируется), но это не та деталь, которая имеет отношение к данной теме.
"eval this function into the Lisp interpreter to use it later"
означает оценить функцию в текущем REPL и использовать ее в том же процессе (т. е. она доступна до перезапуска Лиспа).
Это два ортогональных понятия. Начнем с обычно исчерпывающего Общий глоссарий Лиспа:
Lisp image n. a running instantiation of a Common Lisp implementation. A Lisp image is characterized by a single address space in which any object can directly refer to any another in conformance with this specification, and by a single, common, global environment.
Таким образом, ключевая идея заключается в том, что образ — это набор взаимно ссылающихся объектов Лиспа (функций и данных), которые могут быть «вызваны» или «доступны» во время исполнение программы.
Вместо этого способ выполнения программы на Common Lisp зависит от способа реализации системы. Например, это может быть выполнено путем компиляции на машинном языке или с помощью какой-либо формы интерпретации (или даже их сочетания). Таким образом, интерпретатор Лиспа — это просто особый способ реализации (а в современных системах Common Lisp существует множество различных способов реализации языка).
изображение — это копия Lisp куча, записанная на диск (или другое вторичное хранилище). Куча Лиспа — это память для хранения данных в оперативной памяти компьютера. Чтобы записать кучу Lisp в образ, работающий Lisp останавливается, а память сбрасывается на диск. Затем Lisp либо возобновляется, либо завершается.
Образ можно использовать для восстановления кучи при запуске нового Лиспа. Обычно это быстрее, чем запускать новый Lisp и затем загружать соответствующее программное обеспечение.
Интерпретатор Лиспа — это программа, которая выполняет программы на Лиспе из исходного кода. Многие реализации Лиспа не используют интерпретатор, но они выполняют скомпилированный код Лиспа, обычно код Лиспа, скомпилированный в собственный машинный код.