/ Новости и уроки / Изучите основы функционального программирования

Изучите основы функционального программирования

828
Изучите основы функционального программирования
Если вы разработчик приложений, вы, вероятно, заметили растущую тенденцию: программные приложения становятся все сложнее. Дни создания и поддержки простых веб-приложений закончились.

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

Это может быть особенно пугающим для начинающих, потому что мы только начинаем осваивать написание кода, который действительно работает, не говоря уже о написании кода, который “легко понять, написать, отладить, повторно использовать и поддерживать.”

Почему каждый разработчик должен выучить функциональное программирование

Выучив функциональное программирование ты сможешь научиться писать чистый, простой в обслуживании и масштабируемый код.

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

Что такое функциональное программирование?

Итак. Что такое "функциональное программирование"?

Функциональное программирование - это не фреймворк или инструмент, а способ написания кода. В функциональном программировании мы уделяем большое внимание написанию кода, используя функции как "строительные блоки".

Ваша программа определяется в условиях одной основной функции. Эта главная функция определяется в условиях других функций, которые, в свою очередь, определяются в условиях еще большего количества функций - до тех пор, пока на нижнем уровне функции не станут просто примитивами языка, такими как "число" или «строка".

Если ты читаешь это, думая: "Хм, но подожди? Разве не каждый язык использует функции для написания кода?" тогда хорошо. Это значит, что вы обращаете внимание.

Вы правы - у каждого языка программирования есть функции. Но функциональное программирование выводит его на совершенно иной уровень.

Чтобы понять, что я имею в виду, давайте перемотаем и начнем с основ.

В каждой программе есть две вещи:

1) Поведение (то, что делает программа).

2) Данные

Когда мы изучаем парадигму программирования - например функциональное программирование - часто полезно рассмотреть, как парадигма подходит к поведению и данным соответственно.

Поведение, в функциональном программировании, рассматривается исключительно с использованием функций в функциональном программировании. Функции - это "самодостаточные" куски кода, выполняющие конкретную задачу. Она определяет связь между набором возможных входов и набором возможных выходов - они обычно принимают данные, обрабатывают их и возвращают результат. После записи, функция может использоваться снова и снова.

Данные, в функциональном программировании неизменны, и это значит, что их нельзя изменить. Вместо того, чтобы изменять данные, которые они принимают, функции функционального программирования принимают данные как входные и производят новые значения как выходные. Всегда.

Функции и неизменяемые данные - это единственные две вещи, с которыми вам необходимо иметь дело в функциональном программировании. Чтобы сделать это еще проще, к функциям относятся не иначе, чем к данным.

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

Это самая важная вещь для понимания при подходе к функциональному программированию.

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

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

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

В конечном счете, причина, по которой функции являются настолько мощными в функциональном программировании, заключается в том, что они следуют определенным основным принципам:

1) Функции используют неизменяемые данные

2) Функции гарантируют ссылочную прозрачность

3) Функции являются первоклассными сущностями

PS: Чтобы понять функциональное программирование, вам сначала нужно будет разобраться в алгоритмах. А как лучше всего понять какую-либо тему? Правильно, через книги. Поэтому я хочу вам порекомендовать эти книги по алгоритмам. Благодаря ним вы точно сможете изучить алгоритмы!