Барабаш К.А., Мангушева А.Р., Обухова М.Ю., Григорян К.А. —
Разработка интерпретатора LISP
// Программные системы и вычислительные методы. – 2022. – № 4.
– С. 39 - 53.
DOI: 10.7256/2454-0714.2022.4.39289
URL: https://e-notabene.ru/itmag/article_39289.html
Читать статью
Аннотация: В статье освещаются аспекты разработки интерпретатора LISP. Несмотря на то, что язык LISP это не самый популярный в настоящие дни (в индексе TIOBE за ноябрь 2022 года данный язык стоит на 30-м месте), проделанная авторами работа является актуальной. Многие популярные на сегодня идеи и программные технологии были впервые разработаны с помощью LISP-машин. Разработанный интерпретатор позволяет программисту избегать определения элементов программы (функции, классы и др.) без необходимости. Также результат разработки позволяет запустить любую сущность LISP, которая возвращает осмысленный результат. Современные интерпретаторы LISP не имеют возможности перегрузки функций из-за чего пользователям приходится заучивать огромное количество имен функций, действия которых однотипны. Это значительно усложняет процесс обучения, так как приходится искать в документации названия примитивных функций. Из-за этого большая часть потенциальных пользователей бросает обучение, возвращаясь к современным языкам программирования, так и не познав возможности языка LISP. Статья раскрывает создание интерпретатора LISP, способного по простоте взаимодействия с объектами конкурировать с современными языками программирования. Также в статье предлагается подход, обеспечивающий механизм сборки мусора посредством подсчета ссылок на объекты.
Abstract: The article highlights aspects of the development of the LISP interpreter. Despite the fact that LISP is not the most popular language these days (in the TIOBE index for November 2022, this language is in 30th place), the work done by the authors is relevant. Many popular ideas and software technologies today were first developed using LISP machines. The developed interpreter allows the programmer to avoid defining program elements (functions, classes, etc.) unnecessarily. Also, the development result allows you to run any LISP entity that returns a meaningful result. Modern LISP interpreters do not have the ability to overload functions, which is why users have to memorize a huge number of function names whose actions are of the same type. This greatly complicates the learning process, since you have to look for the names of primitive functions in the documentation. Because of this, most of the potential users drop out of training, returning to modern programming languages, without knowing the possibilities of the LISP language. The article reveals the creation of a LISP interpreter capable of competing with modern programming languages in terms of ease of interaction with objects. The article also suggests an approach that provides a garbage collection mechanism by counting references to objects.