Узнайте все об IT
вместе с Павлом Волей
Кнопка закрыть топ-бар
ГлавнаяБлогЯзык программирования Lisp: в чем его уникальность
Базы данных Access
3 318
Время чтения: 15 минут

Язык программирования Lisp: в чем его уникальность

Сохранить статью:
Сохранить статью:
В статье рассказывается:
  1. История создания языка программирования Lisp
  2. Ключевые особенности языка программирования Lisp
  3. Алфавит и атомы языка программирования Lisp
  4. Настройка локальной среды языка программирования Lisp

Язык программирования Lisp относится к функциональной парадигме. Он является очень необычным вариантом с уникальными возможностями. Так, например, некоторые его называют программируемым языком программирования, так как необходимая библиотека может быть взята из любого другого языка.

Ранее Lisp использовался как родной, основной язык ИИ. Сейчас он таковым не является, но до сих пор успешно применяется в других сферах. Интересный факт: Lisp считается лучшим хакерским языком. Как он появился, где его использовали ранее и зачем – сейчас, вы узнаете из нашего материала.

История создания языка программирования Lisp

Lisp представляет собой один из самых старых языков программирования. Кроме того, он является первым функциональным, получившим большую популярность. Создание его ядра приходится на 60-е годы предыдущего столетия – разработчиком стал ученый Дж. Маккарти.

Основополагающая структура данных языка Lisp – список, откуда и пошло наименование языка. Широкую известность Лисп получил в 70-80-е годы ХХ века. В то время он использовался в качестве базового языка для научной деятельности в сфере искусственного интеллекта.

История создания языка программирования Lisp
История создания языка программирования Lisp

С учетом того, что сфера ИИ всегда предполагала большие траты ресурсов, а мощности компьютеров 80-х годов, очевидно, уступали современным, создатели Lisp пытались извлечь из языка максимум эффективности. Со временем Lisp приобрел небывалую ауру, а произошло это по двум причинам:

  • В середине 70-х годов прошлого века исследователи в области ИИ ощутили недостаток мощности собственных компьютеров, и инженер Питер Дойч из MIT озвучил идею создания компьютера с упором на программы Лисп. В 80-е фирма Symbolics произвела ряд Lisp-машин, которые были специально заточены под этот язык. Таким образом Лисп стал связан с мощными программами для ИИ. В то же время создатели Lisp-машин и исследовательские отделы в области искусственного интеллекта стали предлагать свои варианты языка. Таким образом у Лисп образовалось много разновидностей (диалектов), что означало разделение языка. Дабы это предотвратить, в 1981 году несколько хакеров положили начало работе по созданию единого языка — Common Lisp, который включал в себя все лучшие стороны имеющихся версий.
  • В 1985 году ученые MIT Харольд Абельсон и Джеральд Сассман выпустили книгу «Структура и интерпретация компьютерных программ», которая в хакерском сообществе более известна как Wizard Book («Книга волшебника»). С помощью этого учебника студентам MIT больше 20 лет преподавали программирование на Scheme, разновидности языка Lisp. Только за счет него Лисп стали рассматривать в качестве языка, с помощью которого возможно постичь сложные философские теории программирования.
Спад известности произошел в конце 80-х. В те времена исследовательская деятельность в сфере ИИ сместилась на периферию, а бюджетные и мощные компьютеры заполонили рынок и заменили Lisp-машины. Возрождение известности наступило после публикации эссе Пола Грэма, где он нарек его «лучшим языком для стартапов». В 1995 году автор со своим другом создал организацию Viaweb и выпустил одноимённый конструктор онлайн-магазинов, который был написан на Лиспе.

«Нам понравилась идея использования Lisp, так как это, на наш взгляд, могло сделать продукт более функциональным относительно конкурирующих компаний и позволило бы добавлять фичи, которые им недоступны. За счет того, что Lisp является языком высокого уровня, мы получим возможность обойтись без большой команды разработчиков и сберечь финансовые ресурсы» – такое заявление сделал Пол Грэм, сооснователь Y Combinator, создатель Hacker News.

Для некоторых людей слова Грэма оказались убедительными, но их было очень мало. Если верить статистике GitHub, Emacs Lisp занимает 25-е, а Common Lisp — 49-е место по степени распространенности среди пользователей веб-сайтов. Между тем самые выдающиеся его стороны проявились в других языках: например, Python позаимствовал генератор списков, а C# унаследовал язык интегрированных запросов LINQ.

Lisp — второй после Fortran из «оставшихся в живых» устаревших языков программирования. В индексе TIOBE за декабрь 2021 года Лисп стоит на 31 месте, расположившись выше Lua, Scala и TypeScript.

Даже при том условии, что Lisp лишился лидирующей позиции в списке языков программирования задач ИИ, он смог остаться пригодным для изучения функционального программирования. Доступность и прозрачность синтаксиса совмещаются в нём с мощностью языковых средств и естественностью его расширения. Одним из ярких свойств Лиспа является общая синтаксическая форма написания программ и данных, благодаря чему можно обрабатывать структуры данных как программы и совершенствовать программы как данные.

Ключевые особенности языка программирования Lisp

Представим основные отличия Lisp от стандартных языков программирования:

  • Формы предоставления программ и обрабатываемых данных в Лисп тождественны и представляют собой списочные структуры. За счет этого обнаруживается ряд интересных возможностей – к примеру, взаимодействие одной программы с другими. Кроме того, можно выделить универсальность, расширяемость и масштабируемость самого синтаксиса. Ядро LISP, прописанное на Лисп, располагается в рамках 200 строк, а интерпретатор ПРОЛОГа занимает чуть больше 50 строк.
  • Реализация списков дарит возможность не тратить время на управление памятью, а сохранение и очищение ячеек осуществляется динамически. За счет этого сборщик мусора появился уже в первых вариациях языка. Lisp не имеет структуры строго типизированного языка программирования. Сегодня это не поражает воображение, но необходимо заметить, что на стадии начального развития данная концепция была антагонистом типизированному Фортрану.
  • Благодаря префиксной нотации появляется больше возможностей для синтаксического разбора выражений. Более того, можно использовать общий списочный контекст и для программ, и для данных.
  • Использование множества скобок, за счет чего наряду со стандартной расшифровкой «LISP» как «LISt Processing» имеет место и «Lots of Idiotic Silly Parentheses».
  • Немаловажным фактом является существование Lisp-машин – вычислительных машин, устройство которых было адаптировано для результативного выполнения программ на языке Лисп. Эти аппараты не очень популярны – их численность во всем мире не превышает 10 000. Lisp-машины исследовательского центра Xerox стали родоначальниками некоторых общеизвестных идей и технологий: сборка мусора, лазерная печать, многооконные системы и др.

Алфавит и атомы языка программирования Lisp

Языки программирования создаются для кодирования команд, выполняющихся компьютером. Благодаря этому устройство может обрабатывать текст, воспроизводить графику и звук, создавать расчеты и многое другое. При этом процессор компьютера обычно не может выполнять сложные команды. По этой причине их нужно трансформировать под процессор.

Но есть и другой метод, для которого программу не нужно менять под команды процессора, вместо этого он поступает на вход программы-исполнителя (то есть интерпретируется). Такой принцип действия как раз и присущ Лиспу.

Алфавит и атомы языка программирования Lisp
Алфавит и атомы языка программирования Lisp

Для удобства назовем Lisp-машиной программу, которая выполняет команды Лиспа. Изначально пользователь мог взаимодействовать с этим языком программирования за счет запросов и ответов. Но сейчас имеется два варианта реализации Лисп-машины: диалоговый и пакетный.

Второй способ взаимодействия подразумевает старт Lisp-машины, считывание команд из определенного источника (скажем, из файла), выполнение данной команды и завершение Лисп-машины. Чтобы овладеть языком Lisp, нужно помнить, что программа в этом случае будет состоять из команд, которые выполняются Лисп-машиной.

ТОП-30 IT-профессий
2022 года с доходом
от 200 000 ₽
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Александр Сагун
Александр Сагун
Исполнительный
директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

pdf иконка

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

pdf 3,7mb
doc 1,7mb
Уже скачали 12498 pdf иконка

Алфавит языка Lisp

Алфавит языка Lisp состоит из заглавных и строчных латинских букв, цифр и всех клавиатурных знаков. В алфавит не включены литеры национальных языков, но это не является строгим правилом. Например, в алфавите HomeLisp есть все русские строчные и заглавные буквы.

Во множестве Lisp-алфавита наличествует 6 символов, которые применяются нестандартным способом – пробел, точка, открывающая и закрывающая круглые скобки, апостроф и двойные кавычки. Прочие символы используются обычным образом.

Атомы

Конструкции языка Lisp формируются из его алфавитных символов. Самой простой конструкцией выступает атом – произвольная строка алфавитных символов, за исключением отдельно стоящих:

  • точки;
  • левой или правой скобки или групп таких символов (кроме открывающей и закрывающей скобки, вписанных подряд);
  • пробела или их группы;
  • апострофа или знака двойных кавычек.

Те строки символов, которые изображают атомы, не могут включать в себя пробелы и круглые скобки, но могут содержать точку. Помимо всего прочего, существует предельная граница применения знака двойных кавычек внутри строки, изображающей атом.

В числе атомов Лиспа можно выделить 4 особые группы:

  • Десятичные числа. Такие атомы являются корректным изображением такой единицы счета (целой или с дробной частью; в качестве их разделителя применяется точка).
  • Шестнадцатеричные (битовые) константы. Представляются атомами вида: &Hnnnn, где nnnn – от 1 до 8 символов из набора: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f.
  • Строки. Данные атомы отличаются тем, что их первым и последним символом выступают двойные кавычки. В промежутках между этими знаками могут быть расположены любые алфавитные символы (включая пробелы и скобки).
  • Атомы Nil и T. Такие атомы (в особенности Nil) применяются для выполнения самых разных задач.
Только до 7.07
Как за 3 часа
разбираться в IT
лучше, чем 90%
новичков и выйти на
доход в 200 000 ₽?
Приглашаем вас на бесплатный онлайн-интенсив «Путь в IT»! За несколько часов эксперты GeekBrains разберутся, как устроена сфера информационных технологий, как в нее попасть и развиваться.
Александр Волчек CEO GeekBrains

Интенсив «Путь в IT» поможет:

  • За 3 часа разбираться в IT лучше, чем 90% новичков.
  • Понять, что действительно ждет IT-индустрию в ближайшие 10 лет.
  • Узнать как по шагам c нуля выйти на доход в 200 000 ₽ в IT.
При регистрации вы получите в подарок:
pdf иконка

«Колесо компетенций»

Тест, в котором вы оцениваете свои качества и узнаете, какая профессия в IT подходит именно вам

doc иконка

«Критические ошибки, которые могут разрушить карьеру»

Собрали 7 типичных ошибок, четвертую должен знать каждый!

pdf иконка

Тест "Есть ли у вас синдром самозванца?"

Мини-тест из 11 вопросов поможет вам увидеть своего внутреннего критика

pdf иконка

Гайд по профессиям в IT

5 профессий с данными о навыках и средней заработной плате

Хотите сделать первый шаг и погрузиться в мир информационных технологий? Регистрируйтесь и смотрите интенсив:
Только до 7 июля
Осталось 17 мест

В этой таблице вы можете видеть правила построения атомов Lisp:

Строка Расшифровка
Abc Обычный атом.
1Abc Тоже атом, хоть и начинается с цифры.
Q$W Также является атомом, хоть и включает в свое название знак доллара.
123 Атом – число.
-12.3 Еще один атом – число.
6.02E+23 Тоже один атом – число.
A.A Атом.
A A Это не является атомом в связи с наличием пробела в имени.
A( Не является атомом из-за наличия скобки в имени.
A’B Также не является атомом, но уже по причине наличия апострофа.
() Атом.
«Проба пера» Атом-строка. В рамках строки можно использовать пробелы.
«Проба «пера»» Не является атомом из-за отсутствия удвоения кавычек, которые стоят внутри строки (см. пример ниже).
«Проба «»пера»»» Атом.
«Проба ‘пера'» Еще один вариант. Апостроф внутри строки – обычный символ.
&HFFFFFF Атом – битовая шкала.
&H1122334455667788 Обычный атом (похож на битовую шкалу, но в нем слишком много цифр).

Настройка локальной среды языка программирования Lisp

Для полноценной настройки своей среды языка Lisp необходимо использовать две разновидности ПО – текстовый редактор и исполнитель Лисп:

Текстовый редактор

Он нужен для ввода программы. В качестве редактора подойдет Блокнот Windows, команда редактирования – ОС, Brief, Epsilon, EMACS и vim или vi.

Настройка локальной среды языка программирования Lisp
Настройка локальной среды языка программирования Lisp

Наименование и версия редактора может быть разной, в зависимости от конкретной ОС. К примеру, «Блокнот» – редактор в Windows, а vim или vi могут применяться как в Windows, так и в Linux или UNIX.

Те файлы, которые вы будете создавать в редакторе, именуются исходными и включают в себя соответствующий код программы. Исходные файлы для Лиспа, как правило, имеют расширение .lisp.

Исполнитель Лиспа

Исходный код, содержащийся в таком файле, может быть прочитан вашей программой. Этот код необходимо выполнить – тогда он трансформируется в машинный язык, удобный процессору. Такой язык программирования будет выступать как исполнитель исходного кода в конечной выполняемой программе.

CLisp представляет собой многоархитектурный компилятор GNU Common Lisp, который применяется для настройки Лисп в Windows. Версия для этой ОС эмулирует среду Unix, с помощью MingW под Windows. Инсталлятор осуществит это действие и сам включит CLisp в переменную PATH Windows.

В заключение следует отметить, что функциональный язык программирования Lisp является очень обширной темой для обсуждения. Это отнюдь не мертвый язык, даже с учетом давности его происхождения. При этом нельзя с уверенностью определить, какой язык является более удобным в современных реалиях – Лисп или Фортран. Однако Lisp гораздо более применим, чем тот же Кобол.

Лисп не очень выделяется среди стандартных языков (скажем, C++, Java или PHP). Но стоит понимать, что нынешний Lisp не имеет такого распространения, как изначальная версия Джона Маккарти. При этом в использовании он все равно гораздо удобнее, чем, например, Scheme. Плюс ко всему, сложности в работе с Lisp устраняются по мере привыкания к этому языку.

Оцените статью
Рейтинг: 5
( голосов 1 )
Поделиться статьей
Добавить комментарий

  1. Аноним

    В статье нет упоминания о том, что для среды AutoCAD, широко применявшейся в промышленности, архитектуре, и пр. в конце 20 — начале 21 вв., основными языками программирования являются AutoLisp и Visual Lisp.

    Ответить
Забрать
гарантированный
подарок
Скачать файл

Получите бесплатно подборку файлов от GeekBrains:

Осталось 17 мест

Поздравляем!
Вы выиграли:

2-х дневный интенсив "Путь в IT"

Не пропустите сообщение!
Мы скоро свяжемся с вами!

Редирект для продолжения диалога Скачать файл
×
Максим Федотов
Максим Федотов печатает ...