Баннер мобильный (3) Пройти тест

Язык хакеров: кто придумал Lisp и чем он хорош

Рассказываем о языке, который изменил программирование

Разбор

18 декабря 2025

Поделиться

Скопировано
Язык хакеров: кто придумал Lisp и чем он хорош

Содержание

    Он выглядит пугающе, но считается одним из самых влиятельных в истории программирования — язык Lisp. Где его используют и как научиться не думать о строчках — в этой статье.

    История Lisp

    Язык Lisp создал в 1958 году математик Джон Маккарти для исследований в области искусственного интеллекта. Со временем его революционные концепции повлияли на другие языки программирования

    Именно в Lisp впервые появились:

    • garbage collection — автоматическая очистка памяти;
    • REPL — интерактивная среда, где можно выполнять код по строчке и сразу видеть результат;
    • функциональное программирование — подход, при котором вычисления рассматриваются как оценка математических функций. 

    Половина того, что сегодня считается современным языком, было придумано в эпоху Lisp.

    Особенности языка

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

    • Списки как основная структура данных. Программы на Лисп — это вложенные списки, которые можно легко обработать как данные. 
    • Гомоиконичный язык. У кода и данных одинаковая структура. На Лисп можно писать программы, которые изменяют или генерируют код во время выполнения.
    • Динамически типизированный язык. Типы переменных определяются во время выполнения, а не во время компиляции. Это делает код гибким.
    • Многопоточность и параллелизм позволяют писать высокопроизводительные приложения.
    • Собственная библиотека. Есть функции для работы с данными, математическими вычислениями. Разработчики могут создавать сложные приложения и не писать код с нуля.
    Так выглядит код на языке программирования Lisp
    Язык хакеров Lisp. Источник

    Lisp не подходит для начинающих разработчиков, разве что для решения конкретных задач. Но обычно новички еще не определились с направлением, поэтому им нужен язык с широким применением и большим сообществом. В некоторых вакансиях Lisp может быть основным языком, но в большинстве случаев этого недостаточно. Как минимум нужно знать еще один, например SQL.

    Константин Зубенко, независимый эксперт, автор Skillfactory

    Где используют Lisp

    Несмотря на «возраст», язык Lisp все еще активно применяют. Его используют:

    • в искусственном интеллекте для создания нейросетей. Lisp позволяет легко манипулировать данными и логическими выводами;
    • научных исследованиях и вычислениях. Например, для разработки алгоритмов и решения математических задач;
    • разработке ПО для написания скриптов и автоматизации рутины;
    • образовании как пример для изучения компиляции и интерпретации языков программирования;
    • разработке игр для создания игровых движков и скриптов. Можно быстро реализовывать идеи и тестировать их без необходимости писать много кода;
    • веб-разработке для создания серверной части приложений и интерактивных веб-приложений.

    Lisp — узкоспециализированный язык и используется в достаточно специфичных задачах: аналитике, разработке инструментов типа IDE, машинном обучении. Его можно назвать нишевым, но это не делает его хуже. Гибкость Lisp позволяет адаптировать код к разным кейсам

    Константин Зубенко, независимый эксперт, автор Skillfactory

    Основы синтаксиса

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

    • Списки являются основным строительным блоком. Они заключаются в круглые скобки и могут содержать любое количество элементов, включая другие списки.
    lisp
    
    (define my-list '(1 2 3 4))

    Определяем список my-list, который содержит четыре элемента: 1, 2, 3, 4.

    • Операторы и функции. Если в большинстве языков арифметика записывается последовательно, то в Лисп сначала пишется оператор, а потом аргументы
    lisp
    
    (* 3 4)

    Умножаем 3 на 4 и возвращаем результат 12.

    • Определение функций. Можно определять свои собственные функции с помощью специальной формы defun.
    lisp
    
    (defun square (x)
    
      (* x x))

    Функция square принимает один аргумент x и возвращает его квадрат.

    • Циклы и итерации. Для выполнения повторяющихся действий используются конструкции loop, dotimes и др.
    lisp
    
    (dotimes (i 5)
    
      (format t "Итерация: ~A~%" i))

    Код выводит номер каждой итерации от 0 до 4.

    • Работа с переменными. Можно определять переменные с помощью формы defvar или setq.
    lisp
    
    (defvar my-var 10)
    
    (setq my-var 20)

    Сначала определяем переменную my-var со значением 10, а затем меняем ее значение на 20.

    Мем про Lisp
    Скобок не бывает много, если речь идет про Lisp. Источник

    Диалекты

    Сегодня существует больше 20 разных диалектов Lisp. Самые популярные:

    • Common Lisp. Индустриальный язык со множеством библиотек. Поддерживает функциональное, объектно-ориентированное и процедурное программирование.
    • Scheme. Минималистичный диалект, разработанный в 1970-х годах. Отличается упрощенным синтаксисом, подходит для обучения. 
    • Clojure. Современный Lisp для JVM, создан в 2007 году. Ориентирован на функциональное программирование и работает на платформе Java.

    Макросы

    Lisp известен мощной системой макросов. Они преобразуют код до выполнения. 

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

    • для расширения языка, чтобы создавать новые конструкции, которые могут сделать код более читаемым и выразительным;
    • снижения дублирования кода, чтобы избежать повтора часто используемых шаблонов кода;
    • оптимизации, чтобы выполнять вычисления на этапе компиляции.

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

    Преимущества и недостатки Lisp 

    Главные плюсы

    • Простой синтаксис. Весь код — это списки. Нет сложных синтаксических конструкций и запутанных исключений
    • Гомоиконичность. Можно генерировать код, трансформировать его, писать собственные языковые конструкции. Из-за гибкости Lisp часто называют языком программирования для хакеров. Задачи, которые требовали бы длинного кода в Python, в Lisp можно решить за десять строк.
    • Сильные макросы. Расширяют язык, как будто вы сами проектируете его синтаксис.

    Минусы

    • Высокий порог входа. Непривычный синтаксис требует перестройки и адаптации.
    • Небольшая экосистема. Есть собственные библиотеки и фреймворки, но выбора меньше, чем у Python или JavaScript
    • Небольшое сообщество. В интернете меньше статей и готовых решений, труднее находить ответы на спорные вопросы.

    Lisp — не самый популярный, но важный для программистов язык. В рейтинге TIOBE он находится на 24 месте — между Classic Visual Basic и COBOL.

    Язык Lisp на 24 месте в рейтинге TIOBE
    Рейтинг TIOBE 2025. Источник

    Главные плюсы Lisp — абстрактность и гибкость. Код можно адаптировать под любую задачу. Еще есть макросы, которые используют для увеличения производительности и оптимизации. Но с непривычки можно уйти в over engineering. Минусы Lisp — это отсутствие большого количества библиотек, онлайн-материалов и сообщества. Джуниор-разработчику на Lisp будет трудно найти работу, в основном требуются специалисты с опытом.

    Константин Зубенко, независимый эксперт, автор Skillfactory

    Главное о Lisp

    • Lisp создали в 1958 году для работы с искусственным интеллектом.
    • У Lisp необычный синтаксис. Он использует списки как основную структуру данных.
    • С помощью макросов можно создавать собственный язык внутри языка.
    • У Lisp несколько диалектов: Scheme подходит для обучения, Common Lisp — для разработки.
    • Lisp не очень популярен, но используется в разных сферах: ИИ, научных исследованиях, разработке ПО, веб-приложений.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии