В чем разница и связь между интерпретатором Лиспа и образом Лиспа? Можно ли их использовать как синонимы?

Я заметил, что некоторые люди используют термины, как если бы они были синонимами.

Например, в том же сценарии я услышал «добавьте эту функцию в образ lisp, оценивающий ее» и «вычислите эту функцию в интерпретаторе Lisp, чтобы использовать ее позже».

Однако я не уверен, что использование технически точно. Таким образом, вопрос.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
61
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Изображение

«Изображение» — это файл на диске.

"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 и затем загружать соответствующее программное обеспечение.

Интерпретатор Лиспа — это программа, которая выполняет программы на Лиспе из исходного кода. Многие реализации Лиспа не используют интерпретатор, но они выполняют скомпилированный код Лиспа, обычно код Лиспа, скомпилированный в собственный машинный код.

Другие вопросы по теме