Общее оглавление курса тут: Fundamentals.md
- 00:00:00 Введение
- 00:02:21 Что такое программирование?
- 00:05:55 Связанные понятия
- 00:06:43 Основы программной инженерии
- 00:11:42 Предсказуемые вычисления
- 00:14:36 Моделирование
- 00:14:52 Классификация моделей
- 00:17:33 Схемы моделирования
- 00:22:23 Парадигмы программирования
- 00:23:16 Императивное и функциональное программирование
- 00:28:25 Неструктурное программирование
- 00:30:01 Структурное программирование
- 00:30:46 Процедурное программирование
- 00:31:18 Объектно-ориетированное программирование
- 00:31:48 Прототипно-ориетированное программирование
- 00:32:14 Функциональное программирование
- 00:32:48 Узконаправленное программирование
- 00:33:44 Техники и технологии
- 00:36:55 Реактивное программирование и Событийно-ориентированное
- 00:38:16 Функционально-реактивное программирование
- 00:38:39 Модель акторов
- 00:39:49 Метапрограммирование
- 00:43:09 Системное и прикладное программирование
- 00:44:25 Задачи программной инженерии
- 00:50:46 Как преодолеть сложность
- 00:52:16 Данные и логика
- 00:57:49 Разработка программного обеспечения
- 01:04:50 Подход к разработке
- 01:06:04 Гибридная разработка
- 01:07:10 Принцип NIH
- 01:09:12 Классификация приложений по месту запуска
- 01:12:17 Схемы и примеры
- 0:00:02 лекция о базовых понятиях для начинающих
- 0:01:43 что-то уже знаете / слышали
- 0:04:50 терминология важна
- 0:05:45 инструкция или оператор / Statement
- 0:07:23 синтаксис / Syntax
- 0:09:21 почти все группы операторов / Statements
- 0:13:27 операция
- 0:14:09 команда
- 0:15:03 директива
- 0:16:59 выражение / Expression
- 0:20:53 значение / Value
- 0:22:28 тип / Type
- 0:27:22 литерал / Literal
- 0:28:46 скаляр / Scalar, Primitive, Atomic value
- 0:31:02 ссылка / Reference
- 0:34:05 идентификатор / Identifier
- 0:37:31 переменная / Variable
- 0:40:08 присвоение / Assignment
- 0:41:29 константа / Constant
- 0:43:16 структурные типы / Composed types
- 0:44:03 флаг / Flag
- 0:45:09 перечисляемый тип
- 0:46:02 алгоритм / Algorithm
- 0:47:40 программа / Program
- 0:49:01 инженерия / Engineering
- 0:50:42 инженерия программного обеспечения / Software engineering
- 0:52:03 программирование / Programming
- 0:53:31 кодирование / Coding
- 0:54:15 разработка программного обеспечения / Software development
- 0:58:49 процедура, функция, подпрограмма, метод: различия
- 0:59:15 блок кода / Block of code
- 1:01:58 процедура или подпрограмма / Procedure or Subroutine
- 1:05:18 функция / Function
- 1:08:06 сигнатура функции / Function signature
- 1:09:16 метод / Method
- 1:10:37 цикл / Loop
- 1:10:52 итерирование
- 1:11:40 функциональное программирование
- 1:13:05 условие / Conditional statements / ветвление
- 1:14:54 парадигма программирования / Programming paradigm
- 0:15 - вопрос по операционным системам
- 3:35 - какой язык посоветуете из функционального программирования
- 4:40 - время нужное для прохождения курса
- 7:25 - учебники по JS и туториал
- 11:00 - экзамены, сертификат для студентов из других стран
- 12:45 - как будет проходить экзамен
- 14:55 - сколько времени нужно уделять в неделю или в день
- 17:35 - куда задавать вопросы
- 18:56 - структура курса
- 22:30 - контроль решения задач
- 23:35 - сферы применения Node.js
- 24:22 - возможно ли посещать курс лично
- 26:23 - актуальность изучения С++ и Rust
- 27:48 - стану ли я программистом пройдя курс
- 28:10 - какой стандарт JS используется в курсе
- 28:35 - откуда начинать курс
- 29:20 - как посещать старшую группу
- 31:45 - об основах вёрстки и популярных фреймворках
- 33:03 - обязательно ли использовать фреймворки
- 36:15 - почему столь немногим удаётся сдать экзамен
- 36:50 - проверка задач для допуска к экзамену и их уровень сложности
- 37:55 - теорeтические вопросы на экзамене, пример
- 39:35 - знание математики
- 43:10 - сложные вопросы CS в курсе
- 46:00 - как происходит проверка задач для допуска к экзамену
- 0:25 - какую IDE использует Тимур
- 1:30 - каким IDE могут пользоваться студенты
- 1:50 - репозиторий со списком необходимых инструментов
- 11:23 - о работе с репозиторием в Github
- 14:05 - о системе Continuous Integration (CI)
- 17:08 - обзор Pull Requests в репозитории
- 25:40 - процесс мерджа Pull Request
- 38:25 - публикация новой версии пакета
- 55:35 - как использовать библиотеку в своем пакете
- 1:14:40 - обзор репозиториев Тимура, Metarhia и HowProgrammingWorks
- 00:00:00 Введение
- 00:03:02 Идентификаторы (identifiers: const, let, arguments, object property)
- 00:14:41 Циклы (loops)
- 00:22:10 Функции (functions)
- 00:30:35 Объекты (objects)
- 00:33:34 Итерирование по массиву ( for ( ... of ... { } )
- 00:39:01 Итерирование по объекту ( for ( ... in ... { } )
- 00:42:28 Синтаксис простого кода
- 00:55:21 Синтаксис функции
- 01:05:38 Синтаксис класса
- 01:09:10 Синтаксис расширения класса с помощью функции
- 01:14:59 Идентификаторы в виде символов unicode
- 01:17:15 Синтаксис комментариев
- 01:18:13 Способы объявления переменных
- 01:18:24 Скалярные типы переменных (string, number, boolean)
- 01:19:12 Структурные/ссылочные типы переменных (function, array, object)
- 00:01:34 Number (integer / float)
- 00:02:11 String
- 00:02:15 Boolean
- 00:02:16 Object
- 00:03:08 Array
- 00:04:20 Метод array.push
- 00:04:31 Метод array.unshift
- 00:04:50 Метод array.shift
- 00:05:17 Метод array.pop
- 00:05:55 Оператор typeof
- 00:08:33 Метод Array.isArray
- 00:10:06 Оператор instanceof
- 00:10:48 Undefined
- 00:11:12 Null
- 00:11:55 NaN
- 00:14:18 Infinity
- 00:14:48 Тернарный оператор
- 00:16:15 Функция paseInt
- 00:24:23 Функция paseFloat
- 00:27:15 Удаление переменных
- 00:33:25 Побитовые операторы (Bitwise operators)
- 00:34:38 Побитовые операции
- 00:44:30 BigInt
- 00:56:30 Операторы сравнения
- 01:01:20 Очередность операторов (Operator precedence)
- 01:13:25 Оператор Switch
- 0:45 - разница между обычными функциями и стрелочными
- 10:35 - рассматриваем отличия на примерах кода
- 16:15 - поле функционального типа и метод
- 18:15 - хеш-таблицы
- 19:55 - поднятие (hoisting)
- 21:45 - среда разработки Тимура
- 23:30 - что такое говнокод
- 24:32 - декомпозиция
- 26:35 - что такое Node.JS
- 29:54 - скорость программ и как мы её повышаем
- 30:34 - приложения для мобилок на Node.JS
- 32:25 - для чего нужен 'use strict'
- 33:35 - сервер в интернете для запуска Node.JS
- 00:01 - об программе для авто проверки тестов
- 01:22 - как выполнять задания (лабораторные)
- 08:44 - как запускать тесты
- 09:30 - пример выполнения задания 2-by-value.js
- 15:05 - как выглядят автоматические тесты
- 18:35 - пример выполнения задания 3-by-reference.js
- 28:20 - как отправлять готовые задания
- 37:55 - обзор задания и тестов задания 4-count-types.js
- 42:20 - об eslint
- 0:00:01 введение
- 0:01:45 процедура или подпрограмма / Procedure or Subroutine
- 0:06:05 функция / Function
- 0:09:27 стек вызовов / Call Stack
- 0:18:26 Mixed Solution
- 0:21:42 принцип LIFO
- 0:22:09 куча и стек / Heap and Stack
- 0:25:55 рекурсия / Recursion
- 0:27:15 коллекция / Collection
- 0:27:51 массив / Array
- 0:28:18 отладка / Debug
- 0:28:23 компонент / Component
- 0:29:37 модуль / Module
- 0:30:16 модульность / Modularity
- 0:33:52 ограничения
- 0:31:50 заглушки / Stubs
- 0:36:19 библиотека / Library
- 0:37:13 импорт и экспорт идентификаторов / Import and Export Identifiers
- 0:41:30 новый синтаксис
- 0:45:22 объект или экземпляр / Object or Instance
- 0:47:08 2 способа задания Instance
- 0:47:47 класс / Class
- 0:49:16 примеры
- 0:51:30 инстанциирование / Instantiation
- 0:52:59 примеры
- 0:54:59 область видимости / Scope
- 0:57:05 лексический(ое) контекст (окружение) / Lexical environment
- 0:58:19 объектный контекст функции / Object context: this
- 1:00:33 глобальный контекст / Global context
- 1:04:35 монады
- 1:09:00 парадигмы программирования
- 1:12:05 лямбда-функция
- 1:12:28 фрейм
- 1:14:46 строка в свойстве объекта
- 1:16:21 класс и объект
- 1:16:47 класс и прототип
- 1:17:37 аллокирование значений в куче и стеке
- 1:18:43 сборщик мусора
- 1:20:29 терминология на английском и русском
- 00:00:00 Введение
- 00:11:22 Функция объявление (Declaration)
- 00:12:46 Функция выражение (Expression)
- 00:16:07 Лямбда-выражение (Lambda expression) или функция-стрелка (Arrow function)
- 00:16:43 Лямбда-функция (Lambda function)
- 00:18:45 Область видимости (Scope)
- 00:25:00 Функции, как абстракции
- 00:26:43 Методы функции (name, length, toString( ) )
- 00:31:26 Значения по умолчанию у функции
- 00:36:46 Rest-оператор (...args)
- 00:41:49 Способ определения функции, через new Function
- 00:44:46 Функции внутри объекта
- 00:50:42 Обращение к полям объекта из привязанной функции, через this
- 00:55:24 История синтаксиса создания контекстов, через самовызывающиеся функции ( IIFE)
- 00:58:30 Методы функции, наследуемой от объекта (call, apply)
- 01:00:53 Комментирование функций
- 01:01:27 Задание декомпозиции функции
- 01:04:24 Замыкание: context
- 01:08:41 Замыкание: chainning
- 01:11:55 Замыкание: summator
- 01:14:16 Замыкание: recursion
- 00:00:00 Объекты
- 00:11:01 Массивы
- 00:13:29 Cериализация объекта
- 00:15:46 Cериализация массива
- 00:19:20 Методы array
- 00:20:22 Циклы
- 00:21:16 Цикл for-in-object
- 00:22:02 Цикл for-in-array
- 00:24:10 Цикл for-of-array
- 00:25:05 Метод array.forEach
- 00:29:10 Метод array.map
- 00:33:59 Итерация матрицы, через for-of-array
- 00:38:38 Итерация матрицы, через array.forEach
- 00:39:22 Итерация матрицы, через for-in-array
- 00:39:45 Метод array.reduce
- 00:44:39 Методы объекта
- 00:46:38 Прототип
- 00:53:32 Класс
- 00:56:04 Связывание методов с объектом, при помощи замыкания
- 01:00:08 Связывание методов с объектом, при помощи метода bind
- 01:03:19 Пример абстракции, при помощи замыкания
- 01:11:05 Пример абстракции, при помощи прототипа
- 01:12:30 Пример абстракции, при помощи класса
- 01:13:08 Наследование через синтаксис прототипов
- 01:18:50 Наследование через синтаксис классов
- 01:21:05 Связывание объекта с методом класса при помощи прототипа
- 01:23:52 Присваивание методов внутри конструктора, при прототипном подходе
- 01:25:10 Get/Set класса
- 01:27:00 Пример
- 0:00:02 обзорная лекция о классификации ЯП
- 0:00:53 типизация: статическая / динамическая
- 0:07:37 сильная / слабая || строгая / нестрогая
- 0:10:08 явная / неявная
- 0:13:58 утиная
- 0:18:26 протоколы
- 0:20:36 ниже и ближе к машине / выше и ближе к человеку
- 0:32:20 сравнение asm и машинного кода
- 0:39:38 сравнение asm и js
- 0:42:47 функции и типы 1 класса
- 0:44:39 распространённость
- 0:45:47 скорость, читаемость
- 0:48:21 владение правами / влияние на ЯП
- 0:51:13 специализация
- 0:53:13 наследственность
- 0:56:33 инструментарий
- 0:58:20 поддержка
- 1:02:58 скорость развития
- 1:04:12 системное программирование
- 1:05:51 оконные приложения
- 1:06:27 встраиваемые системы и автоматизация
- 1:07:02 базы данных
- 1:07:45 сетевые сервера
- 1:09:03 вычисления
- 1:10:45 ИИ
- 1:11:52 параллельные вычисления, веб
- 1:12:38 скрипты
- 1:13:36 тестирование
- 1:14:20 мобильные платформы
- 1:16:10 игры, графика
- 0:00:02 введение
- 0:00:41 разделение ЯП по модели работы с памятью
- 0:08:32 почему надо использовать const, реже let и избегать var
- 0:17:43 + и - утиной типизации
- 0:30:03 примеры ЯП с разной типизацией
- 0:32:29 чем выше ЯП, тем он медленнее?
- 0:34:15 почему бы js не компилировать напрямую в машинный код
- 0:35:37 скорость и производительность ЯП
- 0:40:47 константы и ключевое слово const
- 0:45:48 зачем учить именно js
- 0:59:28 typescript - js с типами? Развитость инфраструктуры ts
- 00:00:00 Замыкание
- 00:04:54 Лямбда- функция
- 00:06:06 Метод bind
- 00:08:30 Абстрагированный пример функции
- 00:13:42 Абстрагированный пример функции (расширение)
- 00:15:47 Неправильная реализация каррирования
- 00:22:22 Правильная реализация каррирования
- 00:28:54 Правильная реализация каррирования (расширение)
- 00:31:41 Функциональные абстракции (superposition)
- 00:38:02 Функциональные абстракции, с сохранением выражений (composition)
- 00:45:05 Композиция с 2 функциями
- 00:46:05 Композиция с n - функциями, при помощи метода reduce
- 00:51:25 Композиция с n - функциями, при помощи цикла
- 00:54:29 Композиция с n - функциями, при помощи рекурсии
- 00:57:40 Композиция асинхронных функций
- 01:01:27 Обобщение
- 00:00:00 Определение
- 00:02:03 Математическая функция
- 00:05:57 Функция обратного вызова (callback)
- 00:09:33 Замыкание
- 00:10:51 Цепочка вызовов
- 00:12:40 Сохранение кэша с помощью замыкания
- 00:18:29 Добавление функции поведение логирования
- 00:21:45 Обобщение
- 00:22:45 Сallback
- 00:25:32 Сallback асинхронной функции считывание файла
- 00:28:36 Сallback именованный
- 00:33:01 Сallback-timer
- 00:36:20 Сallback-timer-curry
- 00:38:59 Listener
- 00:41:10 Listener-timer
- 00:46:59 Event
- 00:53:45 Event-imitter
- 00:57:48 Deferred object (отложенный объект)
- 01:01:31 Errors
- 00:00:00 Unicode строки
- 00:12:07 Обычные строки
- 00:17:03 Методы строки
- 00:23:09 Модификация строк
- 00:28:00 Получение подстроки в строке
- 00:34:45 Polyffill
- 00:37:54 Методы padEnd и padStart
- 00:40:45 Добавление функции для шаблонизирующей строки
- 00:44:27 Пример
- 00:48:29 Библиотека Concolor.js
- 00:00:00 Введение
- 00:10:30 Синтаксис регулярных выражений
- 00:12:54 Задание регулярного выражения
- 00:30:38 RegExp
- 00:38:11 Метод match
- 00:46:48 Метод split
- 00:49:28 Метод replace
- 00:50:43 Метод replace с аргументом функции
- 00:53:28 Метод search
- 00:55:05 Обобщение
- 00:00:00 Синхронная функция-обертка
- 00:02:55 Синхронная универсальная функция-обертка
- 00:08:28 Асинхронная универсальная функция-обертка
- 00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)
- 00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)
- 00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)
- 00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)
- 00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)
- 00:32:29 Функция-обертка с методами timeout, limit, cancel
- 00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)
- 00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)
- 00:45:47 Примесь поля через точку
- 00:51:35 Примесь поля через функцию extend
- 00:57:35 Примесь поля через object.assign( )
- 00:59:18 Примесь поведения
- 01:02:23 Примесь изменения класса
- 01:06:50 Определение
- 01:07:30 Реализация простой мемоизации
- 01:14:43 Реализация простой мемоизации с проверкой скорости
- 01:20:43 Удаление накопленного кэша
- 01:25:35 Асинхронная мемоизация
- 01:31:10 Преобразование аргументов и ключей в hash-функцию
- 01:33:32 Реализация сложной мемоизации
- 00:00:00 Введение
- 00:01:10 Чеининг через синтаксис вызова функций
- 00:02:12 Prototype
- 00:05:45 Сlass
- 00:06:11 Functor
- 00:11:54 Mutable
- 00:16:34 Iterator
- 00:26:18 Promise
- 00:26:35 Test
- 00:37:08 Compare
- 00:39:45 Benchmark
- 00:40:48 Запуск и анализ тестов
- 01:03:48 Первый способ возвращение ошибок в синхронном коде
- 01:09:24 Второй способ возвращение ошибок в синхронном коде
- 01:12:26 Возвращение ошибок в асинхронном коде
- 01:16:14 Корректное возвращение ошибок
- 01:20:03 Обработка ошибок c promise
- 01:23:58 Обработка ошибок c async-await
- 0:30 callback sync/async
- 1:35 временная задержка sleep.js
- 5:35 await-sleep.js
- 8:40 sleep-then.js
- 9:30 order.js
- 18:38 precision.js
- 22:13 blocking.js
- 22:50 timers.js
- 29:35 ref-unref.js
- 32:05 enroll.js
- 34:57 eventloop.txt
- 37:37 eventEmitter
- 44:32 simple.js
- 47:48 usage.js
- 48:30 enhanced.js
- 50:18 star-fix.js
- 51:10 usage.js
- 53:15 closure.js
- 54:50 fp.js
- 57:10 methods.js
- 1:06:35 min.js
- 1:12:31 prod.js
- 00:00:00 Цикл for
- 00:02:45 Цикл while
- 00:03:16 Цикл do while
- 00:03:33 Цикл for in object
- 00:04:40 Цикл for in array
- 00:06:44 Цикл for of
- 00:08:45 Оператор break
- 00:10:13 Оператор continue
- 00:12:12 Итерирование по массиву методом forEach
- 00:15:10 Итерирование по массиву методом map
- 00:21:23 Итерирование по двухмерному массиву (мatrix)
- 00:25:38 Итерирование по двухмерному массиву (мatrix) методом forEach
- 00:26:08 Итерирование массива методом reduce
- 00:28:49 Итерирование по объекту
- 00:37:32 Обратный итератор
- 00:40:42 Асинхронный итератор
- 00:00:00 Когда нужна архитектура
- 00:06:07 Принятие решений
- 00:09:58 Типы связывания
- 00:20:00 Ошибки
- 00:27:15 Принятие решений
- 00:37:05 Эволюция архитектурных решений
- 00:58:13 Схема современной архитектуры
- 01:01:40 субд в браузере
- 01:05:20 Альтернативные варианты
- 01:12:20 Как на самом деле
- 01:13:45 Архитектура мечты
- 01:16:45 Современные возможности и требования
- 01:25:20 Топологии
- 01:30:45 Итог
- 1:20 пример callback функции
- 2:40 пример последовательного исполнения callback функций
- 5:52 пример параллельного исполнения async функций c использованием wrapAsync
- 15:18 пример последовательного исполнения async функций c использованием wrapAsync
- 19:05 chain исполнение async функций
- 41:16 где можно встретить асинхронные функции
- 00:00:00 Введение
- 00:01:50 Простая проекция набора данных
- 00:09:23 Расширенная проекция набора данных
- 00:19:00 Расширенная проекция набора данных с кэшированием списка ключей
- 00:20:27 Оптимизация проекции набора данных с помощью императивного программирования
- 00:23:11 Линзы из функционального программирования
- 00:32:29 Сложная проекция набора данных ( проекция изнутри и снаружи )
- 00:39:08 Сложная проекция набора данных с помощью декларативного программирования
- 00:41:57 Оптимизация сложной проекции
- 00:51:36 Синтаксис фильтрации
- 00:53:25 Вывод
- 00:58:08 Оптимизация
- 01:00:00 Обобщение
- 00:00:00 Введение
- 00:01:35 Массивы
- 00:01:56 Склеивание массива методом concat
- 00:02:02 Склеивание массива оператором spread
- 00:03:17 Объекты
- 00:03:28 Склеивание объектов методом object.assign
- 00:04:01 Склеивание объектов оператором spread
- 00:04:38 Символический тип
- 00:06:50 Сохранение коллекции в файл
- 00:08:45 Использование конструированного map
- 00:14:29 Использование встроенного map
- 00:15:01 Отличия конструированного и встроенного map
- 00:16:49 Способы итерации по map
- 00:18:15 Построение индексов помощью map
- 00:23:15 WeakMap
- 00:27:55 Отдача значения без ключа
- 00:29:15 Хранение уникальных значений
- 00:33:32 Операции со массивами
- 00:39:48 Операции над множествами
- 00:42:32 WeakSet
- 00:47:15 Обобщение
- 1:02 блокирующее итерирование по массиву
- 3:24 блокирующее итерирование с помощью for await
- 4:47 неблокирующее итерирование с помощью setTimeout
- 6:45 неблокирующее итерирование с помощью for await
- 8:20 неблокирующее итерирование без задержки
- 13:00 неблокирующее итерирование без задержки с помощью for await
- 19:30 использование асинхронного итерирования для обычных массивов
- 00:00:00 Идея структуры данных
- 00:02:27 Списки на прототипах ( абстракция элемента )
- 00:06:23 Списки на объектах
- 00:07:28 Списки на замыканиях
- 00:10:56 Списки на объектах ( абстракция элемента и списка )
- 00:18:22 Списки на классах
- 00:21:08 Стек на прототипах ( двух-связанный)
- 00:28:17 Стек на классах (односвязный)
- 00:29:55 Очередь
- 00:34:26 Дэк
- 00:00:00 Определение Proxy
- 00:01:20 Обращение к свойствам объекта, находящегося внутри proxy
- 00:04:10 Доступ к состоянию объекта через Getter и Setter
- 00:05:13 Доступ к состоянию объекта через Proxy
- 00:07:40 Проверка наличие свойств
- 00:11:22 Удаление свойств
- 00:13:26 Обращение к аргументам функции, находящегося внутри proxy
- 00:15:30 Другие Proxy обработчики (Proxy handler )
- 00:19:00 Proxy.revocable
- 00:20:43 Определение Symbol
- 00:23:00 Вывод и сравнение Symbol
- 00:25:10 Type
- 00:29:51 Symbol.for
- 00:34:45 Symbol.iterator
- 00:43:52 Symbol.toPrimitive
- 00:47:00 hideSymbol
- 00:00:00 Введение
- 00:01:50 Виды сериализации
- 00:02:45 Сериализатор console.dir
- 00:03:45 Cериализатор CSV
- 00:05:42 Сериализатор JSON
- 00:10:00 Сериализатор функции
- 00:15:25 Сериализатор функции разных типов (расширяемый)
- 00:23:06 Десереализация
- 00:25:26 Сериализация объекта в бинарный формат, с помощью библиотеки v8
- 00:28:26 Сериализация объекта, с помощью разных библиотек
- 00:00:00 Введение
- 00:02:38 Фабрика ( factory )
- 00:05:44 Фабрика прототипов
- 00:10:48 Фабрика классов
- 00:12:28 Фабрика функций
- 00:15:55 Фабричные методы
- 00:16:55 Превращение функций в фабрику ( factorify)
- 00:19:44 Пул ( pool )
- 00:23:05 Работа с пулом
- 00:23:04 Обобщенный пул
- 00:24:55 Пулифицирование фабрики ( poolify )
- 00:28:50 Улучшеная пулифицированная фабрика
- 00:32:10 Ассинхронная работа с пулом
- 00:45:25 Одновременное использование factorify и poolify
- 00:51:54 Обобщение
- 00:40 Что нужно знать?
- 03:41 Откуда брать знания
- 07:39 Проблемы отрасли
- 13:12 Дерево парадигм
- 14:15 Технологии и техники
- 14:32 Разница парадигм
- 14:48 Что общего в парадигмах
- 15:33 Прочие парадигмы и техники
- 17:46 Мультипарадигменность
- 18:46 Метапрограммирование
- 19:13 Как не деградировать?
- 21:29 Как найти общий язык?
- 24:31 Задачи программной инженерии
- 28:19 Преодоление сложности
- 28:21 Связывание данных и логики
- 28:30 Различные концепции
- 29:40 ВУЗ должен меняться
- 33:53 Неспециальные предметы
- 35:18 Чего не хватает
- 36:57 Проблем много
- 40:20 ВУЗ должен знать
- 00:00:00 Singleton через конструктор прототипа
- 00:03:27 Singleton через замыкания
- 00:06:10 Пример singleton через замыкания
- 00:08:15 Пример singleton через замыкания в функциональном стиле
- 00:09:23 Пример singleton через замыкания в функциональном стиле (упрощенный)
- 00:10:32 Создание singleton в JS
- 00:00:00 Определение функтора
- 00:01:40 Функтор из прототипа
- 00:08:17 Функтор из прототипа (упрощенный)
- 00:09:14 Функтор из замыкания
- 00:11:49 Функтор из замыкания с тернарным оператором
- 00:12:44 Аппликативный функтор из прототипа
- 00:18:08 Аппликативный функтор из замыкания (монада)
- 00:23:11 Пример применения монады
- 00:28:37 Функциональный объект
- 00:39:44 Пример применения функционального объекта
- 00:45:27 Обобщение
- 00:00 Рекурсивная функция для вычисления глубины стека
- 03:25 Неявная рекурсия
- 04:52 Рекурсивная функция для вычисления степени числа
- 06:12 Рекурсивная функция для вычисления факториала
- 06:29 Рекурсивная функция для вычисления числа Фибоначчи
- 09:27 Рекурсивная функция, как аналог функции reduce
- 12:04 Оптимизация хвостовой рекурсии
- 15:41 Оптимизация обычной рекурсивной функции
- 00:00 Способы объявления генераторов
- 10:41 Пример генератора с yield
- 15:54 Пример генератора с yield и return
- 18:47 Получение значений из генератора циклом for...of
- 21:04 Получение значений из генератора spead - оператором
- 21:50 Метод next
- 23:30 Пример генератора с yield * возвращающего итерируемые объекты
- 25:05 Пример генератора с yield * возвращающего другие генераторы
- 26:18 Метод return
- 28:11 Метод throw
- 29:05 Обобщение
- 0:00 введение
- 1:30 adapter на prototype
- 3:57 adapter на class
- 4:23 adapter на function
- 6:15 adapter на классе-обертке (boxing)
- 7:08 adapter на замыканиях (closure)
- 8:10 adapter на interface
- 13:45 adapter на events
- 16:00 выводы
- 0:00 введение
- 3:40 strategy на class
- 15:04 strategy на prototype
- 16:14 strategy на function
- 20:22 strategy с примером работы над массивом
- 24:07 обобщение
- 00:00:00 Введение
- 00:05:27 Console.time и console.timeEnd
- 00:09:05 New Date( ).getTime( )
- 00:11:15 Process.hrtime( )
- 00:18:51 Process.hrtime.bigint( ) и движок для benchmark
- 00:27:00 Сравнение функций инстанцирования
- 00:31:06 Алгоритм для сравнения
- 00:39:36 Работа движка benchmark
- 00:41:37 Результаты теста
- 00:47:33 Сравнение массива и объектов
- 00:54:21 Результаты теста
- 00:55:00 Сравнение 3 функций range
- 00:56:34 Результаты теста
- 00:58:50 Сравнение функций по способу вызова
- 00:59:56 Результаты теста
- 01:01:34 Сравнение indexOf и includes
- 01:01:54 Результаты теста
- 01:03:23 Сравнение объявления переменной до и после цикла
- 01:05:02 Сравнение for keys, for (...in...) и for (...of...)
- 01:05:34 Результаты теста
- 01:05:58 Сравнение шаблонных строк
- 01:06:12 Сравнение хождения цикла по функции map в ES6
- 01:07:18 Результаты теста
- 01:07:56 Сравнение repeat и arrayJoin
- 01:08:15 Результаты теста
- 01:08:26 Сравнение дублирования массива
- 01:08:58 Результаты теста
- 01:09:43 Сравнение копирование набора данных
- 01:10:26 Результаты теста
- 01:10:47 Сравнение итерирования с помощью forEarch и for (...of...)
- 01:11:08 Результаты теста
- 01:11:31 Обобщение
- 1:46 Присвоенные идеи ООП
- 11:47 Притянутые достоинства ООП
- 22:06 Проблемы ООП
- 39:56 Как жить с ООП
- 56:44 Подходящие области для ООП
- 1:03:51 Неподходящие области для ООП
- 1:11:30 Заключение
- 0:00:02 введение
- 0:00:57 карты для механических машин
- 0:01:50 карты для электронных машин
- 0:03:21 машинный код
- 0:04:05 Assembly language
- 0:06:14 Fortran
- 0:07:28 Basic
- 0:09:19 LISP
- 0:12:23 Algol 60
- 0:13:25 C
- 0:14:23 C++
- 0:15:13 Ada
- 0:16:08 dBase, FoxBase, Clipper
- 0:19:56 Haskell
- 0:21:23 Python
- 0:23:37 Java
- 0:25:45 Delphi
- 0:28:43 SQL
- 0:30:43 PHP
- 0:41:17 стрелочку из плюсов взяли
- 0:33:14 C#
- 0:35:20 Go
- 0:36:17 Rust
- 0:37:30 TypeScript
- 0:39:59 Swift
- 0:40:19 Kotlin
- 0:42:20 взаимовлияние языков
- 0:44:23 все ли языки используются сегодня
- 0:49:35 производительность языков
- 0:54:34 опциональная аннотация типов
- 0:56:50 прогревание кода
- 0:59:24 первые операционные системы
- 1:00:44 ограничение по вложенности рекурсии
- 1:02:53 абстрактное синтаксическое дерево
- 1:04:52 машинный код и байт-код
- 1:07:26 typescript быстрее javascript?
- 1:11:45 goroutine на Go асинхронная?
- 1:12:58 асинхронная функция в javascript
- 1:15:23 строгая типизация влияет на скорость?
- 1:16:13 выведение и проверка типов в IDE
- 00:20 парадигма
- 02:19 императивная программа: пошаговое исполнение на примере JavaScript
- 03:22 пошаговое исполнение характерно для неструктурных ЯП: Assembly language, Basic
- 05:08 структурная программа на Rust
- 06:21 процедурный стиль на Python
- 07:28 объектно-ориентированное программирование на примере JavaScript
- 09:32 ООП хорош не для всякой задачи -- пример с пирожком
- 13:28 прототипное программирование
- 16:51 функциональное программирование
- 18:58 асинхронное программирование
- 22:48 реактивное программирование
- 26:04 событийно-ориентированное программирование (управляется потоками событий)
- 27:03 метапрограммирование
- 28:58 мультипарадигменное программирование
- 30:52 параллельное программирование
- 31:58 реактивность
- 33:29 функции 1 класса
- 34:55 геттеры и сеттеры
- 37:37 смешивание стилей
- 38:07 если хочется писать в чистом ООП
- 39:43 объект, класс, коллекция -- разница
- 47:27 где хранятся классы
- 47:54 у каждой парадигмы свои шаблоны программирования
- 48:52 когда используется функциональное программирование
- 00:00:00 Синхронная функция-обертка
- 00:02:55 Синхронная универсальная функция-обертка
- 00:08:28 Асинхронная универсальная функция-обертка
- 00:15:50 Синхронная функция-обертка, которая добавляет поведение (timeout)
- 00:22:45 Асинхронная функция-обертка, которая добавляет поведение (timeout)
- 00:25:38 Функция-обертка, которая ограничивает вызов функции до одного вызова (once)
- 00:27:36 Функция-обертка, которая ограничивает вызов функции до n-го вызова (limit)
- 00:29:50 Функция-обертка, которая отменяет вызов функции (cancel)
- 00:32:29 Функция-обертка с методами timeout, limit, cancel
- 00:39:03 Функция-обертка с методами timeout, limit, cancel (оптимизированная)
- 00:42:28 Функция-обертка, которая ограничивает один вызов за 200 мс (throttle)
- 00:45:47 Примесь поля через точку
- 00:51:35 Примесь поля через функцию extend
- 00:57:35 Примесь поля через object.assign( )
- 00:59:18 Примесь поведения
- 01:02:23 Примесь изменения класса
- 01:06:50 Определение
- 01:07:30 Реализация простой мемоизации
- 01:14:43 Реализация простой мемоизации с проверкой скорости
- 01:20:43 Удаление накопленного кэша
- 01:25:35 Асинхронная мемоизация
- 01:31:10 Преобразование аргументов и ключей в hash-функцию
- 01:33:32 Реализация сложной мемоизации
- 00:00 Конструкция массива
- 09:58 Метод concat
- 11:00 Методы every и some
- 13:00 Метод filter
- 13:29 Методы find и findIndex
- 14:30 Метод flat
- 17:08 Метод includes
- 17:32 Метод indexOf и lastIndexOf
- 18:35 Метод join
- 18:58 Метод reverse
- 19:29 Метод slice
- 21:49 Метод splice
- 23:27 Методы reduce и reduceRight
- 00:00 ECMA Script versions
- 09:40 Array.proptotype.includes
- 10:55 Array.proptotype.flat
- 11:36 Array.proptotype.flatMap
- 12:20 Array.proptotype.sort
- 14:24 Object.values
- 15:06 Object.keys
- 15:15 Object.entries
- 15:49 Object.fromEntries
- 16:36 String.proptotype.padStart / String.proptotype.padEnd
- 17:02 String.proptotype.trimStart / String.proptotype.trimEnd
- 17:18 Operator rest
- 19:38 Operator spread
- 21:34 Operator exponentiation x ** y
- 22:35 Operator optional chaining ?.
- 24:22 Asynchronous function: async / await
- 26:34 Trailing Commas
- 28:00 Asynchronous iterable contract: for-await
- 29:51 Try...catch
- 30:21 Function.prototype.toString
- 30:58 Symbol.prototype.description
- 32:11 Promise.finaly
- 33:22 Promise.allSettled
- 36:18 More features