Почему функциональное программирование? и почему сейчас?
Я почти уверен, что если вы были программистом хотя бы последние несколько месяцев, вы слышали анекдот: «Когда я писал этот код, только Бог и я знали его значение; Теперь одному Богу известно». На самом деле это не шутка, это реальность нашего ремесла.
На мой взгляд: разработка программного обеспечения — лучшая профессия, которой можно и нужно заниматься: Мы решаем сложные человеческие проблемы. Мы сделали то, что не смогли сделать предыдущие поколения. но на данный момент: позвольте мне сказать: «Хьюстон, у нас проблема».
В чем проблема?
Сложность, сложность, сложность, как сказано в шутке выше. Вы начинаете решать проблему, вы полностью понимаете свой код, но через некоторое время, по мере роста проекта, он становится слишком сложным, пока у вас больше не может быть ментальной модели решение, которое вы соткали. Пример: то, что начиналось как простой цикл for, становится вложенным циклом for, затем по всему коду появляются эти циклы, и вы задаете себе вопрос: что делает этот код?
Одно решение
Что, если мы скажем «компьютеру»: ЧТО делать, и оставим ему, языку, компилятору и т. д., чтобы выяснить, как это сделать. Это называется декларативный стиль программирования.
Подождите минутку; что ты имеешь в виду?
Долгое время мы, программисты, которые любят и занимаются объектно-ориентированным программированием, а также теми, кто занимается процедурным программированием, мы говорим «Компьютеру» не только что делать, но как это делать . пример в джаваскрипте
var i;
for (i = 0; i ‹ cars.length; i++) {
text += cars[i] + «‹br›»;
}
пусть говорят; у вас есть массив автомобилей, затем в цикле for вы сообщаете компьютеру: «Вот мое начальное значение, и вот Как его увеличить. Это называется императивный стиль программирования.
Было бы круто?
Если бы мы сказали «Компьютеру»; сделайте это: увеличьте на единицу, и все, без прохождения всех этих церемоний, как это сделать. Мы придерживаемся сущности. Пункт: «Суть превыше церемонии».
Это то, что мы делаем в функциональном программировании. Это одно из преимуществ.
Другие преимущества.
В нашем коде javascript, который мы начали с использования, нет общего состояния.
вариант i;
Если у нас есть несколько функций в нашем коде, которые изменяют значение var i, тогда нам нужно будет сохранить историю значений по мере их изменения, это называется общим изменяемым состоянием. Состояние не должно быть общим. Легко сказать «Общее изменяемое состояние — корень всех зол» в программировании.
В следующей статье я продолжу эту тему. Она будет называться «Почему функциональное программирование? и почему сейчас? 2”
Примечание: помните, что вы можете пригласить меня на свои встречи, конференции и т. д., чтобы поговорить о функциональном программировании, реактивном программировании, параллелизме и т. д.: темы, актуальные в настоящее время.
Напишите мне: [email protected]