Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Вы не понимаете ФП
Александр Гранин
1
2
О чем доклад?
● ФП не нужно, расходимся
● 3 аксиомы о настоящем ФП
● Мифы и реальность
3
ФП не нужно, расходимся
4
void cost() {
vector<pair<char*, int>> devices;
devices.push_back({ "Memory 2x8Gb", 10000 });
devices.push_back({ "Graphic...
int cost() {
const vector<pair<char*, int>> devices =
{ { "Memory 2x8Gb", 10000 }
, { "Graphic Card", 25000 }
, { "CPU", 2...
Мутабельность
Циклы
Разрушающее присваивание
Пошаговые инструкции
Состояние
Сторонние эффекты
Иммутабельность
Рекурсия
Дек...
8
3 аксиомы о настоящем ФП
Аксиома 1. Элементы функционального программирования
❖ Лямбды
❖ Первоклассные функции
❖ Функции высших порядков
❖ Чистота
...
Аксиома 2. Функциональный стиль программирования
❖ Композиция функций
❖ Комбинаторы
❖ Каррирование
❖ Частичное применение
...
11
12
13
Аксиома 3. Функциональный дизайн приложения
❖ Системы типов
❖ Системы эффектов
❖ Встроенные языки (eDSLs)
❖ Функциональные...
Мифы и реальность
15
❖ Целевая аудитория
❖ Механизмы и конструкции в ФП
❖ Применимость парадигмы
❖ Философия парадигмы
Классификация мифов о ФП...
Целевая аудитория
17
Целевая аудитория
«ФП — для кандидатов наук и
академиков»
18
Целевая аудитория
«ФП — для кандидатов наук и
академиков»
«ФП — для монахов-аскетов, которым
связали руки и ноги»
19
Айсберг скрытой сложности
Лямбды, иммутабельность, чистота
Зигоморфизмы, категории, эндофункторы
20
Несколько уровней сложности
Лямбды, иммутабельность, чистота
Композиция
Контроль эффектов
Функторы, монады, моноиды
Функци...
Механизмы и конструкции в ФП
22
Механизмы и конструкции в ФП
«Без переменных и циклов нельзя
написать реальный код»
23
Механизмы и конструкции в ФП
«Без переменных и циклов нельзя
написать реальный код»
«В ФП нет состояния»
24
Механизмы и конструкции в ФП
«Без переменных и циклов нельзя
написать реальный код»
«В ФП нет состояния»
«В ФП нет побочны...
Состояние в ФП
Чистое иммутабельное состояние
❖ Argument passing state
❖ Монада State
Нечистое мутабельное состояние
❖ IO ...
Применимость парадигмы
27
Применимость парадигмы
«ФП в реальном мире не используется»
28
Применимость парадигмы
«ФП в реальном мире не используется»
«ФП — это медленно»
29
1960
Эпоха исследований (1960 - 2010 - ...)
2000 2010 20202005 2015
Эпоха «ненужности» (2005 - 2015)
Мейнстрим
2017
(2013 ...
ФП — это медленно?
31
Персистентные структуры данных
32
Философия парадигмы
33
Философия парадигмы
«ФП — это математика»
34
Философия парадигмы
«ФП — это математика»
«ФП не привносит ничего нового»
35
Философия парадигмы
«ФП — это математика»
«ФП не привносит ничего нового»
«Все равно все компилируется в
машинный код»
36
Спасибо за внимание!
Александр Гранин
graninas@gmail.com
37
Upcoming SlideShare
Loading in …5
×

of

Вы не понимаете ФП / You don't understand FP Slide 1 Вы не понимаете ФП / You don't understand FP Slide 2 Вы не понимаете ФП / You don't understand FP Slide 3 Вы не понимаете ФП / You don't understand FP Slide 4 Вы не понимаете ФП / You don't understand FP Slide 5 Вы не понимаете ФП / You don't understand FP Slide 6 Вы не понимаете ФП / You don't understand FP Slide 7 Вы не понимаете ФП / You don't understand FP Slide 8 Вы не понимаете ФП / You don't understand FP Slide 9 Вы не понимаете ФП / You don't understand FP Slide 10 Вы не понимаете ФП / You don't understand FP Slide 11 Вы не понимаете ФП / You don't understand FP Slide 12 Вы не понимаете ФП / You don't understand FP Slide 13 Вы не понимаете ФП / You don't understand FP Slide 14 Вы не понимаете ФП / You don't understand FP Slide 15 Вы не понимаете ФП / You don't understand FP Slide 16 Вы не понимаете ФП / You don't understand FP Slide 17 Вы не понимаете ФП / You don't understand FP Slide 18 Вы не понимаете ФП / You don't understand FP Slide 19 Вы не понимаете ФП / You don't understand FP Slide 20 Вы не понимаете ФП / You don't understand FP Slide 21 Вы не понимаете ФП / You don't understand FP Slide 22 Вы не понимаете ФП / You don't understand FP Slide 23 Вы не понимаете ФП / You don't understand FP Slide 24 Вы не понимаете ФП / You don't understand FP Slide 25 Вы не понимаете ФП / You don't understand FP Slide 26 Вы не понимаете ФП / You don't understand FP Slide 27 Вы не понимаете ФП / You don't understand FP Slide 28 Вы не понимаете ФП / You don't understand FP Slide 29 Вы не понимаете ФП / You don't understand FP Slide 30 Вы не понимаете ФП / You don't understand FP Slide 31 Вы не понимаете ФП / You don't understand FP Slide 32 Вы не понимаете ФП / You don't understand FP Slide 33 Вы не понимаете ФП / You don't understand FP Slide 34 Вы не понимаете ФП / You don't understand FP Slide 35 Вы не понимаете ФП / You don't understand FP Slide 36 Вы не понимаете ФП / You don't understand FP Slide 37
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

Вы не понимаете ФП / You don't understand FP

Download to read offline

Небольшой доклад о мифах в функциональном программировании для DevDay@2GIS.

Slides for my talk to DevDay@2GIS about functional programming: See the talk here (Rus):
https://youtu.be/jSkYvNqQWqs

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Вы не понимаете ФП / You don't understand FP

  1. 1. Вы не понимаете ФП Александр Гранин 1
  2. 2. 2
  3. 3. О чем доклад? ● ФП не нужно, расходимся ● 3 аксиомы о настоящем ФП ● Мифы и реальность 3
  4. 4. ФП не нужно, расходимся 4
  5. 5. void cost() { vector<pair<char*, int>> devices; devices.push_back({ "Memory 2x8Gb", 10000 }); devices.push_back({ "Graphic Card", 25000 }); devices.push_back({ "CPU", 20000 }); devices.push_back({ "Motherboard", 6000 }); int cost = 0; for (size_t i = 0; i < devices.size(); ++i) { cost += get<1>(devices[i]); } printf("%i", cost); // 61000 } 5
  6. 6. int cost() { const vector<pair<char*, int>> devices = { { "Memory 2x8Gb", 10000 } , { "Graphic Card", 25000 } , { "CPU", 20000 } , { "Motherboard", 6000 } }; const int cost = accumulate(devices.begin(), devices.end(), 0, [](int acc, const pair<char*, int>& item) { return get<1>(item) + acc; }); return cost; } printf("%i", cost()); // 61000 6
  7. 7. Мутабельность Циклы Разрушающее присваивание Пошаговые инструкции Состояние Сторонние эффекты Иммутабельность Рекурсия Декларативность Функции, лямбды Функции высших порядков (ФВП) Чистые функции (вычисления) 7
  8. 8. 8 3 аксиомы о настоящем ФП
  9. 9. Аксиома 1. Элементы функционального программирования ❖ Лямбды ❖ Первоклассные функции ❖ Функции высших порядков ❖ Чистота ❖ Иммутабельность ❖ Алгебраические типы данных 9
  10. 10. Аксиома 2. Функциональный стиль программирования ❖ Композиция функций ❖ Комбинаторы ❖ Каррирование ❖ Частичное применение ❖ Декларативность 10
  11. 11. 11
  12. 12. 12
  13. 13. 13
  14. 14. Аксиома 3. Функциональный дизайн приложения ❖ Системы типов ❖ Системы эффектов ❖ Встроенные языки (eDSLs) ❖ Функциональные идиомы (функторы, моноиды, монады...) ❖ Функциональные паттерны (Free eDSLs, lenses) ❖ Функциональные подходы (FRP, STM) 14
  15. 15. Мифы и реальность 15
  16. 16. ❖ Целевая аудитория ❖ Механизмы и конструкции в ФП ❖ Применимость парадигмы ❖ Философия парадигмы Классификация мифов о ФП 16
  17. 17. Целевая аудитория 17
  18. 18. Целевая аудитория «ФП — для кандидатов наук и академиков» 18
  19. 19. Целевая аудитория «ФП — для кандидатов наук и академиков» «ФП — для монахов-аскетов, которым связали руки и ноги» 19
  20. 20. Айсберг скрытой сложности Лямбды, иммутабельность, чистота Зигоморфизмы, категории, эндофункторы 20
  21. 21. Несколько уровней сложности Лямбды, иммутабельность, чистота Композиция Контроль эффектов Функторы, монады, моноиды Функциональные подходы и паттерны 21
  22. 22. Механизмы и конструкции в ФП 22
  23. 23. Механизмы и конструкции в ФП «Без переменных и циклов нельзя написать реальный код» 23
  24. 24. Механизмы и конструкции в ФП «Без переменных и циклов нельзя написать реальный код» «В ФП нет состояния» 24
  25. 25. Механизмы и конструкции в ФП «Без переменных и циклов нельзя написать реальный код» «В ФП нет состояния» «В ФП нет побочных эффектов» 25
  26. 26. Состояние в ФП Чистое иммутабельное состояние ❖ Argument passing state ❖ Монада State Нечистое мутабельное состояние ❖ IO Ref ❖ MVar (concurrent variable) ❖ TVar (transactional variable) f g f g 26
  27. 27. Применимость парадигмы 27
  28. 28. Применимость парадигмы «ФП в реальном мире не используется» 28
  29. 29. Применимость парадигмы «ФП в реальном мире не используется» «ФП — это медленно» 29
  30. 30. 1960 Эпоха исследований (1960 - 2010 - ...) 2000 2010 20202005 2015 Эпоха «ненужности» (2005 - 2015) Мейнстрим 2017 (2013 - …) 30
  31. 31. ФП — это медленно? 31
  32. 32. Персистентные структуры данных 32
  33. 33. Философия парадигмы 33
  34. 34. Философия парадигмы «ФП — это математика» 34
  35. 35. Философия парадигмы «ФП — это математика» «ФП не привносит ничего нового» 35
  36. 36. Философия парадигмы «ФП — это математика» «ФП не привносит ничего нового» «Все равно все компилируется в машинный код» 36
  37. 37. Спасибо за внимание! Александр Гранин graninas@gmail.com 37

Небольшой доклад о мифах в функциональном программировании для DevDay@2GIS. Slides for my talk to DevDay@2GIS about functional programming: See the talk here (Rus): https://youtu.be/jSkYvNqQWqs

Views

Total views

129

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

3

Shares

0

Comments

0

Likes

0

×