LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Если же использовать Лисп для написания императивных программ то не очень понятно а зачем тогда именно Лисп?

  1. Нормальная математика. С целыми и рациональными числами, а не int32 и float c обрезанной точностью.

  2. Нормальные глобальные переменные (который в Лиспе называются «специальные»). Когда можно не таскать за собой структуру с контекстом через всю программу.

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

  4. Нормальный отладчик. В котором можно проверить любое утверждение в терминах функций программы (попробуй в отладчике Си проверить, что strlen(x) < atoi(y)). В котором даже можно переопределить функцию и продолжить работу.

  5. Нормальная обработка исключительных ситуаций, когда на попавшийся в обрабатываемом файле непредвиденный символ можно указать в обработчике ошибки заменить символ на другой, пропустить символ, пропустить обрабатываемую строку, … а не просто прервать программу.

  6. Нормальные многомерные массивы, у которых можно изменять размерность и ошибка в индексации не приводит к UB.

  7. Сборщик мусора, позволяющий не следить вручную за освобождением памяти.

И всё это в 1994 году. Нынче часть возможностей реализовали в других языках, но всё вместе мало где.

Исходная версия monk, :

Если же использовать Лисп для написания императивных программ то не очень понятно а зачем тогда именно Лисп?

  1. Нормальная математика. С целыми и рациональными числами, а не int32 и float c обрезанной точностью.

  2. Нормальные глобальные переменные (который в Лиспе называются «специальные»). Когда можно не таскать за собой структуру с контекстом через всю программу.

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

  4. Нормальный отладчик. В котором можно проверить любое утверждение в терминах функций программы (попробуй в отладчике Си проверить, что strlen(x) < atoi(y)). В котором даже можно переопределить функцию и продолжить работу.

  5. Нормальная обработка исключительных ситуаций, когда на попавшийся в обрабатываемом файле непредвиденный символ можно указать в обработчике ошибки заменить символ на другой, пропустить символ, пропустить обрабатываемую строку, … а не просто прервать программу.

  6. Нормальные многомерные массивы, у которых можно изменять размерность и ошибка в индексации не приводит к UB.

  7. Сборщик мусора, позволяющий не следить вручную за освобождением памяти.

И всё это в 1994 году. Нынче часть возможностей реализовали в других языках, но всё вместо мало где.