История изменений
Исправление monk, (текущая версия) :
Если же использовать Лисп для написания императивных программ то не очень понятно а зачем тогда именно Лисп?
-
Нормальная математика. С целыми и рациональными числами, а не int32 и float c обрезанной точностью.
-
Нормальные глобальные переменные (который в Лиспе называются «специальные»). Когда можно не таскать за собой структуру с контекстом через всю программу.
-
Нормальный ООП. Когда можно добавить метод к любому классу в любой момент. Когда можно для любого метода указать, что делать перед ним и после него. Когда выбор метода можно делать не только по классу первого аргумента, а по комбинации классов.
-
Нормальный отладчик. В котором можно проверить любое утверждение в терминах функций программы (попробуй в отладчике Си проверить, что
strlen(x) < atoi(y)
). В котором даже можно переопределить функцию и продолжить работу. -
Нормальная обработка исключительных ситуаций, когда на попавшийся в обрабатываемом файле непредвиденный символ можно указать в обработчике ошибки заменить символ на другой, пропустить символ, пропустить обрабатываемую строку, … а не просто прервать программу.
-
Нормальные многомерные массивы, у которых можно изменять размерность и ошибка в индексации не приводит к UB.
-
Сборщик мусора, позволяющий не следить вручную за освобождением памяти.
И всё это в 1994 году. Нынче часть возможностей реализовали в других языках, но всё вместе мало где.
Исходная версия monk, :
Если же использовать Лисп для написания императивных программ то не очень понятно а зачем тогда именно Лисп?
-
Нормальная математика. С целыми и рациональными числами, а не int32 и float c обрезанной точностью.
-
Нормальные глобальные переменные (который в Лиспе называются «специальные»). Когда можно не таскать за собой структуру с контекстом через всю программу.
-
Нормальный ООП. Когда можно добавить метод к любому классу в любой момент. Когда можно для любого метода указать, что делать перед ним и после него. Когда выбор метода можно делать не только по классу первого аргумента, а по комбинации классов.
-
Нормальный отладчик. В котором можно проверить любое утверждение в терминах функций программы (попробуй в отладчике Си проверить, что
strlen(x) < atoi(y)
). В котором даже можно переопределить функцию и продолжить работу. -
Нормальная обработка исключительных ситуаций, когда на попавшийся в обрабатываемом файле непредвиденный символ можно указать в обработчике ошибки заменить символ на другой, пропустить символ, пропустить обрабатываемую строку, … а не просто прервать программу.
-
Нормальные многомерные массивы, у которых можно изменять размерность и ошибка в индексации не приводит к UB.
-
Сборщик мусора, позволяющий не следить вручную за освобождением памяти.
И всё это в 1994 году. Нынче часть возможностей реализовали в других языках, но всё вместо мало где.