Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить курсы бесплатно
ГлавнаяБлогЯзык программирования Lisp: в чем его уникальность
Базы данных Access
8 243
Время чтения: 15 минут

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

8 243
Время чтения: 15 минут
Сохранить статью:
Сохранить статью:

В статье рассказывается:

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

Язык программирования 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.

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

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

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

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

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

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

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

Для некоторых людей слова Грэма оказались убедительными, но их было очень мало. Если верить статистике 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, нужно помнить, что программа в этом случае будет состоять из команд, которые выполняются Лисп-машиной.

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

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

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

Атомы

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

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

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

Дарим скидку от 60%
на обучение «Инженер-программист» до 21 апреля
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

В числе атомов Лиспа можно выделить 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) применяются для выполнения самых разных задач.
Только до 22.04
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

В этой таблице вы можете видеть правила построения атомов 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 устраняются по мере привыкания к этому языку.

Привлекает мир кодирования и создания программ? На курсе программиста с нуля до Junior вы освоите основы, познакомитесь с языками и инструментами разработки, и станете готовы к созданию своих первых проектов в IT-индустрии.
Оцените статью
Рейтинг: 5
( голосов 1 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
  1. Аноним

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

    0
    0
    Ответить
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...