SlideShare a Scribd company logo
2
Юрий Шерстюк
3
3
4
Взгляд в историю
5
Десятичная система получила распространение
лишь в IX веке,
благодаря книге Мухаммеда аль-Хорезми
(«алгоритм» с латинского «algorithmi»)
6
«Алгоритм - набор инструкций, описывающих
порядок действий исполнителя для достижения
некоторого результата.»
Wikipedia
7
Значительно позже появились первые
компьютеры…
8
Развитие «компьютеризации» произошло
благодаря улучшению микропроцессоров
8
Развитие «компьютеризации» произошло
благодаря улучшению микропроцессоров
9
Закон Гордона Мура
10
Важным звеном развития «компьютеризации»
стали алгоритмы
11
Числовой ряд Фибоначчи
12
Базовый экспоненциальный алгортм решения
13
Для вычисления F200 понадобится 2138 операций,
для суперкомпьютера, выполняющего 40
триллионов операций в секунду, это займет -
292 секунд или…
14
157 019 284 536 451 070 000 лет
15
О-нотация
16
О-нотация - верхняя асимптотическая оценка
трудоёмкости алгоритма с точностью до
ограниченных множителей. При этом ошибка в
два раза или даже в тысячу раз считается
допустимой, а уже разница между n и n2
считается существенной.
17
Например: 3n2 + 2n + 20 оценивается как O(n2)
18
Базовые варианты О-нотаций:
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
3. О(n) - функции с линейной скоростью роста
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
3. О(n) - функции с линейной скоростью роста
4. О(n*log n) - функции с линейно–
логарифмической скоростью роста
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
3. О(n) - функции с линейной скоростью роста
4. О(n*log n) - функции с линейно–
логарифмической скоростью роста
5. О(n2) - функции с квадратичной скоростью роста
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
3. О(n) - функции с линейной скоростью роста
4. О(n*log n) - функции с линейно–
логарифмической скоростью роста
5. О(n2) - функции с квадратичной скоростью роста
6. О(2n) - функции с экспоненциальной скоростью
роста 
18
Базовые варианты О-нотаций:
1. О(1) - константная скорость роста
2. О(log n) - функции с логарифмической скоростью
роста
3. О(n) - функции с линейной скоростью роста
4. О(n*log n) - функции с линейно–
логарифмической скоростью роста
5. О(n2) - функции с квадратичной скоростью роста
6. О(2n) - функции с экспоненциальной скоростью
роста 
7. О(n!) - функции с факториальной степенью роста
19
и структуры данных
20
«Структура данных - программная единица,
позволяющая хранить и обрабатывать
множество однотипных и/или логически
связанных данных в вычислительной технике.»
Wikipedia
21
Основная дилемма при выборе алгоритма и
структур данных:
https://www.difference.wiki/ram-vs-processor
22
Под капотом V8
23
Элементы движка:
https://habr.com/company/jugru/blog/338930 Андрей Мелихов (Яндекс.Деньги)
23
Элементы движка:
https://habr.com/company/jugru/blog/338930 Андрей Мелихов (Яндекс.Деньги)
23
Элементы движка:
https://habr.com/company/jugru/blog/338930 Андрей Мелихов (Яндекс.Деньги)
23
Элементы движка:
https://habr.com/company/jugru/blog/338930 Андрей Мелихов (Яндекс.Деньги)
24
Чтобы помочь движку с оптимизациями, мы
можем:
25
При работе базового компилятора AoT:
26
Предпочитать мономорфные операторы
полиморфным
26
Предпочитать мономорфные операторы
полиморфным
function add(x, y) {
return x + y;
}
add(1, 2); // + внутри add() мономорфен
add("a", "b"); // + внутри add() становится
полиморфным
27
При работе JIT компилятора
28
var user = {
name: "Yuriy",
age: 31
};
28
var user = {
name: "Yuriy",
age: 31
};
28
var user = {
name: "Yuriy",
age: 31
};
<структура: string name, number age>
28
var user = {
name: "Yuriy",
age: 31
};
<структура: string name, number age>
Yuriy 31
28
var user = {
name: "Yuriy",
age: 31
};
<структура: string name, number age>
Yuriy 31
Vasya 28
28
var user = {
name: "Yuriy",
age: 31
};
<структура: string name, number age>
Yuriy 31
Vasya 28
Petya 26
29
user.isAdmin = true;
29
user.isAdmin = true;
29
user.isAdmin = true;
<структура: string name, number age>
Yuriy 31
Vasya 28
Petya 26
30https://habr.com/post/154537
30https://habr.com/post/154537
Инициализировать все объекты в
конструкторах, чтобы они как можно меньше
менялись в дальнейшем
30
Инициализировать свойства объекта в одном и
том же порядке
https://habr.com/post/154537
Инициализировать все объекты в
конструкторах, чтобы они как можно меньше
менялись в дальнейшем
31
Оптимизировать массивы:
https://habr.com/post/154537
31
Оптимизировать массивы:
- Не стоит заставлять массивы перепрыгивать из одной
категории в другую (из непрерывных представлений в
хэш-таблицы)
https://habr.com/post/154537
31
Оптимизировать массивы:
- Не стоит заставлять массивы перепрыгивать из одной
категории в другую (из непрерывных представлений в
хэш-таблицы)
- Используйте непрерывную нумерацию индексов,
начиная с 0 (в точности как в С)
https://habr.com/post/154537
31
Оптимизировать массивы:
- Не стоит заставлять массивы перепрыгивать из одной
категории в другую (из непрерывных представлений в
хэш-таблицы)
- Используйте непрерывную нумерацию индексов,
начиная с 0 (в точности как в С)
- Не храните не числовые значения в числовых
массивах
https://habr.com/post/154537
32
Как движок оптимизирует такой метод, как
sort?
33
Метод sort
https://github.com/trekhleb/javascript-algorithms
33
Метод sort
В V8 используется алгоритм Quicksort - один из самых
распространенных неустойчивых алгоритмов
внутренней сортировки со средней сложностью:
O(n*log n)
https://github.com/trekhleb/javascript-algorithms
33
Метод sort
В V8 используется алгоритм Quicksort - один из самых
распространенных неустойчивых алгоритмов
внутренней сортировки со средней сложностью:
O(n*log n)
Quicksort заменил собой пирамидальную сортировку
Heapsort, для улучшения производительности
https://github.com/trekhleb/javascript-algorithms
33
Метод sort
В V8 используется алгоритм Quicksort - один из самых
распространенных неустойчивых алгоритмов
внутренней сортировки со средней сложностью:
O(n*log n)
Quicksort заменил собой пирамидальную сортировку
Heapsort, для улучшения производительности
Но не везде выбор сортировки остановился именно на
Quicksort, например, в SpiderMonkey и Nitro (движок Firefox
и Safari) используется сортировка слиянием - Merge sort
https://github.com/trekhleb/javascript-algorithms
34
Таблица оценки алгоритмов сортировок:
35
Quicksort
35
Quicksort
35
Quicksort
36
Но что если взять худший сценарий выполнения
Quicksort?…
37
Худший сценарий Quicksort:
38
Мы получаем сложность О(n2)
39
Но в V8 выбран именно Quicksort
40
С течением времени реализация сортировки
внутри V8 обзавелась множеством различных
оптимизаций:
40
С течением времени реализация сортировки
внутри V8 обзавелась множеством различных
оптимизаций:
1. Изменился метод выбора опорного элемента
40
С течением времени реализация сортировки
внутри V8 обзавелась множеством различных
оптимизаций:
1. Изменился метод выбора опорного элемента
2. Появилась хвостовая рекурсия
40
С течением времени реализация сортировки
внутри V8 обзавелась множеством различных
оптимизаций:
1. Изменился метод выбора опорного элемента
2. Появилась хвостовая рекурсия
3. Изменился алгоритм работы на массивах малого
размера
41
Метод выбора опорного элемента:
https://habr.com/post/265079
41
Метод выбора опорного элемента:
https://habr.com/post/265079
Изначально выбор был случайным
41
Метод выбора опорного элемента:
https://habr.com/post/265079
Изначально выбор был случайным
Затем, был изменен на выбор медианы из трех (первый,
последний и серединный элемент)
41
Метод выбора опорного элемента:
https://habr.com/post/265079
Изначально выбор был случайным
Затем, был изменен на выбор медианы из трех (первый,
последний и серединный элемент)
В конечном итоге простой выбор медианы из
трех дополнился методом определения среднего
элемента для медианы на больших массивах (свыше
1000 элементов)
42
Метод опорного элемента был изменен на:
var GetThirdIndex = function(a, from, to) {
var t_array = [];
// Use both 'from' and 'to' to determine the pivot candidates.
var increment = 200 + ((to - from) & 15);
for (var i = from + 1, j = 0; i < to - 1; i += increment, j++) {
t_array[j] = [i, a[i]];
}
%_CallFunction(t_array, function(a, b) {
return %_CallFunction(UNDEFINED, a[1], b[1], comparefn);
}, ArraySort);
var third_index = t_array[t_array.length >> 1][0];
return third_index;
}
https://habr.com/post/265079
43
О хвостовой рекурсии
https://habr.com/post/265079
43
О хвостовой рекурсии
https://habr.com/post/265079
Проблема с двумя рекурсивными вызовами (на левую и
правую части массива) в том, что при неудачном
выборе опорного элемента глубина рекурсии будет
соизмерима с размером массива, что выливается в
оценку O(n) по памяти для худшего случая
43
О хвостовой рекурсии
https://habr.com/post/265079
Проблема с двумя рекурсивными вызовами (на левую и
правую части массива) в том, что при неудачном
выборе опорного элемента глубина рекурсии будет
соизмерима с размером массива, что выливается в
оценку O(n) по памяти для худшего случая
Решение: сортировка вызывается рекурсивно только
для меньшего подмассива, а сортировка большего
продолжается в основном цикле, что дает оценку
потребления памяти O(log n)
44
Алгоритмом работы на массивах малого
размера:
var InsertionSort = function InsertionSort(a, from, to) {
for (var i = from + 1; i < to; i++) {
var element = a[i];
for (var j = i - 1; j >= from; j--) {
var tmp = a[j];
var order = %_CallFunction(UNDEFINED, tmp, element, comparefn);
if (order > 0) {
a[j + 1] = tmp;
} else {
break;
}
}
a[j + 1] = element;
}
};
https://habr.com/post/265079
45
Таблица оценки алгоритмов сортировок:
46
РЕКУРСИЯ
vs
ЦИКЛ
function sumTo(n) {
var result = 0;
for (var i = 1; i <= n; i++) {
result += i;
}
return result;
}
function sumToRec(n) { // рекурсия
return n == 1 ? 1 : n + sumToRec(n - 1);
}
var timeLoop = performance.now();
for (var i = 1; i < 1000; i++) sumTo(1000); // цикл
timeLoop = performance.now() - timeLoop;
var timeRecursion = performance.now();
for (var i = 1; i < 1000; i++) sumToRec(1000); // рекурсия
timeRecursion = performance.now() - timeRecursion;
alert( "Разница в " + (timeRecursion / timeLoop) + " раз" );
47
48
Garbage Collector
49https://softwareengineeringdaily.com/2017/03/31/webassembly-with-brendan-eich/
50
Алгоритм GC - Mark and sweep:
50
Алгоритм GC - Mark and sweep:
Document Object Model
51
52
DOM - классический пример структуры данных
в Web
53
Методы работы с DOM-деревом
Операция Сложность Метод
Добавление О(1)
insertBefore, appendChild, append, prepend, after,
before
Удаление О(1) removeChild, remove, replaceWith
Поиск О(1)/O(n)
querySelector, querySelectorAll, getElementById,
getElementsByClassName
54
Поисковые методы get* и querySelector* внутри
устроены очень по-разному для работы с
DOM-деревом
55
var elems = document.getElementsByTagName('div');
alert( elems[0] );
alert( elems[995] );
alert( elems[500] );
alert( elems.length );
http://learn.javascript.ru/searching-elements-internals
55
var elems = document.getElementsByTagName('div');
alert( elems[0] );
alert( elems[995] );
alert( elems[500] );
alert( elems.length );
1. «Способ Firefox» (Firefox, IE)
http://learn.javascript.ru/searching-elements-internals
55
var elems = document.getElementsByTagName('div');
alert( elems[0] );
alert( elems[995] );
alert( elems[500] );
alert( elems.length );
1. «Способ Firefox» (Firefox, IE)
2. «Способ WebKit» (Chrome, Safari, Opera)
http://learn.javascript.ru/searching-elements-internals
REACT
vs
ANGULAR
vs
VUE
56
57
React
58
React
https://grfia.dlsi.ua.es/ml/algorithms/references/editsurvey_bille.pdf
58
React
Для перерисовки одного DOM-дерева в другое
потребуется алгоритм с оценкой - O(n3), где n - количество
элементов
https://grfia.dlsi.ua.es/ml/algorithms/references/editsurvey_bille.pdf
58
React
Для перерисовки одного DOM-дерева в другое
потребуется алгоритм с оценкой - O(n3), где n - количество
элементов
Так появился алгоритм Reconciliation и удалось добиться
оценки - O(n)
https://grfia.dlsi.ua.es/ml/algorithms/references/editsurvey_bille.pdf
58
React
Для перерисовки одного DOM-дерева в другое
потребуется алгоритм с оценкой - O(n3), где n - количество
элементов
Так появился алгоритм Reconciliation и удалось добиться
оценки - O(n)
https://grfia.dlsi.ua.es/ml/algorithms/references/editsurvey_bille.pdf
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
<li>Первый</li>
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
<li>Первый</li>
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
59
Дополнительная оптимизация по индексам
Старое дерево
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li>Первый</li>
<li>Второй</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
<li>Первый</li>
<li>Третий</li>
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
<li key=«key1»>1</li>
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
60
Дополнительная оптимизация по индексам
https://www.youtube.com/watch?v=nocJsLFPjNk Владимир Дашукевич
<li key=«key1»>1</li>
<li key=«key3»>3</li>
Хэш-таблица
КомпонентКлюч
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
key1
key2
key3
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Новое дерево Результат
<li key=«key1»>1</li>
<li key=«key2»>2</li>
<li key=«key3»>3</li>
Старое дерево
61
Архитектура Fiber
62https://www.youtube.com/watch?v=ZCuYPiUIONs Lin Clark (Mozilla)
63
Что изменилось:
- Reconciliation адаптирован в React Stack
- Вся работа разделена на волокна - fibers
(виртуальные стек-контейнеры)
- Взаимодействие с браузером через:
requestAnimationFrame и requestIdleCallback
- Появились фазы
- Созданы приоритеты и использована структура данных:
Очередь с приоритетами через связанный список
64
Упрощенная структура Fiber:
https://www.youtube.com/watch?v=ZCuYPiUIONs Lin Clark (Mozilla)
65
Фазы:
65
Фазы:
Render / Reconciliation phase - в ней Fiber строит
work-in-progress tree (может быть прервана)
65
Фазы:
Render / Reconciliation phase - в ней Fiber строит
work-in-progress tree (может быть прервана)
Commit phase - внесение изменений из предыдущей
стадии в DOM (эту стадию прервать не удастся)
66
Приоритеты:
0. NoWork - Нет приоритета
1. SynchronousPriority - Действие, которое необходимо
выполнить немедленно (пользовательский ввод)
2. TaskPriority - Обычная задача
3. AnimationPriority - Пользовательские анимации (все,
что приводит к изменению DOM-узлов)
4. HighPriority - Задачи с высоким приоритетом
(например: скроллинг)
5. LowPriority - Низкий приоритет (например:
перерисовка компонента с получением данных store)
6. OffscreenPriority - Перерисовка элементов, которые
не видны на экране сейчас.
66
Приоритеты:
0. NoWork - Нет приоритета
1. SynchronousPriority - Действие, которое необходимо
выполнить немедленно (пользовательский ввод)
2. TaskPriority - Обычная задача
3. AnimationPriority - Пользовательские анимации (все,
что приводит к изменению DOM-узлов)
4. HighPriority - Задачи с высоким приоритетом
(например: скроллинг)
5. LowPriority - Низкий приоритет (например:
перерисовка компонента с получением данных store)
6. OffscreenPriority - Перерисовка элементов, которые
не видны на экране сейчас.
67
Очередь с приоритетами
использует связанный список
Операция/Сложность Связанный список
Добавление элемента О(n)
Получение элемента О(1)
Поиск максимального элемента О(1)
68
Angular
69
V4-6 Pipeline
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
Template
Data
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
Template
Data
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
Template
Data
Angular
Interpreter
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
Template
Data
Angular
Interpreter
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
69
V4-6 Pipeline
Template
HTML
Template
Data
Angular
Interpreter
DOM
https://www.youtube.com/watch?v=jnp_ny4SOQE Kara Erickson
70
Ivy Project
https://github.com/benbraou/is-angular-ivy-ready
71
Ivy Pipeline
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
Template
Instructions
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
Template
Instructions
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
Template
Instructions
https://www.youtube.com/watch?v=jnp_ny4SOQE
Template
HTML
71
Ivy Pipeline
Template
Instructions
DOM
https://www.youtube.com/watch?v=jnp_ny4SOQE
72
Что изменилось:
72
Tree Shakable Features
Что изменилось:
72
Code splitting используя Static analysis
Tree Shakable Features
Что изменилось:
72
Code splitting используя Static analysis
Locality
Tree Shakable Features
Что изменилось:
72
Code splitting используя Static analysis
Locality
Tree Shakable Features
Incrementality
Что изменилось:
73
Tree Shakable Features
- Template syntax
- Dependency injection
- Content projection
- Structural directives
- Lifecycle hooks
- Pipes
- Queries
- Listeners
74https://github.com/robwormald/ivy-code-size
75https://www.youtube.com/watch?v=jnp_ny4SOQE
76
Vue
77
далекий 2016й год - появление Vue 2.0
https://medium.com/the-vue-point/vue-2-0-is-here-ef1f26acf4b8
78
…все тот же Snabbdom
https://github.com/snabbdom/snabbdom
79
Цикл Snabbdom
https://medium.com/@yelouafi/react-less-virtual-dom-with-snabbdom-functions-everywhere-53b672cb2fe3
80
Что в итоге?
81
81
Не всем всегда и сразу нужно знать алгоритмы
81
Не всем всегда и сразу нужно знать алгоритмы
JavaScript - уже не тот, все больше логики происходит
на клиенте, не говоря о NodeJS
81
Не всем всегда и сразу нужно знать алгоритмы
JavaScript - уже не тот, все больше логики происходит
на клиенте, не говоря о NodeJS
Алгоритмы и структуры данных - это скорее способ
организации мышления
81
Не всем всегда и сразу нужно знать алгоритмы
JavaScript - уже не тот, все больше логики происходит
на клиенте, не говоря о NodeJS
Алгоритмы и структуры данных - это скорее способ
организации мышления
Выгодно инвестировать в фундаментальные знания
82
Что почитать?
82
Что почитать?
82
Что почитать?
83
Шерстюк Юрий
yursherstyuk@gmail.com
Software engineer

More Related Content

What's hot

Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Alexey Paznikov
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
Alexey Paznikov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
Mikhail Kurnosov
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
Alexey Paznikov
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Mikhail Kurnosov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очередиMikhail Kurnosov
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
Alexey Paznikov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
Mikhail Kurnosov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
Mikhail Kurnosov
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Mikhail Kurnosov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
Mikhail Kurnosov
 

What's hot (20)

Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очереди
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 

Similar to Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM

20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
PyNSK
 
Simd
SimdSimd
Делаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх WebdriverДелаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх Webdriver
SQALab
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Yandex
 
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
corehard_by
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
2020 03-31-lection
2020 03-31-lection2020 03-31-lection
2020 03-31-lection
Olga Leshchenko
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данных
Sergey Vasilyev
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Ontico
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Борзунов Александр, Cpmoptimize
Борзунов Александр, CpmoptimizeБорзунов Александр, Cpmoptimize
Борзунов Александр, Cpmoptimize
Darya Zubova
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Alexander Borzunov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
Andrey Karpov
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
Ontico
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 

Similar to Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM (20)

20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
Simd
SimdSimd
Simd
 
Делаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх WebdriverДелаем кроссбраузерные тесты поверх Webdriver
Делаем кроссбраузерные тесты поверх Webdriver
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
2020 03-31-lection
2020 03-31-lection2020 03-31-lection
2020 03-31-lection
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данных
 
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
 
лекция 3
лекция 3лекция 3
лекция 3
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Борзунов Александр, Cpmoptimize
Борзунов Александр, CpmoptimizeБорзунов Александр, Cpmoptimize
Борзунов Александр, Cpmoptimize
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 

More from OdessaJS Conf

'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
OdessaJS Conf
 
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
OdessaJS Conf
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
OdessaJS Conf
 
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
OdessaJS Conf
 
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
OdessaJS Conf
 
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
OdessaJS Conf
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
OdessaJS Conf
 
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
OdessaJS Conf
 
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні..."NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
OdessaJS Conf
 
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
OdessaJS Conf
 
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
OdessaJS Conf
 
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
OdessaJS Conf
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
OdessaJS Conf
 
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 'MICROFRONTENDS WITH REACT' by Liliia Karpenko 'MICROFRONTENDS WITH REACT' by Liliia Karpenko
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
OdessaJS Conf
 
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
OdessaJS Conf
 
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
OdessaJS Conf
 
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
OdessaJS Conf
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
OdessaJS Conf
 
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
OdessaJS Conf
 
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
OdessaJS Conf
 

More from OdessaJS Conf (20)

'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
 
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
 
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
 
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
 
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
 
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
 
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні..."NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
 
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
 
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
 
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
 
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 'MICROFRONTENDS WITH REACT' by Liliia Karpenko 'MICROFRONTENDS WITH REACT' by Liliia Karpenko
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
 
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
 
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
 
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
 
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
 

Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM