На языке Haskell фактически пишутся скрипты для смарт-контрактов Cardano, которые затем автоматически компилируются в собственный язык блокчейна, — Plutus Core. Впрочем, наша любовь к Haskell началась с самого Haskell и до знакомства с блокчейном, так что сперва воздадим ему должное и расскажем, как и почему мы выбрали этот язык.
Haskell не так популярен, как JavaScript, Python, Elixir или C/C++/C# — языки, которые мы сами много использовали в разработке, — он занимает 27-е место в «Индексе популярности языков программирования» по состоянию на июнь 2022. Но у него есть безусловные преимущества перед остальными. Самым важным для нас всегда было добиться максимальной читаемости и недвусмысленности функции, — чтобы любой мог зайти в кодовую базу и понять, что там происходит. А так как мы работали с финтехом и высоконагруженными системами, ещё двумя приоритетными задачами стало снизить вероятность возможность ошибок и сделать надёжность кода независимой от конкретного разработчика и его когнитивной нагрузки. Haskell, чистый функциональный язык, позволил нам делать и то, и другое. Вот особенности Haskell, которые открыли ему путь к нашим сердцам и ПО:
- Качество, практичность, скорость. А ещё предельная выразительность языка и его гибкость (например, операторы можно использовать как в инфиксной, так и в префиксной записи, а также определять свои);
- Лёгкость рефакторинга. Любой долгоиграющий проект предполагает рефакторинг; написание нового функционала — это лишь 10-15% процесса разработки, остальное — либо дополнение существующих частей, либо рефакторинг ошибок в проектировании;
- Гибкость и комбинаторность. Haskell предлагает формальные абстракции (функторы и монады), которые легко комбинируются и позволяют описать разного рода взаимосвязи между частями программы, правильность написания которых проверяет компилятор;
- У Haskell есть набор инструментов для параллельного программирования, который поддерживают почти все популярные редакторы кода;
- Мощная качественная библиотека и использование пакетов Haskell позволяет создавать коммерческий софт, чётко отделять чистые части программы от частей с сайд-эффектами и при этом не писать заново то, что уже написано до нас: содержимое модулей библиотеки автоматически импортируется во все модули нашего проекта.
Мы понимаем, что Haskell — не чудесный единорог, но готовы принять его недостатки, — такие, как высокий порог входа и отсутствие единой инструкции с best practices и удовлетворительных IDE. Haskell позволяет писать чистый функциональный код, — то есть делать то, к чему в принципе стремится каждый разработчик. Многие наши коллеги по цеху сходятся на том, что Haskell глобально изменил их видение программирования и подход к использованию других языков, а также позволил развить свои навыки в написании кода.