3. План
1. Чего хотят пользователи
2. Как изменились требования к программным
продуктам
3. Почему стоит изменить подход к разработке
4. Как реактивное программирование может
нам помочь
5. Тулы
12. Изменение инфраструктуры
2000 2014
Размеры кластеров < 100 нод > 1000 нод
Время реакции секунды миллисекунды
Стабильность
работы
95% 100%
Объемы данных GBs TBs/PBs
20. Почему получается плохо
1. Мы используем подход к разработке не
учитывающий современные реалии
21. Почему получается плохо
1. Мы используем подход к разработке не
учитывающий современные реалии
2. Снижение требований к качеству кода в
следствии увеличения вычислительных
мощностей
22. Почему получается плохо
1. Мы используем подход к разработке не
учитывающий современные реалии
2. Снижение требований к качеству кода в
следствии увеличения вычислительных
мощностей
3. Junior-driven development
4. etc…
46. Что не так со старой
1. На уровне API пропагандируется
использование сайд-эффектов
47. Что не так со старой
1. На уровне API пропагандируется
использование сайд-эффектов
2. Мы не можем создавать абстракции более
высокого уровня
48. Что не так со старой
1. На уровне API пропагандируется
использование сайд-эффектов
2. Мы не можем создавать абстракции более
высокого уровня
3. Callback hell
49. Что не так со старой
1. На уровне API пропагандируется
использование сайд-эффектов
2. Мы не можем создавать абстракции более
высокого уровня
3. Callback hell
4. Необходимость в самостоятельном
управлении ресурсами
52. Новая событийная система
1. Каждое событие - функция, элемент
высшего уровня
2. Обработчики событий - функции, элементы
высшего уровня
53. Новая событийная система
1. Каждое событие - функция, элемент
высшего уровня
2. Обработчики событий - функции, элементы
высшего уровня
3. Комбинирование позволяет создавать
абстракции более высокого уровня
66. Scala.Rx #1
val a = Var(1) // 1
val b = Var(2) // 2
val c = Rx{ a() + b() } // 3
val d = Rx{ c() * 5 } // 15
val e = Rx{ c() + 4 } // 7
val f = Rx{ d() + e() + 4 } // 26
println(f()) // 26
81. Дополнительная информация
1. RxJava
2. The Reactive Manifesto
3. Deprecating the Observer Pattern
4. Typesafe Activator
5. Elm
6. RxJS/Flapjax/Bacon.js/Kefir.js
7. Tao Presentations