Функциональное Программирование - что это? Объясняем с примерами, что стоит знать новичкам

  Рет қаралды 3,032

Daria Shatova

Daria Shatova

Күн бұрын

Пікірлер: 22
@heater-hater
@heater-hater 11 ай бұрын
спасибо за труд😊
@DariaShatova
@DariaShatova 11 ай бұрын
Спасибо за комментарий! 🩷
@VitaliyZlobin
@VitaliyZlobin 7 ай бұрын
А за что именно спасибо? Что ты понял из этого видео?
@chiricktheseal
@chiricktheseal 10 ай бұрын
Спасибо от студентов!!!
@DariaShatova
@DariaShatova 9 ай бұрын
😍🫶🏼
@VitaliyZlobin
@VitaliyZlobin 7 ай бұрын
А за что именно спасибо? Что ты понял из этого видео?
@scherbakovss2012
@scherbakovss2012 9 ай бұрын
Чем функциональное программирование отличается от структурного например сварить борщ?
@DariaShatova
@DariaShatova 8 ай бұрын
Отличается чистотой функций, в структурном подходе они могут иметь побочные эффекты, а в ФП - нет. В Структурном походе каждая функция выполняет конкретную задачу, а основная функция "приготовить борщ" последовательно вызывает их, чтобы приготовить борщ. Тут мы будем использовать функции для выполнения каждой отдельной задачи, а затем объединять их последовательно для достижения конечного результата. В функциональном подходе мы будем использовать чистые функции и избегать побочных эффектов. Тут каждая функция возвращает новое состояние, не изменяя входные данные. Основная функция "приготовить борщ" последовательно передает результат одной функции в другую, чтобы приготовить борщ. В общем, оба подхода могут быть эффективными и в зависимости от предпочтений программиста можно использовать хоть тот, хоть другой. Структурный подход: - Использует последовательность вызова функций. - Изменяет состояние через переменные и функции с побочными эффектами. - Фокусируется на шаг за шагом выполнении задач. Функциональный подход: - Использует чистые функции, которые возвращают новое состояние. - Избегает изменения состояния, работая с неизменяемыми данными. - Фокусируется на преобразовании данных через функции.
@qwertymangames1800
@qwertymangames1800 5 ай бұрын
На примере нарезки хлеба Императивное программирование: возьми нож. Сделай 10 равномерных разрезов Положи нож обратно Декларативное/Функциональное программирование: вот тебе инструкция как нарезать хлеб и вот тебе нож. Сам справишься, читать умеешь.
@ProHolmes
@ProHolmes 3 ай бұрын
Но инструкция то будет написана императивно.
@shamilzagirov4401
@shamilzagirov4401 Ай бұрын
@@ProHolmes главная задача декларативного метода, максимально уменьшить императивный метод, как бы это не звучало глупо, но всегда будет императивный метод, просто главная задача его уменьшить максимально.
@scherbakovss2012
@scherbakovss2012 9 ай бұрын
Получается функциональное программирование это тоже самое что и процедурное?
@DariaShatova
@DariaShatova 9 ай бұрын
В процедурном подходе нужно тщательно описать каждое действие, типа почистить свёклу, сняв с неё 1,5 миллиметра поверхности, нарезать её на тонкие пласты и каждый пласт нарезать на кусочки 3*20 мм. Это подходит для простых задач. А в ФП мы пользуемся функцией, которая называется подготовить овощи для борща, и она выдает готовый ожидаемый результат. Но да, если раскапывать, а что там в функции, то можно докопать до более примитивной парадигмы)
@VitaliyZlobin
@VitaliyZlobin 7 ай бұрын
​@@DariaShatova не ответили. Разве в ФП нигде не нужно указывать, что нужно "снять 1,5 миллиметра поверхности" или "нарезать кусочки 3*20 мм". Из виде понял, что ФП это мудрёное и не особо полезное. Помимо этого ролика я знаю, что ФП хорошо параллелится, т.к. нет конкуренции за ресурс и нет блокировок. Но именно в ролике про это ничего не сказано.
@valeriyatua
@valeriyatua Ай бұрын
Сколько людей столько и мнений. Если рассматривать процедурное программирование и ФП, то да и там и там используются функции. Но, суть в подходе в реализации этих функций. В процедурном мы все так и делаем как описанно выше. То есть пишем реализацию нарезки свеклы, потом делаем функцию нарезки картофеля но она немного отличается от свеклы, нарезка капусты отличается и от картофеля и от свеклы и так далее. Тут на помощь приходит композиция, когда мы 2 или 3 функции условно складываем. Например функция картошки и функция нарезки кубиком, функция свекла и функция нарезки 1.5 мм от поверхности. И так далее. Далее есть каррирование. допустим есть функция кастрюля, она выдаст борщ, только если все ингридиенты готовы и лежат в ней. А так как список аргументов длинный,и ждать мы это все не хотим, то мы можем эту функцию разбить на функции с, например, 1 аргументом. И добавлять туда ингридиенты по мере их готовности. emptyPot = curry(borsch(water, cabbage, tomatoe, onion)) pourWater = emptyPot(water) ...... some logic.... addCabbage = pourWater(cabbage) И так далее, причем аргументами borsch, могут выступать функции композиции которые берут овощ и режут его. То есть каждое действие атомарное и не требует сложной бизнес логики внутри. Но, все это прекрасно звучит в теории, и отлично выглядит на бумаге. На практике, если попытаться всунуть это в язык, который весьма условно можно назвать языком поддерживающим ФП, то получим кашу.
@dmitry-lz1ny
@dmitry-lz1ny 9 ай бұрын
Эх. Elixir как по мне более приятный, но у нас скорее всего SCALA в основном, т.к много джавистов. А хаскел вообще мало кто освоит. : )
@DariaShatova
@DariaShatova 9 ай бұрын
интересно, у нас про Elixir мало кто говорит)
@dmitry-lz1ny
@dmitry-lz1ny 9 ай бұрын
@@DariaShatova про функциональные языке в целом не так часто говорят, т.к там своя ниша для математиков.
@Ochenopasniy
@Ochenopasniy 6 ай бұрын
Ребята, я хочу с вами работать! Все понятно и интересно объясняете! Есть вакансии? Я джун
@DariaShatova
@DariaShatova 6 ай бұрын
😍 вот спасибо! пойду Володе скажу, он порадуется 🥰 вакансий пока нет, но вы держитесь ))) 😁🫶🏼
@stainlesstales3503
@stainlesstales3503 6 ай бұрын
@@DariaShatova Я знаю Erlang. который тоже особо не нужен.
@sergsuper
@sergsuper 14 күн бұрын
Ни о чем
Чудовищно функциональный JavaScript
21:31
Как пройти в IT?
Рет қаралды 55 М.
Tuna 🍣 ​⁠@patrickzeinali ​⁠@ChefRush
00:48
albert_cancook
Рет қаралды 148 МЛН
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
База про CI/CD на понятных примерах
26:08
Павел Сорокин
Рет қаралды 2,6 М.
Что такое JDBC? Что такое ORM, Hibernate & JPA?
12:59
Sergey Nemchinskiy
Рет қаралды 75 М.