«Слушатель» в Лисп говорит REPL (Read Eval Print Loop). Слушатели обычно предоставляют несколько сервисов, таких как встроенный отладчик, истории команд, интерпретаторы команд и т. Д. Во многих случаях Listener запускается внутри используемого Lisp. В некоторых случаях весь код, набранный для REPL/Listener, скомпилирован перед выполнением (примеры - Clozure CL, SBCL). Если это не так, код может быть скомпилирован по требованию (см. Функции COMPILE или COMPILE-FILE в Common Lisp).
Здесь я бы предположил, что среда разработки была реализована в Allegro Common Lisp, а среда исполнения работает на Playstation. Среда разработки обеспечивает интерфейс для общения со средой выполнения и позволяет скомпилировать код и загрузить его во время выполнения. Я бы предположил, что компилятор не работает на Playstation, а внутри среды разработки. Затем Listener также предоставляет функциональные возможности для просмотра состояния запущенного приложения на Playstation, включая таблицу символов. Таким образом, один соединяет среду разработки с запущенным приложением Playstation и может взаимодействовать с ним, включая изменение данных и кода.
Поскольку типизация Lisps может загружать как исходный, так и скомпилированный код во время выполнения, код «потоковой передачи» не так уж трудный. Это просто означает, что один загружает код (возможно, в фоновом режиме), когда игрок перемещается в игре. Если код организован определенным образом, он также может быть собран из мусора, когда он больше не нужен. Например, если «комната» в игре является объектом, а комната указывает на различные функции по имени, функции могут быть автоматически загружены по требованию, если игрок находится в комнате. Если игрок покидает комнату, код может быть автоматически или полуавтоматически разгружен. В типичном Lisp сборщик мусора собирал код без ссылок. В игре, которая не может быть задачей ГК, но какого-то другого более «ручного» процесса. Это будет функциональностью среды выполнения GOAL. Сравните это с запасом JVM, который не мог мусор собирать разгруженный код (AFAIK).
Правильно, спасибо, что напомнили мне об этом! Друг, который делал собственные профилирующие проекты, рассказывал мне, как это делают отладчики. Конкретная формулировка здесь «компилятора долгосрочного прослушивания» действительно бросила меня с трека. – GrooveStomp 2010-12-01 03:02:29
Только для справки, я нашел эту ссылку: http://gamedev.stackexchange.com/questions/221/how-to-implement-hot-swappable-c-modules, которая немного подробнее рассказывает о редактировании и продолжении или системы с горячей заменой для языков программирования C и C++. – GrooveStomp 2010-12-01 03:37:24