пятница, 4 декабря 2009 г.

Lisp в финансовом бизнесе

Смею утверждать, что Common Lisp реально может применяться на биржах. И вот почему:

1. Современные лисповые компиляторы генерируют очень быстрый машинный код. SBCL даже в нетипичных числодробильных задачах подбирается к C++ и бьётся на одном уровне с OCaml и Haskell. Разница в скорости между C++ и SBCL нивелируется ценой переключения контекста при работе с сетью, плюс латентность самой сети гораздо выше этой разницы в скорости. Время реакции лиспового кода будет достаточной. В конце концов, на C++ написать быструю программу тоже нужно уметь.

2.  Автоматическое управление памятью - не помеха. Во-первых, можно писать так, чтобы для сборщика мусора почти не было работы. Во-вторых, сборщику мусора можно запрещать работать, когда ему работать ну точно не надо. В-третьих, память в больших и сложных плюсовых программах течёт, практически, всегда. Когда я несколько лет назад ходил на собеседование в Luxoft, интервьювер рассказал про плюсовый коллектор данных, который "терял" 20 гигабайт памяти за месяц. Спасало только то, что на машине памяти было больше 100 гб, поэтому коллектор перезапускали всего лишь раз в полгода. Ошибку найти не могли. Стоить отметить, что обычные программы, работающие с большим объёмом данных в памяти и не использующие hugepages, очень прилично тормозят работу всей операционной системы из больших накладок на работу с длинными цепочками vma. Поэтому если "обычная" течёт, то она, со временем, замедляет всю систему. Если тормоза выйдут за пределы допустимой реакции системы, то бот до перезапуска приносить денег больше не будет.

3. Лисп банально мощнее большинства современных языков программирования. Сложное на нём делается легко, а невозможное в других языках можно сделать в принципе.

Конечно, такими же преимуществами над C++ обладают решения на .NET и Java, но опыт LSE показывает, что lock-in на решениях одного вендора, к тому же, проприетарного, к добру не приводят. Хорошие лисповые компиляторы и открыты, и достаточно маленькие, чтобы в них можно было разобраться силами своих инженеров, снизив время даунтайма до минимума. Дотнет нифига не открыт, а Джава слишком большая, чтобы малым штатом инженеров можно было оперативно найти и решить проблему.

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

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

Отсутствие лисповых ботов в финансах объясняется исключительно маргинальность Лиспа. Маргиналы-лисперы в этой теми интереса не проявляют, ибо она довольно проста, а заинтересованные работодатели применять маргинальные технологии боятся.

4 комментария:

  1. Вы занялись написанием софта для финансового сектора?

    ОтветитьУдалить
  2. Я с него, можно сказать, начинал ;)

    ОтветитьУдалить
  3. А в-принципе где лисперу можно найти хорошую работу?

    ОтветитьУдалить