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.

3

Share

Download to read offline

Классическое программирование для фронтендеров

Download to read offline

«Классическое программирование для фронтендеров»,
Игорь Алексеенко (HTML Academy)
Зачем фронтендерам изучать алгоритмы и структуры данных.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Классическое программирование для фронтендеров

  1. 1. !!"!""🌲🌲🌲🌲🌲🌲👍 битовая карта деревья хорошо Игорь Алексеенко училка в HTML Academy
  2. 2. Многие современные проблемы фронтендеров были решены 
 ещё в 80-х 😎 📼 💾☎👾 🚀 Просто мы об этом не знаем 👶 👶 👶 2
  3. 3. То, что мы разрабатываем, 
 скорее, уже не сайты, а RIA 3
  4. 4. RIA — (исландск. Rich Internet Applica8on, насыщенное интернет- приложение), иногда IIA — Installable Internet Application — сайт, обладающий свойствами настольного приложения 4
  5. 5. Законы развития ПО 5 1960 1970 1980 1990 2000 2010 Закон Мура Закон Вирта (закон Пейджа)
  6. 6. Законы развития ПО 5 1960 1970 1980 1990 2000 2010 Закон Мура Закон Вирта (закон Пейджа) 1965
 производительность
 компьютеров удваивается
 примерно каждые
 два года
  7. 7. Законы развития ПО 5 1960 1970 1980 1990 2000 2010 Закон Мура Закон Вирта (закон Пейджа) 1965
 производительность
 компьютеров удваивается
 примерно каждые
 два года ~1995
 медлительность программ
 возрастает быстрее чем
 производительность
 компьютеров
  8. 8. Законы развития ПО 5 1960 1970 1980 1990 2000 2010 Закон Мура Закон Вирта (закон Пейджа) 1965
 производительность
 компьютеров удваивается
 примерно каждые
 два года ~1995
 медлительность программ
 возрастает быстрее чем
 производительность
 компьютеров System 1 Windows 1.0
  9. 9. Законы развития ПО 5 1960 1970 1980 1990 2000 2010 Закон Мура Закон Вирта (закон Пейджа) 1965
 производительность
 компьютеров удваивается
 примерно каждые
 два года ~1995
 медлительность программ
 возрастает быстрее чем
 производительность
 компьютеров Решения, придуманные в 80-х оптимизированы для выполнения на слабых компьютерах, поэтому в современном контексте будут работать очень эффективноSystem 1 Windows 1.0
  10. 10. Компонента курильщика 🚬 Интерактивная демонстрация 6
  11. 11. Битовые карты 🏏🂡🃁 7
  12. 12. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!"
  13. 13. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 012345
  14. 14. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 202122232425
  15. 15. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632
  16. 16. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632 1008160 ++ + + +
  17. 17. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632 =251008160 ++ + + +
  18. 18. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632
  19. 19. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632 "!!!"!
  20. 20. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632 "!!!"! 0200032 ++ + + +
  21. 21. Двоичная запись 8 В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку 
 в степени номера разряда !""!!" 12481632 "!!!"! 0200032 ++ + + + =34
  22. 22. Битовые карты — (яп. — bitmap) они же битовые массивы (кор. — bitset, bitarray) последовательности бит, которые кодируют не степени двойки, а любую другую информацию. Хранятся в виде обычных чисел 9
  23. 23. Битовые карты 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  24. 24. Битовые карты • IP-адрес
 192.168.1.1 / 255.255.255.0 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  25. 25. Битовые карты • IP-адрес
 192.168.1.1 / 255.255.255.0 • цвет 
 #FACE8D 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  26. 26. Битовые карты • IP-адрес
 192.168.1.1 / 255.255.255.0 • цвет 
 #FACE8D • права пользователя
 chmod -R 777 . 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  27. 27. Битовые карты • IP-адрес
 192.168.1.1 / 255.255.255.0 • цвет 
 #FACE8D • права пользователя
 chmod -R 777 . • карта уровня в игре или пиксели изображения 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  28. 28. Битовые карты • IP-адрес
 192.168.1.1 / 255.255.255.0 • цвет 
 #FACE8D • права пользователя
 chmod -R 777 . • карта уровня в игре или пиксели изображения • состояние UX-компоненты 10 Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных
  29. 29. Интерактивная демонстрация. Кодирование состояний в битах 11 Компонента здорового человека 🚭
  30. 30. Битовые операции — логические операции над цепочками битов, в которых биты выступают как значения true или false 12
  31. 31. Побитовое «или» 13 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний 010
 OR 100
 0
  32. 32. Побитовое «или» 13 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний 010
 OR 100
 0
  33. 33. Побитовое «или» 13 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний 010
 OR 100
 10
  34. 34. Побитовое «или» 13 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний 010
 OR 100
 110
  35. 35. Побитовое «или» 14 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний
  36. 36. Побитовое «или» 14 Складывает переданные значения и сохраняет включенные биты обоих операторов. Идеально подходит для сложения нескольких состояний 010
 OR 100
 110
  37. 37. 1010
 AND 1100
 0 Побитовое «и» 15 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  38. 38. Побитовое «и» 15 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 1100
 0
  39. 39. Побитовое «и» 15 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 1100
 00
  40. 40. Побитовое «и» 15 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 1100
 000
  41. 41. Побитовое «и» 15 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 1100
 1000
  42. 42. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  43. 43. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  44. 44. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  45. 45. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  46. 46. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 0010
 = 0010
  47. 47. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния 1010
 AND 0100
 = 0000
  48. 48. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  49. 49. Побитовое «и» 16 Сохраняет только те биты, которые были включены в обоих операндах. Идеально подходит для проверки состояния
  50. 50. Компонента здорового человека 🚭 Интерактивная демонстрация. Продолжение 17
  51. 51. Декларативный стиль Мы описываем не последовательность шагов (императивный стиль), а реакцию на изменение состояния 18
  52. 52. Полученный код содержит всего пять (одну) управляющих строк. Остальной код — статические словари. Вне зависимости от размеров словарей (количества состояний) размер управляющего кода меняться не будет 19
  53. 53. Использование состояний для описания поведения 20
  54. 54. Описание поведения В качестве значений в словарях можно использовать не только обычные значения, но и функции. В этом случае можно описывать поведение каждого состояния независимо
  55. 55. var Direction = {
 RIGHT: 0x01
 };
 
 var DirectionBehaviour = {
 0x01: function(character) {
 return Object.assign({
 left: character.left + character.hSpeed
 }, character);
 }
 ]); Описание поведения В качестве значений в словарях можно использовать не только обычные значения, но и функции. В этом случае можно описывать поведение каждого состояния независимо
  56. 56. var Direction = {
 RIGHT: 0x01, TOP: 0x02
 };
 
 var DirectionBehaviour = {
 0x01: function(character) {},
 0x02: function(character) {} }; Описание поведения В качестве значений в словарях можно использовать не только обычные значения, но и функции. В этом случае можно описывать поведение каждого состояния независимо
  57. 57. Даже Redux! 24
  58. 58. Даже Redux! Можно использовать битовые маски как параметр type для управляющих объектов action. Так, за одно обращение к хранилищу можно делать несколько операций с данными
  59. 59. const ActionType = {
 UPDATE_1: 0x01, UPDATE_2: 0x02
 };
 
 store.dispatch({
 type: ActionType.UPDATE_1 | ActionType.UPDATE_2
 }); Даже Redux! Можно использовать битовые маски как параметр type для управляющих объектов action. Так, за одно обращение к хранилищу можно делать несколько операций с данными
  60. 60. И кроме этого есть ещё 26
  61. 61. И кроме этого есть ещё • исключающие или XOR, ^
 используется для переключения состояния (toggle) 26
  62. 62. И кроме этого есть ещё • исключающие или XOR, ^
 используется для переключения состояния (toggle) • побитовый сдвиг влево << 26
  63. 63. И кроме этого есть ещё • исключающие или XOR, ^
 используется для переключения состояния (toggle) • побитовый сдвиг влево << • побитовый сдвиг вправо >> 26
  64. 64. И кроме этого есть ещё • исключающие или XOR, ^
 используется для переключения состояния (toggle) • побитовый сдвиг влево << • побитовый сдвиг вправо >> • сдвиг вправо с заполнением нулями >>> 26
  65. 65. И кроме этого есть ещё • исключающие или XOR, ^
 используется для переключения состояния (toggle) • побитовый сдвиг влево << • побитовый сдвиг вправо >> • сдвиг вправо с заполнением нулями >>> • битовые маски
 когда одно состояние хранится в нескольких соседних битах используются маски, которые показывают единицами, в какие именно биты состояние записано 
 (IP-адрес и маска подсети) 26
  66. 66. Зависимости в форме 27
  67. 67. 🌳 Деревья 28
  68. 68. 🌳 Деревья 29 Связанная структура данных, состоящая из вложенных друг в друга повторяющихся узлов. Самый наглядный пример, для фронтенд-разработчика — DOM-дерево document head body #layoutmeta title aside main footer
  69. 69. 🌳 Деревья 29 Связанная структура данных, состоящая из вложенных друг в друга повторяющихся узлов. Самый наглядный пример, для фронтенд-разработчика — DOM-дерево узел document head body #layoutmeta title aside main footer
  70. 70. 🌳 Деревья 29 Связанная структура данных, состоящая из вложенных друг в друга повторяющихся узлов. Самый наглядный пример, для фронтенд-разработчика — DOM-дерево корень узел document head body #layoutmeta title aside main footer
  71. 71. 🌳 Деревья 29 Связанная структура данных, состоящая из вложенных друг в друга повторяющихся узлов. Самый наглядный пример, для фронтенд-разработчика — DOM-дерево корень узел потомки document head body #layoutmeta title aside main footer
  72. 72. 🌳 Деревья 29 Связанная структура данных, состоящая из вложенных друг в друга повторяющихся узлов. Самый наглядный пример, для фронтенд-разработчика — DOM-дерево корень узел лист потомки document head body #layoutmeta title aside main footer
  73. 73. 🌳 Деревья Интерактивная демонстрация. Использование деревьев для описания зависимостей в форме 30
  74. 74. 🚶🌳 Обход дерева Какими способами можно обходить дерево и на что может повлиять изменение способа обхода 31
  75. 75. Деревья 32 document head body #layoutmeta title aside main footer
  76. 76. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева:
  77. 77. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева: • DFS (поиск в глубину)
  78. 78. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева: • DFS (поиск в глубину) • прямой
  79. 79. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева: • DFS (поиск в глубину) • прямой • обратный
  80. 80. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева: • DFS (поиск в глубину) • прямой • обратный • симметричный
  81. 81. Деревья 32 document head body #layoutmeta title aside main footer Существует несколько способов перебора элементов дерева: • DFS (поиск в глубину) • прямой • обратный • симметричный • BFS (поиск в ширину)
  82. 82. 33
  83. 83. Прямой поиск в глубину (сербохорв. — Depth-first search, DFS) если у узла есть потомки, посещаются сначала они, а только потом соседний узел (всегда идём до самого конца) 34
  84. 84. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer
  85. 85. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document document
  86. 86. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document headdocument head
  87. 87. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta document head meta
  88. 88. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title document head meta title
  89. 89. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title body document head meta title body
  90. 90. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title body #layout document head meta title body #layout
  91. 91. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title body #layout aside document head meta title body #layout aside
  92. 92. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title body #layout aside main document head meta title body #layout aside main
  93. 93. Прямой обход в глубину 35 Сначала посещается узел, а потом его потомки document head body #layoutmeta title aside main footer document head meta title body #layout aside main footer document head meta title body #layout aside main footer
  94. 94. 36
  95. 95. 36
  96. 96. 36
  97. 97. 36
  98. 98. 36
  99. 99. 36
  100. 100. 36
  101. 101. 36
  102. 102. 36
  103. 103. Поиск в ширину (древнеарамейск. Breadth-first search, BFS) узлы посещаются по уровням, будто срезаются слои с торта (смотрим по верхам) 37
  104. 104. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer
  105. 105. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document document
  106. 106. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document headdocument head
  107. 107. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body document head body
  108. 108. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta document head meta body
  109. 109. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta title document head meta title body
  110. 110. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta title #layout document head meta title body #layout
  111. 111. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta title #layout aside document head meta title body #layout aside
  112. 112. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta title #layout aside main document head meta title body #layout aside main
  113. 113. Обход в ширину 38 Сначала посещаются все узлы на уровне, потом их потомки и так до самого низа document head body #layoutmeta title aside main footer document head body meta title #layout aside main footer document head meta title body #layout aside main footer
  114. 114. 39
  115. 115. 39
  116. 116. 39
  117. 117. 39
  118. 118. 39
  119. 119. 39
  120. 120. 39
  121. 121. 39
  122. 122. 39
  123. 123. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS)
  124. 124. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS)
  125. 125. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS)
  126. 126. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS)
  127. 127. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS)
  128. 128. «Лёгкий компьютер» в играх 40 Обходит дерево сверху вниз и выбирает варианты, в которых не проиграет в ближайшие несколько шагов (BFS) — Лошадью ходи,
 век воли не видать!
  129. 129. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS)
  130. 130. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS)
  131. 131. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS)
  132. 132. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS) — Ботвинник 
 сдавался!
  133. 133. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS) — Ботвинник 
 сдавался!
  134. 134. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS) — Ботвинник 
 сдавался!
  135. 135. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS) — Ботвинник 
 сдавался!
  136. 136. «Сложный компьютер» в играх 41 Обходит дерево как можно глубже и выбирает выигрышные варианты (DFS) — Так-так, вот тут у меня
 больше шансов на победу — Ботвинник 
 сдавался!
  137. 137. ☀🔦 Анализ рынка разработки Статистика требований к разработчикам на основе вакансий «Моего Круга» с помощью библиотеки d3.js 42
  138. 138. Дерево требований к разработчикам 43 Листьями являются конкретные технологии, а узлами — группы умения сервер контроль версийклиент верстка less scss ... ...библиотеки AngularReact
  139. 139. 44
  140. 140. 🌳 Преимущества деревьев 45
  141. 141. 🌳 Преимущества деревьев • сохраняются и передаются в виде строковых данных 45
  142. 142. 🌳 Преимущества деревьев • сохраняются и передаются в виде строковых данных • легко читаются 45
  143. 143. 🌳 Преимущества деревьев • сохраняются и передаются в виде строковых данных • легко читаются • быстро выполняются (нативный объект JS) 45
  144. 144. 🌳 Преимущества деревьев • сохраняются и передаются в виде строковых данных • легко читаются • быстро выполняются (нативный объект JS) • не имеют чёткого формата описания, поэтому идеально подстраиваются под задачу 45
  145. 145. Ищите решения, а не инструменты Через 20 лет не будет ни Бэйбеля, ни Реакта, ни Вебпака, ни Джаваскрипта. А деревья и битовые карты — будут 46
  146. 146. Что поизучать 47
  147. 147. Что поизучать • github.com/htmlacademy/bitset.js 
 библиотека от HTML Academy для работы с битовыми массивами в JS — обёртки для добавления, удаления, проверки и получения объектов с состоянием 47
  148. 148. Что поизучать • github.com/htmlacademy/bitset.js 
 библиотека от HTML Academy для работы с битовыми массивами в JS — обёртки для добавления, удаления, проверки и получения объектов с состоянием • o0.github.io/trees
 интерактивные демки, примеры для разных областей применения, больше теории, исходники 47
  149. 149. Что поизучать • github.com/htmlacademy/bitset.js 
 библиотека от HTML Academy для работы с битовыми массивами в JS — обёртки для добавления, удаления, проверки и получения объектов с состоянием • o0.github.io/trees
 интерактивные демки, примеры для разных областей применения, больше теории, исходники • github.com/thejameskyle/itsy-bitsy-data-structures
 репозиторий, с интересным и подробным рассказом про алгоритмы и структуры данных на JS 47
  150. 150. 🖖— Спасибо!
  151. 151. tutors@htmlacademy.ru Наставничество — отличный способ найти себе в команду новичка и воспитать его так, как считаешь должным на готовой продуманной инфраструктуре или просто поделиться опытом 49
  • jaybekster

    Mar. 20, 2017
  • EduardKolenov

    Nov. 20, 2016
  • zandrdewhite

    Oct. 17, 2016

«Классическое программирование для фронтендеров», Игорь Алексеенко (HTML Academy) Зачем фронтендерам изучать алгоритмы и структуры данных.

Views

Total views

8,445

On Slideshare

0

From embeds

0

Number of embeds

6,810

Actions

Downloads

31

Shares

0

Comments

0

Likes

3

×