В 2015 году вы могли заметить перемены в способе разработки приложений на JavaScript. Разработчики уходят от непредсказуемой архитектуры с мутабельным состоянием в сторону более предсказуемой иммутабельной архитектуры приложений.
С такими фреймворками как Backbone, было принято синхронизировать сами данные и представление данных – для этого приходилось вручную подписываться на нужные события dom. Такой способ был подвержен ошибкам и вынуждал использовать слишком много типового кода. Пришел Angular и исправил это с помощью автоматизированного двустороннего биндинга.
Но сейчас все движется в другом направлении.
Вместе с React и его инструментарием, например, Redux, иммутабельный подход позволяет писать код легче, чем с использованием традиционного, мутабельного состояния. При использовании мутабельного состояния, приложение не может использовать преимущества современных инструментов, например, live reloading. Поэтому действительно хочется оставить все иммутабельным.
Библиотеки, основанные на парадигме функционального программирования (тот же Redux), легче расширяются – потому что чистые функции лучше стыкуются. Такие библиотеки обычно имеют меньше строк кода, из чего следует меньшее количество багов и снижение сложности. Ради интереса, взгляните на исходный код Redux. Чтобы его просмотреть, потребуется меньше 15 минут – кода, на самом деле, немного.
Стыкуемость и уменьшение сложности означает, что инструментарий может достигать высочайшего качества. Такие штуки как live reloading и time-travel-debugging невозможно быстро и легко реализовать для приложений, сделанных в императивном стиле. Несмотря на то, что технически это возможно, будут мешать побочные эффекты функций.
Не будем забывать, что фреймворки и библиотеки приходят и уходят. Вероятно, что React не будет самой популярной технологией через год или два. Но вся соль в том, что функциональная парадигма, которая получила распространение благодаря React и другим функциональным библиотекам, останется. Инструментарий настолько хорош, что пути назад уже нет. После того как вы начали использовать live reloading и time-travel-debugging, возвращаться обратно точно не захочется. Эти штуки действительно увеличивают продуктивность.
Будущее – за интерактивной разработкой программ. Если вы хотите познакомиться с примерами, сделанных в рамках интерактивного программирования, посмотрите домашнюю страничку Bret Victors. Обратите внимание на его доклад «Inventing on Principle».
Функциональный код обычно менее подвержен багам. Правда, разработчики фронтенда идут в этом направлении по другой причине. Функциональное программирование не предлагает ничего принципиально нового. Причина в инструментариях, и в том, что можно уменьшить количество багов. Более простой код – это побочный (и приятный) эффект.
Выводы
Даже если React не будет в будущем супер-популярной технологией, философия функционального программирования останется.
Если вы новичок в функциональном программировании, рекомендую посмотреть на Haskell. Книга “Learn You a Haskell for a Great Good” находится в открытом доступе. Изучить Haskell стоит, чтобы получить глубокие знания о программировании, даже если вы не собиратесь использовать этот язык для какого-либо серьезного проекта. Еще рекомендую посмотреть вот эту статью, которая на примерах показывает, где используется функциональное программирование.
Спасибо за внимание. Подписывайтесь на Твиттер автора, если такие истории вам интересны.
Об авторе
Привет! Меня зовут Марк, я разработчик программного обеспечения. Живу в Германии. Обожаю играться с новыми технологиями. Вы можете посмотреть мое приложение на Android и узнать больше фактов обо мне.
Если вам понравился пост, подписывайтесь на мою email-рассылку.
Автор: Voximplant