Предлагаю читателям «Хабрахабра» перевод статьи «16 Months of Functional Programming». Все мои замечания будут выделены курсивом.
В этой статье я хочу поделиться с вами моим опытом в функциональном программировании. Я чувствую, что в целом за прошедшие 16 месяцев стал лучше разбираться в информатике и компьютерах, чем за предыдущие 10 лет и всё это благодаря моему погружению в Scala и мир функционального программирования. Причина по которой функциональное программирование побуждает вас к постоянному развитию заключается в том, что каждую задачу необходимо переосмысливать заново. Порой невозможно поверить в то, что большинство стандартных задач могут быть решены иным путём и — бум! — функциональный подход предлагает лучшее решение и это шокирует.
Так что же случилось со мной за эти 16 месяцев? Закрыв свой стартап, я стал подыскивать интересный проект для работы. Получил временную подработку консультантом в 2lemetry, что позднее вылилось в полный рабочий день с погружением в функциональное программирование, работу с MQTT брокерами и распределёнными системами. Во время работы в 2lemetry Scala оказала на меня сильнейшее влияние. Приходилось отбрасывать свои представления о программировании и обучаться всему с нуля.
В этой статье я хочу рассказать о некоторых концепциях функционального программирования, которые меня впечатлили. Моя цель — зажечь искру в умах программистов, которые уже имеют опыт работы с такими языками как Java, Ruby и Python. Не беспокойтесь о том, что некоторый код на Scala, который я привожу в этой статье, может быть вам непонятен. Цель этого кода — продемонстрировать концепции функционального программирования в общих чертах. Так же стоит упомянуть, что Scala — это не чистый функциональный язык, т.е. некоторые вещи могут показатся неудобными при смешивании их с ООП. Я постараюсь указывать на такие моменты.
Содержание:
- Неизменяемое состояние
- Функции
- Тип Option и сопоставление с образцом
- Однострочники и for-генераторы
- Система типов
- Ленивые вычисления и бесконечные структуры данных
- Что дальше?
Читать далее |