Лисп в промышленной разработке
Месяц с копейками на новой работе, уже можно делать кое-какие выводы по поводу применимости Коммон Лиспа в реальном деле.
Вводная: наша контора занимается разработкой специализированного железа и софта (программно-аппаратный комплекс по-русски) для бирж. Решения повышают интенсивность обработки финансовой информации на два порядка (в сто раз), и аналогов им пока нет. Лисп, как уже писал в предыдущих постах, используется, буквально, везде. Реальных лисповых монстров-суперстаров работает всего два человека, остальные лисповаятели - железячники, да в той или иной мере начинающие лисперы (типа меня).
Какие моменты хорошо заметны:
Код у людей пишется очень быстро.
Ошибок, связанных с динамической типизаций, практически не встречается. Даже если код пишет новичёк, то 99% производимых им косяков имеют алгоритмический характер, либо неправильное использование синтаксиса (!). Декларация типов при этом не используется совсем.
На предупреждения компилятора (warnings) мало, кто смотрит. Если компилятор не встал колом, то код считается рабочим и спокойно коммитится в репозиторий. В итоге, warning'и растут, как на дрожжах, и в вагоне шелухи не видно критических предупреждений, которые, по-идее, могли бы быть и show stopper'ами. Автоматическая посткоммитная сборка и посылка diff'а лога автору коммита не особо помогает. Правда, у нас уровень предупреждений повышенный стоит... Но факт есть факт: на warning'и никто не смотрит.
Предупреждения компилятора народу бывают сложными для понимания. Т.е. спрашиваешь человека, почему он не исправит эту фигню, а он отвечает, что не понимает смысл предупреждения. Это от того, что человек с концепцией языка не знаком, а прошлый опыт с вариациями C/C++ объяснить суть ошибки не может.
Настоящий фортрановский программист напишет фортрановскую программу на любом языке. Железячники пишут на Лиспе, как на VHDL или C. Студенты с академическим C++/Java бэкграундом пишут всё на классах. Только лисперы пишут на Лиспе, как на Лиспе. В итоге, встречаются вырвиглазные конструкции, вытащенные явно из железячной логики, или, там, множество вложенных хэш-таблиц с мильёном объектов на каждый чих, которые разбирать даже с помощью инспектора неудобно. А ведь можно было построить список, который очень просто рекурсивно обходится и паттерн-матчится... Но всё это говорит только о том, что порог вхождения в Лисп очень низкий, и писать на нём работающий код может человек с опытом программирования на любом языке.
Лисповый код очень просто рефакторится. Есть у нас большой человек с огромным опытом, и он, в числе прочего, причёсывает дизайн системы. Улучшения колоссальных размеров укладываются в очень мало изменённого кода (DSL на DSL'е :).
Люди без лиспового опыта предпочитают IDE Лиспворкса. Религиозные фанатики пишут в Емаксе (хотя Slime Лиспворкс не в полной мере поддерживает). Возможно, именно благодаря привычно выглядящему окружению (кнопки, тулбары, гуи) и мощному отладчику, даже начинающие пишут, пусть некрасивый, неканоничный, но рабочий код.
Люди с богатым опытом opensource-разработки и для проприетарных продуктов пишут хороший код. Одно удовольствие такой код читать.
В целом, ощущения полной неприменимости или какой-то значительной проблемности при использовании Лиспа нет. Даже при синтезе железа (привет, thesz!). Даже в такой критичной к ошибкам области, как биржи, где каждая миллисекунда простоя стоит денег ;)
http://13-49-ru.blogspot.com/2010/07/blog-post_21.html
Руки чешуться посмотреть на лисп
Чтобы написать коммент, необходимо залогиниться