А вы знаете, где используется Haskell?
Введение
Всем привет! Мы хотим продолжить серию постов на тему “где используются эти ваши странные языки программирования”. В прошлый раз мы рассказали про Лисп, а сегодня продолжим разговор про функциональные языки и обратим внимание на Haskell. Он является основным языком разработки в Typeable и, конечно, мы не смогли пройти мимо такой темы.
Haskell — чистый функциональный язык программирования общего назначения. Среди его отличительных особенностей можно выделить строгую статическую типизацию, ленивые вычисления, алгебраические типы данных и серьёзную теоретическую основу. Это относительно молодой язык, он появился в 1990 году, но уже оказал значительное влияние на другие языки и на теорию языков программирования в целом.
Недавно у нас был пост про полезные утилиты, написанные на Haskell, но все они нацелены на использование технически подкованными людьми. Сегодня же приведём примеры прикладного использования из различных индустриальных областей.
Что и где написано на Haskell?
Пожалуй, самый гуглящийся и известный пример использования Haskell в крупных компаниях это спам-фильтры в
FacebookMeta. Для фильтрации сообщений, содержащих спам, ссылки на потенциально вредоносное ПО и фишинговые атаки, используется система Sigma, которая в 2015 году была переписана на Haskell. Выбор языка основывается в том числе на требованиях к производительности, необходимости в чистых функциях и статической типизации, а также возможности интерактивной разработки. Под капотом активно используется фреймворк Haxl, который компания выложила в открытый доступ. Больше подробностей о процессе разработки и технических деталях можно найти в соответствующем посте в блоге компании: https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/Eaton — компания, производящая электротехническое и гидравлическое оборудование, компоненты для авиационной и автомобильной промышленности. В компании используют Haskell для повседневных задач вроде скриптинга, симуляции железа, инструментов для удалённого управления системами транспортного средства и т.д. Но самое интересное, что они доверили управление гидравликой коду, написанному на DSL Atom, который также реализовали на Haskell. Atom предназначен для разработки систем жёсткого реального времени и позволяет декларативно описывать правила смены состояний системы. Во время компиляции выполняется планирование задач, поэтому результирующий код имеет детерминированное время выполнение и константное потребление памяти. Это значительно упрощает верификацию полученного кода и в целом повышает безопасность системы, что, конечно, очень важно для этой предметной области. Более подробно про всё это можно прочитать на слайдах и в репозитории Atom.
Теперь перенесёмся в совершенно другую область, а именно в мир музыки. Сервис Chordify позволяет преобразовывать музыку с YouTube, soundCloud и т.д. в аккорды, чтобы вы сами научились играть свои любимые песни. Haskell применяется по большей части непосредственно в процессе распознавания, для этого разработчики используют библиотеку HarmTrace, которая анализирует последовательности музыкальных гармоник.
По аккордам, сгенерированным библиотекой на Haskell, можете сыграть свою любимую песню Лаборатория Касперского разрабатывает собственную защищённую операционную систему KasperskyOS для подключенных к интернету встраиваемых систем. Разумеется, у этой ОС особые требования к надёжности и кибербезопасности. Для компилятора системы безопасности и создания вспомогательных средств разработки команда KasperskyOS активно использует Haskell. Конфигурация безопасности описывается на специальном DSL, который затем компилируется в C. Как видим, Haskell в очередной раз доказал свою пользу, когда дело касается безопасности.
Часть внутренних инструментов для automotive-разработки в Tesla написана на Haskell, что подтверждается периодическим появлением вакансий. Насколько я смогла понять из описаний вакансий, Haskell используется для промежуточного высокоуровневого представления внутренних систем, из которого генерируются код на C, документация и, возможно, что-то ещё.
В Tesla тоже используют Haskell! BIOCAD — одна из крупнейших биотехнологических компаний, базирующаяся в России. В компании осуществляется полный цикл создания медикаментов, вплоть до массового производства и маркетинга. BIOCAD разрабатывает собственные внутренние сервисы для обработки и хранения данных при разработке препаратов. Бэкенд этих сервисов написан на Haskell, в нём используется графовая база данных Neo4j, для которой компания разработала и выложила в открытый доступ драйвер Hasbolt.
Haskell занял свою нишу в разработке блокчейнов и криптовалюты. Наверное, большинство вакансий на Haskell, которые я встречала, были из этой области. Из самых известных, пожалуй, стоит упомянуть Cardano. Основная причина популярности Haskell в этой области — снова безопасность! Более подробно про это можно почитать в посте FPComplete.
Если блокчейны кажутся слишком скучной, серьезной или “нечеловечной” областью, то расскажу вам о Co–Star — астрологическом приложении для персонализированных гороскопов и ретроградных Меркуриев. Их бэкенд написан на Haskell, и разработчики рассказали на сайте приложения, почему выбрали именно этот язык: https://www.costarastrology.com/why-haskell/
Haskell немного причастен даже к астрологическим прогнозам... Бэкенд мессенджера Wire написан на Haskell, причём серверный код есть в открытом доступе в репозитории компании, и к нему написана подробная документация.
Американский музей естественной истории использует Haskell для исследования филогенетических графов, отражающих эволюционные взаимосвязи между различными видами. Код этого проекта также доступен на GitHub.
Заключение
Список примеров для поста составлялся с целью показать разнообразие областей применения, и, конечно, многое осталось за кадром. Более полную информацию о том, в каких компаниях и отраслях используется Haskell, можно найти здесь:
Сами мы в Typeable применяем Haskell для разработки проектов в области здравоохранения, туризма, финтеха и многого другого.
Будем рады вашим дополнениям, рассказам об опыте работы или написания пет-проектов на Haskell!
Вам также может понравиться: