О LISP
Легендарная компания Naugtydog Использовала LISP для создания серии игр Jack & Daxter
На сколько я помню, они использовали AllegroCL на котором был написан GOAL который тоже является диалектом LISP. В интернете очень много информации по этой теме.
Более того, последния серия игр этой же компании Uncharted также написана с использованием скрипт языка с как минимум LISP образным синтаксисом.
LISP использовался в играх не только этой компанией, были и другие практические применения LISP, взять хотя бы Autocad.
Но если говорить о Naugtydog... Могли бы они сделать эти игры без LISP? Да, могли. Но я привожу их как блестящий пример успешного исользования этого языка в современных играх. Дабы опровергнуть миф о том, что LISP: старый, медленный, ни кем не используется, имеет ограниченные области применения.
Язык LISP, а также его младший брат Scheme, языки вериколепные и прекрасно подходят для любых задач, и даже написания операционных систем. Производительность прграмм написанных на компиляторе LISP не многим уступает (а в некоторых случаях и превосходит) программам написанным на C,C++.
Прогаммирование ИИ возможно на любом языке. Программирование ИИ не многим отличается от от программирования любых других алгоритмов.
Я люблю LSIP за:
- S-Expressions Великолепный простой синтаксис, в котором описание данных эквивалентно кодированияю программ, и то и другое представленно в виде s-expression. По сути исходный код он и есть структура данных. Что позволяет этому языку иметь практически безграничную систему макросов. Компилятор LISP, в момент компиляции кода, исполняет некоторые выражения. А именно делает макроопределения, и их вызов. Результатом вызова макроопределения является новое s-expression выражение, в котором возможно имеются другие макровызовы. Компилятор продолжает выполнять все эти вызовы пока в выражении не исчезнут макровызовы. Это выражение и будет компилированно в машинный код.
- Continuations Это возможность функции прервать свое выполнение а затем продолжить
- Proper tail recursion Это когда рекурсивная функция не требует нового фрагмента в стеке.
Следующий лист хотя и присутсвует во многих языках, в LISP он имеет очень качественную реализацию, не хуже а во многих случаях лучше чем у конкурента.
- First class functions
- CLOS Система обьектноориентированного программирования
- Exceptions Система исключительных ситуаций
На мой вгляд проблема распространненности LISP в том, слишком мало вакансий на LISP. Но тоже самое можно сказать и о SmallTalk, Haskell и другим.
Если вы хотите бегло ознакомиться с ключевыми преимуществами LISP воспользуйтесь книжкой (буклетом) Land of Lisp: Learn to Program in Lisp, One Game at a Time!
Если вы хотите изучить LISP для его использования рекомендую (было издание на русском) ANSI Common LISP
Есть еще Practical Common LISP




Ответить с цитированием