From 114ef7098db4aa6f5073af42c733c460d5a1a2b5 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 31 May 2018 19:32:51 +0300 Subject: [PATCH 01/74] Minor fixes --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e99b4d8..b071678 100644 --- a/README.md +++ b/README.md @@ -284,8 +284,8 @@ ## Структуры данных -- [Запись / Record](https://github.com/HowProgrammingWorks/DataStructures) -- [Массив / Array]() +- [Запись или структура / Struct or Record](https://github.com/HowProgrammingWorks/DataStructures) +- [Массив / Array](https://github.com/HowProgrammingWorks/DataStructures) - [Буфер / Buffer](https://github.com/HowProgrammingWorks/Buffers) - [Список / List](https://github.com/HowProgrammingWorks/LinkedList) - Односвязный, двусвязный, кольцевой, развернутый список (список массивов) @@ -349,8 +349,7 @@ - При помощи [cluster](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cluster) - при помощи [child_process](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cp) - Сервер приложений / Application Server -- Тонкий клиент -- Толстый клиент +- Тонкий клиент и толстый клиент - [Проекция данных / Projection](https://github.com/HowProgrammingWorks/Projection) - [Измерение производительности / Benchmarking](https://github.com/HowProgrammingWorks/Benchmark) - [Интерфейс командной строки / CLI, Command Line Interface and Console](https://github.com/HowProgrammingWorks/CommandLine) From b8e7149ea78245e368f02f196abc98fcbfcbd3e0 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 2 Jun 2018 20:20:02 +0000 Subject: [PATCH 02/74] Update license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 8864d4a..716dbfd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 +Copyright (c) 2017-2018 How.Programming.Works contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 118aeaad73e961b348251556ee2b7d89b89cd9ce Mon Sep 17 00:00:00 2001 From: vitpavlenko Date: Sun, 3 Jun 2018 22:07:47 +0300 Subject: [PATCH 03/74] fixed async|await --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b071678..d4db494 100644 --- a/README.md +++ b/README.md @@ -327,7 +327,7 @@ - [Дифер / Deferred](https://github.com/HowProgrammingWorks/Callbacks) - [Промис / Promise](https://github.com/HowProgrammingWorks/Promise) - [Фьючер / Future](https://github.com/HowProgrammingWorks/Callbacks) -- [Асинхрпонность при помощи async/await](https://github.com/HowProgrammingWorks/AsynchronousProgramming) +- [Асинхронность при помощи async/await](https://github.com/HowProgrammingWorks/AsynchronousProgramming) - [Асинхронная композиция / Asynchronous Composition](https://github.com/metarhia/metasync/blob/master/lib/composition.js) - [Коллекторы данных / Data and Key Collectors](https://github.com/metarhia/metasync/blob/master/lib/collector.js) - Неизменяемые данные / Immutable Data From 1881db13d40149050bd33a19b6e33e6eea92f572 Mon Sep 17 00:00:00 2001 From: Anton Myronyuk Date: Mon, 4 Jun 2018 00:21:44 +0300 Subject: [PATCH 04/74] fix mistake in 'deque' word --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4db494..672a331 100644 --- a/README.md +++ b/README.md @@ -296,7 +296,7 @@ - [Стек, дек, очередь](https://github.com/HowProgrammingWorks/Dequeue) - [Стек / Stack] - Список, работающий про принципу LIFO - [Очередь / Queue] - Список, работающий про принципу FIFO - - [Дек / Dequeu](https://github.com/HowProgrammingWorks/Dequeue) - + - [Дек / Deque](https://github.com/HowProgrammingWorks/Dequeue) - двухсторонняя очередь (одновременно LIFO и FIFO) - [Дерево](https://github.com/HowProgrammingWorks/Trees) - [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), From f082316f263fd5521fe2e6cdcb5fddbd6864e1d7 Mon Sep 17 00:00:00 2001 From: Anton Myronyuk Date: Mon, 4 Jun 2018 00:35:33 +0300 Subject: [PATCH 05/74] fix mistake in 'dequeue' word --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 672a331..e7292ba 100644 --- a/README.md +++ b/README.md @@ -296,7 +296,7 @@ - [Стек, дек, очередь](https://github.com/HowProgrammingWorks/Dequeue) - [Стек / Stack] - Список, работающий про принципу LIFO - [Очередь / Queue] - Список, работающий про принципу FIFO - - [Дек / Deque](https://github.com/HowProgrammingWorks/Dequeue) - + - [Дек / Dequeue](https://github.com/HowProgrammingWorks/Dequeue) - двухсторонняя очередь (одновременно LIFO и FIFO) - [Дерево](https://github.com/HowProgrammingWorks/Trees) - [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), From 67a25ca50787158110aab8ec99bbc892162bd84f Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 8 Jun 2018 23:33:15 +0300 Subject: [PATCH 06/74] Upadete definitions --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b071678..d024371 100644 --- a/README.md +++ b/README.md @@ -121,13 +121,14 @@ - [Побочные эффекты / Side effects](https://github.com/HowProgrammingWorks/Function) - [Функция высшего порядка / Higher-order Function](https://github.com/HowProgrammingWorks/HigherOrderFunction) - если функция только в аргументах, то это колбек - - если функция только в результате, то это фабрика функций + - если функция только в результате, то это фабрика функций на замыканиях - если возвращаемая функция имеет тот же смысл, что и получаемая в аргументах (+ дополнительное поведение), то это обертка - очень редко бывает, что возвращаемая функция не связана с функцией из аргументов (но пока ни кто не нашел вразумительного примера, где это реально нужно) - - если на выходе функция-конструктор, то это фабрика конструкторов + - если на выходе класс или функция-конструктор, то это фабрики классов и + прототипов соответсвенно - Функциональное наследование / Functional Inheritance - при помощи замыканий, ч.п., каррирования, лямбд - [Метод / Method](https://github.com/HowProgrammingWorks/Function) From 089bf0a37432dcc406e24cf9b14154f90fba4519 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 14 Jun 2018 23:53:25 +0300 Subject: [PATCH 07/74] Fix spelling Closes: https://github.com/HowProgrammingWorks/Dictionary/issues/7 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db9a118..5033583 100644 --- a/README.md +++ b/README.md @@ -345,7 +345,7 @@ - Курсор / Cursor - Объектно-реляционное отображение / ORM, Object-relational Mapping - [Сервер / Server](https://github.com/HowProgrammingWorks/NodeServer) - - [Прикоеивание по IP или идентификатору сессии / IP or Session Sticky](https://github.com/HowProgrammingWorks/NodeServer/tree/master/ip-sticky) + - [Приклеивание по IP или идентификатору сессии / IP or Session Sticky](https://github.com/HowProgrammingWorks/NodeServer/tree/master/ip-sticky) - Кластеризация / Cluster mode - При помощи [cluster](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cluster) - при помощи [child_process](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cp) From bad4260700a7c42856c1e9226c52f7fe7bbb8364 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 15 Jul 2018 17:33:10 +0300 Subject: [PATCH 08/74] Add enumerated types repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5033583..759af95 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ - [Ссылочные типы / Reference](https://github.com/HowProgrammingWorks/DataTypes) - типы данных, передаваемые по ссылке, а не по значению - например: `Object, Function, Array` +- [Перечислимые тиыпы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) - [Объект / Object](https://github.com/HowProgrammingWorks/DataTypes) - структура данных, содержащая состояние и методы, связанные с этим состоянием - объект может быть создан как литерал `{}` или экземпляр класса (прототипа) From 0e11c0b284eaa7a64bf5729b244722c49905e45b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 15 Jul 2018 17:44:06 +0300 Subject: [PATCH 09/74] Reorganize dictionary structure --- README.md | 66 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 759af95..ab0d619 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,26 @@ - типы данных, передаваемые по ссылке, а не по значению - например: `Object, Function, Array` - [Перечислимые тиыпы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) +- Флаг / Flag + - Логическое значение, определяющее состояние чего-либо, например, признак + закрытия соединения, признак завершения поиска по структуре данных и т.д. + - `let flagName = false;` +- Массив / Array + - коллекция эллементов, доступ к которым осуществляется по индексам + - `const cities = ['Tehran', 'Yalta', 'Potsdam'];` +- [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) + - многократное исполнение блока операторов +- [Условие / Conditional statements](https://github.com/HowProgrammingWorks/Conditional) + - синтаксическая конструкция, позволяющая выполнить разные действия или + возвращающая разные значения (тернарный оператор) в зависимости от логического + выражения (возвращающего true или false) +- [Строка / String](https://github.com/HowProgrammingWorks/String) + - последовательность символов (в большинстве языков к каждому символу можно + обратиться через синтаксис доступа к элементам массива, например, квадратные + скобки) + +## Основные понятия + - [Объект / Object](https://github.com/HowProgrammingWorks/DataTypes) - структура данных, содержащая состояние и методы, связанные с этим состоянием - объект может быть создан как литерал `{}` или экземпляр класса (прототипа) @@ -61,13 +81,6 @@ у наследников (формируется цепочка прототипов, по которой последовательно ищутся свойства, пока не будут найдены или пока не будет достигнут конец) - шаблон, который клонируется во время инстанциирования -- Флаг / Flag - - Логическое значение, определяющее состояние чего-либо, например, признак - закрытия соединения, признак завершения поиска по структуре данных и т.д. - - `let flagName = false;` -- Массив / Array - - коллекция эллементов, доступ к которым осуществляется по индексам - - `const cities = ['Tehran', 'Yalta', 'Potsdam'];` - [Функция](https://github.com/HowProgrammingWorks/Function) - определения - функциональное программирование: отображение или преобразование элементов @@ -166,16 +179,6 @@ значениями переменной цикла - [Итератор / Iterator](https://github.com/HowProgrammingWorks/Iteration) - интерфейс доступа к элементам коллекции: массива, множества, списка -- [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - - многократное исполнение блока операторов -- [Условие / Conditional statements](https://github.com/HowProgrammingWorks/Conditional) - - синтаксическая конструкция, позволяющая выполнить разные действия или - возвращающая разные значения (тернарный оператор) в зависимости от логического - выражения (возвращающего true или false) -- [Строка / String](https://github.com/HowProgrammingWorks/String) - - последовательность символов (в большинстве языков к каждому символу можно - обратиться через синтаксис доступа к элементам массива, например, квадратные - скобки) - [Файл / File](https://github.com/HowProgrammingWorks/Files) - [Поток, Файловый поток / Stream, File Stream](https://github.com/HowProgrammingWorks/Streams) - [Сокет / Socket](https://github.com/HowProgrammingWorks/Socket) @@ -263,10 +266,6 @@ "знает" другой; это значит, что в нем помещен вызов метода (реализация которого содержится в другом) или он слушает событие, которое генерирует другой или он "знает" структуры данных, которые могут быть переданы из другого компонента -- [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) - - статический анализатор кода (без запуска), который может определить и - предложить стилистические, грамматические или оптимизационное улучшение или - просто выявить проблему (а иногда и исправить ее автоматически) - Декомпозиция / Decomposition - разделение программного компонента на части по принципу функциональности, при этом, каждая часть будет решать подзадачу и появится часть кода, которая @@ -284,6 +283,17 @@ после использования - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) +## Вспомогательные материалы + +- [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) + - статический анализатор кода (без запуска), который может определить и + предложить стилистические, грамматические или оптимизационное улучшение или + просто выявить проблему (а иногда и исправить ее автоматически) +- Система контроля версий +- Менеджер пакетов +- Непрерывная интеграция +- Тестирование + ## Структуры данных - [Запись или структура / Struct or Record](https://github.com/HowProgrammingWorks/DataStructures) @@ -295,10 +305,10 @@ - Реализация на синтаксисе прототипов, классов и фабрик - Реализация на замыканиях и функциональных объектах - Реализация на одной и двух категориях (только узел или список и узел) -- [Стек, дек, очередь](https://github.com/HowProgrammingWorks/Dequeue) - - [Стек / Stack] - Список, работающий про принципу LIFO - - [Очередь / Queue] - Список, работающий про принципу FIFO - - [Дек / Dequeue](https://github.com/HowProgrammingWorks/Dequeue) - +- [Стек, очередь, дек](https://github.com/HowProgrammingWorks/Dequeue) + - Стек / Stack - Список, работающий про принципу LIFO + - Очередь / Queue - Список, работающий про принципу FIFO + - [Дек / Dequeue](https://github.com/HowProgrammingWorks/Dequeue) двухсторонняя очередь (одновременно LIFO и FIFO) - [Дерево](https://github.com/HowProgrammingWorks/Trees) - [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), @@ -377,11 +387,11 @@ - [Prototype-oriented programming](https://github.com/HowProgrammingWorks/PrototypeOrientedProgramming) - [Функциональное программирование / Functional Programming](https://github.com/HowProgrammingWorks/FunctionalProgramming) - [примеры разных стилей функционального кода](https://github.com/HowProgrammingWorks/Abstractions) -- [Логическое программирование / Logical Programming] -- [Декларативное программирование / Declarative Programming] +- Логическое программирование / Logical Programming +- Декларативное программирование / Declarative Programming - [Программирование управляемое данными / Data-driven Programming](https://github.com/HowProgrammingWorks/DataDrivenProgramming) - Техники программирования - [Асинхронное программирование / Asynchronous Programming](https://github.com/HowProgrammingWorks/AsynchronousProgramming) - - [Реактивное программирование / Reactive Programming] + - Реактивное программирование / Reactive Programming - [Событийное программирование / Event-driven Programming](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - [Метапрограммирование / Metaprogramming](https://github.com/HowProgrammingWorks/Metaprogramming) From 7cab203bac96024754f3ac394bb7f1539891d448 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 15 Jul 2018 17:50:14 +0300 Subject: [PATCH 10/74] Add dictionary index --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ab0d619..24ee32b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,13 @@ -# Programming Dictionary +# Словарь-индекс понятий со ссылками + +Оглавление: +- [Базовые понятия](https://github.com/HowProgrammingWorks/Dictionary#Базовые-понятия) +- [Основные понятия](https://github.com/HowProgrammingWorks/Dictionary#Основные-понятия) +- [Вспомогательные материалы](https://github.com/HowProgrammingWorks/Dictionary#Вспомогательные-материалы) +- [Структуры данных](https://github.com/HowProgrammingWorks/Dictionary#Структуры-данных) +- [Расширенные понятия](https://github.com/HowProgrammingWorks/Dictionary#Расширенные-понятия) +- [Примеры кода и комплексного использования технологий](https://github.com/HowProgrammingWorks/Dictionary#Примеры-кода-и-комплексного-использования-технологий) +- [Парадигмы программирования](https://github.com/HowProgrammingWorks/Dictionary#Парадигмы-программирования) ## Базовые понятия From 28dc959d29d5cd84ff87f9b5efa62286b949760f Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 17 Sep 2018 23:31:00 +0300 Subject: [PATCH 11/74] Add link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 24ee32b..f0072c2 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## Базовые понятия -- [Абстракция / Abstraction](https://github.com/HowProgrammingWorks/Abstractions) +- [Абстракция / Abstraction](https://github.com/HowProgrammingWorks/Reusable) и повторное использование - обобщенное решение задачи, в отличие от конкретного решения, подходящее для широкого круга задач - модель реального объекта (множества объектов), являющаяся приближением к @@ -33,7 +33,7 @@ - `const WATCH_TIMEOUT = 5000;` - [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) - тип - это множесво значений и операции, определенные на этом множестве - - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof(x));` + - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof x);` - Примитивные или [скалярные типы / Scalar Types](https://github.com/HowProgrammingWorks/DataTypes) - примитивные типы имеют одно значение, а не несколько структурированных значений и передаются по значению (копирование значения), а не по ссылке From 313b80b28e562b24b673a4c992b7d4e07ae8dbb5 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 24 Sep 2018 20:06:27 +0300 Subject: [PATCH 12/74] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0072c2..7eee0a3 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ - [Ссылочные типы / Reference](https://github.com/HowProgrammingWorks/DataTypes) - типы данных, передаваемые по ссылке, а не по значению - например: `Object, Function, Array` -- [Перечислимые тиыпы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) +- [Перечислимые типы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) - Флаг / Flag - Логическое значение, определяющее состояние чего-либо, например, признак закрытия соединения, признак завершения поиска по структуре данных и т.д. From df71d72ba1419628929f65fb21331ac04415ac63 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 29 Sep 2018 23:57:05 +0300 Subject: [PATCH 13/74] Add links to youtube video --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 7eee0a3..f9d3eed 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,15 @@ обратиться через синтаксис доступа к элементам массива, например, квадратные скобки) +Видео: +- [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&index=1&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&index=3&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&index=2&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Архитектурный подход к программированию (осень 2018)](https://www.youtube.com/watch?v=d_vyO2CkiOc&index=4&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&index=6&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&index=7&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&index=10&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) + ## Основные понятия - [Объект / Object](https://github.com/HowProgrammingWorks/DataTypes) @@ -292,6 +301,10 @@ после использования - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) +Видео: +- [OdessaJS 2018, часть 1](https://www.youtube.com/watch?v=wkdqpR2BJu4&index=8&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [OdessaJS 2018, часть 2](https://www.youtube.com/watch?v=8jAuwfNw9aE&index=9&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) + ## Вспомогательные материалы - [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) From 5b3d4a444f205c0d63b3e57a43f5ac8518ae09e7 Mon Sep 17 00:00:00 2001 From: Anton Myronyuk Date: Sun, 30 Sep 2018 20:04:13 +0300 Subject: [PATCH 14/74] Fix typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f9d3eed..e8fd8e6 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ - имя (идентификатор), с которым связано не изменяемое значение и тип - `const WATCH_TIMEOUT = 5000;` - [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) - - тип - это множесво значений и операции, определенные на этом множестве + - тип - это множество значений и операции, определенные на этом множестве - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof x);` - Примитивные или [скалярные типы / Scalar Types](https://github.com/HowProgrammingWorks/DataTypes) - примитивные типы имеют одно значение, а не несколько структурированных @@ -193,7 +193,7 @@ - [Лисенер / Listener](https://github.com/HowProgrammingWorks/Callbacks) - [Итерирование / Iteration](https://github.com/HowProgrammingWorks/Iteration) - многократное повторение одного блока кода или одной функции над различными - данными: элементами массивов, множдеств, списков, коллекций и различными + данными: элементами массивов, множеств, списков, коллекций и различными значениями переменной цикла - [Итератор / Iterator](https://github.com/HowProgrammingWorks/Iteration) - интерфейс доступа к элементам коллекции: массива, множества, списка From 15a9ec73ed193916d39fd481c4d52f985a9226be Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 4 Oct 2018 22:05:39 +0300 Subject: [PATCH 15/74] Add links to latest lectures on youtube --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index f9d3eed..f318c53 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,8 @@ - [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&index=6&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&index=7&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&index=10&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&index=11&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&index=12&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Основные понятия From a1bacdee2e52f5355032e6c9b7c59cbbb9d9b6cf Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 4 Oct 2018 22:06:06 +0300 Subject: [PATCH 16/74] Add link to examples --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f318c53..510ee13 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ - [Ссылочные типы / Reference](https://github.com/HowProgrammingWorks/DataTypes) - типы данных, передаваемые по ссылке, а не по значению - например: `Object, Function, Array` + - [примеры кода по массивам и объектам](https://github.com/HowProgrammingWorks/DataStructures) - [Перечислимые типы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) - Флаг / Flag - Логическое значение, определяющее состояние чего-либо, например, признак From 22530025f6360f51fb0506c36fd54bd31eab92a4 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 6 Oct 2018 23:35:03 +0300 Subject: [PATCH 17/74] Add more videos and fix URLs --- README.md | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 59ad81d..0c95e0a 100644 --- a/README.md +++ b/README.md @@ -67,15 +67,14 @@ скобки) Видео: -- [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&index=1&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&index=3&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&index=2&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Архитектурный подход к программированию (осень 2018)](https://www.youtube.com/watch?v=d_vyO2CkiOc&index=4&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&index=6&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&index=7&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&index=10&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&index=11&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&index=12&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Основные понятия @@ -305,8 +304,18 @@ - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) Видео: -- [OdessaJS 2018, часть 1](https://www.youtube.com/watch?v=wkdqpR2BJu4&index=8&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [OdessaJS 2018, часть 2](https://www.youtube.com/watch?v=8jAuwfNw9aE&index=9&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Введение в Node.js (осень 2018)](https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [OdessaJS 2018, часть 1](https://www.youtube.com/watch?v=wkdqpR2BJu4&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [OdessaJS 2018, часть 2](https://www.youtube.com/watch?v=8jAuwfNw9aE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Асинхронное программирование на Node.js (осень 2018)](https://www.youtube.com/watch?v=hY6Z6qNYzmc&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Асинхронное программирование на JavaScript и Node.js (ХарьковJS 2017)](https://www.youtube.com/watch?v=VdRhAXnfrd0&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) +- [Асинхронное программирование с библиотекой Metasync (OdessaJS 2017)](https://www.youtube.com/watch?v=XRSxsw0Kgms&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) +- [Обзор Node.js API (осень 2018)](https://www.youtube.com/watch?v=sOkjR-N6IAs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Файлы, потоки, буферы, сеть, сокеты, ошибки (лето 2017)](https://www.youtube.com/watch?v=Kqs_Qnodvj0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Семинар и доклады на летней школе 2017](https://www.youtube.com/watch?v=pgOr3usXMXs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Модули, слои, структура проекта, песочницы в JavaScript и Node.js (осень 2018)](https://www.youtube.com/watch?v=O7A9chb573E&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Клиент-сервер на Node.js TCP и UDP, DNS (осень 2018)](https://www.youtube.com/watch?v=bHn-wTlTTR0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) ## Вспомогательные материалы @@ -397,6 +406,8 @@ - [Динамическая загрузка модулей / Live Code Reload](https://github.com/HowProgrammingWorks/LiveReload) - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) +Видео: + ## Примеры кода и комплексного использования технологий - [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) @@ -420,3 +431,7 @@ - Реактивное программирование / Reactive Programming - [Событийное программирование / Event-driven Programming](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - [Метапрограммирование / Metaprogramming](https://github.com/HowProgrammingWorks/Metaprogramming) + +Видео: +- [Архитектурный подход к программированию (осень 2018)](https://www.youtube.com/watch?v=d_vyO2CkiOc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Архитектура приложений и метапрограммирование](https://www.youtube.com/watch?v=LXS0PqsQvx8&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) From 70fb396ab644d931320b8dad8ad1f26a8277ffcd Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 9 Oct 2018 23:57:01 +0300 Subject: [PATCH 18/74] Add links to youtube --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0c95e0a..13f695e 100644 --- a/README.md +++ b/README.md @@ -407,6 +407,7 @@ - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) Видео: +- [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM) ## Примеры кода и комплексного использования технологий From 9dc18ca74040580eeafccfd24558232c00cc8858 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 15 Oct 2018 22:04:09 +0300 Subject: [PATCH 19/74] Add youtube links --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 13f695e..571d402 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,8 @@ - [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Функции высшего порядка, колбеки, события на JavaScript](https://www.youtube.com/watch?v=1vqATwbGHnc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Композиция, каррирование, частичное применение](https://www.youtube.com/watch?v=ND8KQ5xjk7o&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Основные понятия @@ -316,6 +318,7 @@ - [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js (осень 2018)](https://www.youtube.com/watch?v=O7A9chb573E&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Клиент-сервер на Node.js TCP и UDP, DNS (осень 2018)](https://www.youtube.com/watch?v=bHn-wTlTTR0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://www.youtube.com/watch?v=eQGBS15vUac&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) ## Вспомогательные материалы @@ -407,7 +410,7 @@ - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) Видео: -- [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM) +- [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) ## Примеры кода и комплексного использования технологий From 5e8a8ef98d86fbabba34af43d09466d32d1a9416 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 16 Oct 2018 00:12:02 +0300 Subject: [PATCH 20/74] Reorder videos --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 571d402..b7a179f 100644 --- a/README.md +++ b/README.md @@ -67,16 +67,10 @@ скобки) Видео: +- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Функции высшего порядка, колбеки, события на JavaScript](https://www.youtube.com/watch?v=1vqATwbGHnc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Композиция, каррирование, частичное применение](https://www.youtube.com/watch?v=ND8KQ5xjk7o&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Основные понятия @@ -306,19 +300,24 @@ - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) Видео: -- [Введение в Node.js (осень 2018)](https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Композиция, каррирование, частичное применение (осень 2018)](https://www.youtube.com/watch?v=ND8KQ5xjk7o&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Функции высшего порядка, колбеки, события на JavaScript (осень 2018)](https://www.youtube.com/watch?v=1vqATwbGHnc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [OdessaJS 2018, часть 1](https://www.youtube.com/watch?v=wkdqpR2BJu4&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [OdessaJS 2018, часть 2](https://www.youtube.com/watch?v=8jAuwfNw9aE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Асинхронное программирование на Node.js (осень 2018)](https://www.youtube.com/watch?v=hY6Z6qNYzmc&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Асинхронное программирование на JavaScript и Node.js (ХарьковJS 2017)](https://www.youtube.com/watch?v=VdRhAXnfrd0&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) - [Асинхронное программирование с библиотекой Metasync (OdessaJS 2017)](https://www.youtube.com/watch?v=XRSxsw0Kgms&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) +- [Семинар и доклады на летней школе 2017](https://www.youtube.com/watch?v=pgOr3usXMXs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Введение в Node.js (осень 2018)](https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Обзор Node.js API (осень 2018)](https://www.youtube.com/watch?v=sOkjR-N6IAs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Файлы, потоки, буферы, сеть, сокеты, ошибки (лето 2017)](https://www.youtube.com/watch?v=Kqs_Qnodvj0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Семинар и доклады на летней школе 2017](https://www.youtube.com/watch?v=pgOr3usXMXs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Работа с файлами, буферами и файловыми потоками в Node.js (осень 2018)](https://www.youtube.com/watch?v=eQGBS15vUac&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js (осень 2018)](https://www.youtube.com/watch?v=O7A9chb573E&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Клиент-сервер на Node.js TCP и UDP, DNS (осень 2018)](https://www.youtube.com/watch?v=bHn-wTlTTR0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Работа с файлами, буферами и файловыми потоками в Node.js](https://www.youtube.com/watch?v=eQGBS15vUac&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) ## Вспомогательные материалы @@ -331,6 +330,9 @@ - Непрерывная интеграция - Тестирование +Видео: +- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) + ## Структуры данных - [Запись или структура / Struct or Record](https://github.com/HowProgrammingWorks/DataStructures) From db67d317166b3590e271c40124172988091fdeca Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 5 Nov 2018 08:45:59 +0200 Subject: [PATCH 21/74] Add latest youtube videos --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index b7a179f..6fe890f 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ - [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Работа со строками, шаблонами и юникодом (осень 2018)](https://www.youtube.com/watch?v=GcopcHQkA8M&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Основные понятия @@ -318,6 +319,11 @@ - [Модули, слои, структура проекта, песочницы в JavaScript и Node.js (осень 2018)](https://www.youtube.com/watch?v=O7A9chb573E&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - [Клиент-сервер на Node.js TCP и UDP, DNS (осень 2018)](https://www.youtube.com/watch?v=bHn-wTlTTR0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [HTTP сервер на Node.js (осень 2018)](https://www.youtube.com/watch?v=7Ufxj0oTaUo&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Примеси, обертки, дектораторы, мемоизация (осень 2018)](https://www.youtube.com/watch?v=oRQ0kQr1N-U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Консоль и командная строка (осень 2018)](https://www.youtube.com/watch?v=5aSZyKi5BmE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Чеининг функций и объектов, обработка ошибок (осень 2018)](https://www.youtube.com/watch?v=PfuEfIiLX34&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Таймеры, таймауты, EventEmitter в JavaScript и Node.js(осень 2018)](https://www.youtube.com/watch?v=LK2jveAnRNg&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) ## Вспомогательные материалы @@ -413,12 +419,18 @@ Видео: - [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Измерение производительности кода и оптимизация (осень 2018)](https://www.youtube.com/watch?v=sanq2X7Re8o&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [Межпроцессовое взаимодействие (осень 2018)](https://www.youtube.com/watch?v=2OXWZFMvfbc&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) ## Примеры кода и комплексного использования технологий - [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) - [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) +Видео: +- [Высоконагруженные распределенные приложения на Node.js (JS Conference 2017)](https://www.youtube.com/watch?v=7tfZDABPvVs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) +- [WebSocket сервер на Node.js, электронные таблицы и чат (осень 2018)](https://www.youtube.com/watch?v=Sf7ln3n16ws&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) + ## Парадигмы программирования - [Императивное программирование / Imperative Programming](https://github.com/HowProgrammingWorks/ImperativeProgramming) @@ -441,3 +453,4 @@ Видео: - [Архитектурный подход к программированию (осень 2018)](https://www.youtube.com/watch?v=d_vyO2CkiOc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - [Архитектура приложений и метапрограммирование](https://www.youtube.com/watch?v=LXS0PqsQvx8&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) +- [Слои, связанность и связность кода (осень 2018)](https://www.youtube.com/watch?v=A3RpwNlVeyY&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) From 4f5ccf43b08aac9e72d421864260a524eff3752b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 18 Nov 2018 23:57:17 +0200 Subject: [PATCH 22/74] Add non-blocking iteration repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6fe890f..fc2e14f 100644 --- a/README.md +++ b/README.md @@ -416,6 +416,7 @@ - [Протокол / Protocol](https://github.com/metarhia/metacom) - [Динамическая загрузка модулей / Live Code Reload](https://github.com/HowProgrammingWorks/LiveReload) - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) +- [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) Видео: - [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) From 8336e460bdf2a428ab8592ba18c71c6755ef0181 Mon Sep 17 00:00:00 2001 From: Maksym Vlasov Date: Thu, 20 Dec 2018 18:45:03 +0200 Subject: [PATCH 23/74] Fix mispelling --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fc2e14f..45af5f8 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ - Интерфейс / Interface - набор методов (функций) объединенных или общим объектным контекстом или применением к структурам данных одной предметной области т.е. смыслом (API) - - способ определдения (спецификации) контракта, по которому связаны + - способ определения (спецификации) контракта, по которому связаны программные компоненты - Набор методов с их именами, аргументами и типами аргументов - Программный интерфейс / Application Interface, API @@ -232,7 +232,7 @@ инстанциирования (создания) - `Object.assign(target, { field1, field2 }, { field3 });` - Декоратор / Decorator - - шаблон оборачивания объектов или функций для добавлением новой + - шаблон оборачивания объектов или функций для добавления новой функциональности при помощи специального синтаксиса - [Наследование / Inheritance](https://github.com/HowProgrammingWorks/Inheritance) - [Множественное наследование / Multiple Inheritance](https://github.com/HowProgrammingWorks/Inheritance) @@ -358,7 +358,7 @@ - [Дерево](https://github.com/HowProgrammingWorks/Trees) - [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), поисковое дерево, красно-черное дерево -- Куча / Heap - древовидная струкутра данных или область пямяти для динамического +- Куча / Heap - древовидная структура данных или область памяти для динамического распределения под хранение данных - [Граф / Graph](https://github.com/HowProgrammingWorks/Graph) - [Буфер / Buffer](https://github.com/HowProgrammingWorks/Buffers) From 147ccd7c7d3bce2165c3ef061b270d26d4838858 Mon Sep 17 00:00:00 2001 From: Anton Myronyuk Date: Wed, 26 Dec 2018 23:27:39 +0200 Subject: [PATCH 24/74] Fix typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f9d3eed..2eddd3d 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ - [Переменная / Variable](https://github.com/HowProgrammingWorks/DataTypes) - именованная область памяти, имеющая тип данных, адрес и значение - имя (идентификатор), с которым связано значение и тип данных - - переменная предоставляет возможностью менять значение (а для некоторых + - переменная предоставляет возможность менять значение (а для некоторых языков и тип) - `let cityName = 'Beijing';` - [Константа / Constant](https://github.com/HowProgrammingWorks/DataTypes) - - имя (идентификатор), с которым связано не изменяемое значение и тип + - имя (идентификатор), с которым связано неизменяемое значение и тип - `const WATCH_TIMEOUT = 5000;` - [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) - тип - это множесво значений и операции, определенные на этом множестве @@ -202,7 +202,7 @@ - [Сокет / Socket](https://github.com/HowProgrammingWorks/Socket) - программный интерфейс (или абстракция) для обмена данными между процессами - [Дескриптор / Handle](https://github.com/HowProgrammingWorks/Files) - - уникаьный идентификатор программного объекта (чаще всего объекта операционной + - уникальный идентификатор программного объекта (чаще всего объекта операционной системы): файла, сокета, окна, таймера, оединения и т.д. - Состояние / State - совокупность данных программного компонента (переменных и структур данных), From 1ba7b6e56671720cbddaa603b4d687ddef5e62f5 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 23 Jan 2019 09:49:07 +0200 Subject: [PATCH 25/74] Remove links to videos because we added those lonks to repos --- README.md | 51 ++------------------------------------------------- 1 file changed, 2 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 278afa8..c7af069 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Словарь-индекс понятий со ссылками +Внимание! Ссылки на видео по каждой теме помещены в соответствующие репозитории. + Оглавление: - [Базовые понятия](https://github.com/HowProgrammingWorks/Dictionary#Базовые-понятия) - [Основные понятия](https://github.com/HowProgrammingWorks/Dictionary#Основные-понятия) @@ -66,13 +68,6 @@ обратиться через синтаксис доступа к элементам массива, например, квадратные скобки) -Видео: -- [Карта специальности инженер-программист (осень 2018)](https://www.youtube.com/watch?v=SE5aXH-yf0I&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Базовый синтаксис Javascript (осень 2018)](https://www.youtube.com/watch?v=xJn3k1f4BiM&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Базовый синтаксис Javascript, продолжение (осень 2018)](https://www.youtube.com/watch?v=qa-XleqA0JU&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [JavaScript как ассемблер нашего времени (лето 2017)](https://www.youtube.com/watch?v=ZnZg_lf3b94&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Работа со строками, шаблонами и юникодом (осень 2018)](https://www.youtube.com/watch?v=GcopcHQkA8M&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - ## Основные понятия - [Объект / Object](https://github.com/HowProgrammingWorks/DataTypes) @@ -300,31 +295,6 @@ после использования - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) -Видео: -- [Массивы, объекты, классы, прототипы (осень 2018)](https://www.youtube.com/watch?v=VBMGnAPfmsY&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Функции, лямбды, контексты, замыкания (осень 2018)](https://www.youtube.com/watch?v=pn5myCmpV2U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Композиция, каррирование, частичное применение (осень 2018)](https://www.youtube.com/watch?v=ND8KQ5xjk7o&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Функции высшего порядка, колбеки, события на JavaScript (осень 2018)](https://www.youtube.com/watch?v=1vqATwbGHnc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Замыкания, примеси, обертки, функторы, события (лето 2017)](https://www.youtube.com/watch?v=AiHiJL-fvNI&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [OdessaJS 2018, часть 1](https://www.youtube.com/watch?v=wkdqpR2BJu4&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [OdessaJS 2018, часть 2](https://www.youtube.com/watch?v=8jAuwfNw9aE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Асинхронное программирование на Node.js (осень 2018)](https://www.youtube.com/watch?v=hY6Z6qNYzmc&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Асинхронное программирование на JavaScript и Node.js (ХарьковJS 2017)](https://www.youtube.com/watch?v=VdRhAXnfrd0&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) -- [Асинхронное программирование с библиотекой Metasync (OdessaJS 2017)](https://www.youtube.com/watch?v=XRSxsw0Kgms&list=PLHhi8ymDMrQY8settDxzdTGnnb1GZ_oQC) -- [Семинар и доклады на летней школе 2017](https://www.youtube.com/watch?v=pgOr3usXMXs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Введение в Node.js (осень 2018)](https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Обзор Node.js API (осень 2018)](https://www.youtube.com/watch?v=sOkjR-N6IAs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Файлы, потоки, буферы, сеть, сокеты, ошибки (лето 2017)](https://www.youtube.com/watch?v=Kqs_Qnodvj0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Работа с файлами, буферами и файловыми потоками в Node.js (осень 2018)](https://www.youtube.com/watch?v=eQGBS15vUac&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Модули, слои, структура проекта, песочницы в JavaScript и Node.js (осень 2018)](https://www.youtube.com/watch?v=O7A9chb573E&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Исправление Keep Alive Timeout в NodeJS (OdessaJS 2015)](https://www.youtube.com/watch?v=Q8ohKdYrpRA&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Клиент-сервер на Node.js TCP и UDP, DNS (осень 2018)](https://www.youtube.com/watch?v=bHn-wTlTTR0&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [HTTP сервер на Node.js (осень 2018)](https://www.youtube.com/watch?v=7Ufxj0oTaUo&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Примеси, обертки, дектораторы, мемоизация (осень 2018)](https://www.youtube.com/watch?v=oRQ0kQr1N-U&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Консоль и командная строка (осень 2018)](https://www.youtube.com/watch?v=5aSZyKi5BmE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Чеининг функций и объектов, обработка ошибок (осень 2018)](https://www.youtube.com/watch?v=PfuEfIiLX34&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Таймеры, таймауты, EventEmitter в JavaScript и Node.js(осень 2018)](https://www.youtube.com/watch?v=LK2jveAnRNg&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - ## Вспомогательные материалы - [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) @@ -336,9 +306,6 @@ - Непрерывная интеграция - Тестирование -Видео: -- [Настройка среды: Node.js, npm, git, eslint (осень 2018)](https://www.youtube.com/watch?v=hSyA7tcNaCE&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) - ## Структуры данных - [Запись или структура / Struct or Record](https://github.com/HowProgrammingWorks/DataStructures) @@ -418,20 +385,11 @@ - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) - [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) -Видео: -- [Инверсия управления и внедрение зависимостей (осень 2018)](https://www.youtube.com/watch?v=Fz86Fdjz-LM&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Измерение производительности кода и оптимизация (осень 2018)](https://www.youtube.com/watch?v=sanq2X7Re8o&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [Межпроцессовое взаимодействие (осень 2018)](https://www.youtube.com/watch?v=2OXWZFMvfbc&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - ## Примеры кода и комплексного использования технологий - [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) - [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) -Видео: -- [Высоконагруженные распределенные приложения на Node.js (JS Conference 2017)](https://www.youtube.com/watch?v=7tfZDABPvVs&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) -- [WebSocket сервер на Node.js, электронные таблицы и чат (осень 2018)](https://www.youtube.com/watch?v=Sf7ln3n16ws&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) - ## Парадигмы программирования - [Императивное программирование / Imperative Programming](https://github.com/HowProgrammingWorks/ImperativeProgramming) @@ -450,8 +408,3 @@ - Реактивное программирование / Reactive Programming - [Событийное программирование / Event-driven Programming](https://github.com/HowProgrammingWorks/EventDrivenProgramming) - [Метапрограммирование / Metaprogramming](https://github.com/HowProgrammingWorks/Metaprogramming) - -Видео: -- [Архитектурный подход к программированию (осень 2018)](https://www.youtube.com/watch?v=d_vyO2CkiOc&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Архитектура приложений и метапрограммирование](https://www.youtube.com/watch?v=LXS0PqsQvx8&list=PLHhi8ymDMrQZad6JDh6HRzY1Wz5WB34w0) -- [Слои, связанность и связность кода (осень 2018)](https://www.youtube.com/watch?v=A3RpwNlVeyY&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ) From 6f1da96f9044a3cc71b963b15b927201d3d90459 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 20 Mar 2019 21:26:51 +0200 Subject: [PATCH 26/74] Add patterns --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index c7af069..0ea86e5 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,22 @@ инициализированные экземпляры (вместо инстанциирования новых) и отдавать их после использования - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) +- [Адаптер / Adapter](https://github.com/HowProgrammingWorks/Adapter) + - Паттерн достижения совместимости, позволяющий обернуть класс, функцию или + другой программный компонент с несовместимым контрактом в программный + компонент с контрактом, который нам нужен. +- [Стратегия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) + - Паттерн реализует выбор одного из совместимых и взаимозаменяемых классов, + которые содержат поведение (алгоритм), аналогичный по функциональности и + реализующий общий интерфейс. Актуален и для функционального программирования. +- [Фасад / Facade] https://github.com/HowProgrammingWorks/Facade + - Паттерн для скрытия сложности. Фасад скрывает несколько инстансов разных + классов в своих свойствах (иногда приватных, но для JS этого пока нет) и + предоставляет общий (фасадный) интерфейс для управления ими. + - Для функционального программирования возможен аналог фасада - функция + обертка, скрывающая инстансы в своем контексте и предоставляющая доступ + к ним через возврат функции (с замыканием) или другого инстанса (методы + которого тоже имеют доступ к скрываемым инстансам через замыкание). ## Вспомогательные материалы From 4fb4ae992309642ae82c048f036d45712213a18e Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 20 Mar 2019 22:02:50 +0200 Subject: [PATCH 27/74] Add more topics --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 0ea86e5..fef1867 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,18 @@ функциональный объект), добавляя ему дополнительное поведение - можно обернуть целый API интерфейс и даже асинхронную функцию вместе с колбеками (если известен контракт) +- [Рекурсия / Recursion](https://github.com/HowProgrammingWorks/Recursion) + - Рекурсия - определение функции, через нее саму или задание алгоритма + вычисления функции через ее же вызов (или непрямой/косвенный вызов). + - Косвенная рекурсия - когда фнкция определена или вызывает себя не + напрямую, а через другую или цепочку функций. + - Хвостовая - частный случай, когда рекурсивный вызов является последней + операцией перед возвратом значения, что всегда может быть преобразовано + в цикл, даже автоматическим способом. Не хвостовая может быть преобразована + в цикл и оптимизирована более сложным способом, обычно вручную. +- [Дженерики / Generics](https://github.com/HowProgrammingWorks/Generics) + - Обобщенное программирование - парадигма, позволяющая обобщенно описать + алгоритмы и структуры данных, абстрагируясь от конкретных типов. - Интерфейс / Interface - набор методов (функций) объединенных или общим объектным контекстом или применением к структурам данных одной предметной области т.е. смыслом (API) From 785fa2e285d19e777c2616835ad21113b2ece654 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 20 Mar 2019 22:08:23 +0200 Subject: [PATCH 28/74] Add parallel programming module --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fef1867..5543df7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ - [Структуры данных](https://github.com/HowProgrammingWorks/Dictionary#Структуры-данных) - [Расширенные понятия](https://github.com/HowProgrammingWorks/Dictionary#Расширенные-понятия) - [Примеры кода и комплексного использования технологий](https://github.com/HowProgrammingWorks/Dictionary#Примеры-кода-и-комплексного-использования-технологий) +- [Параллельное программирование](https://github.com/HowProgrammingWorks/Dictionary#Параллельное-программирование) - [Парадигмы программирования](https://github.com/HowProgrammingWorks/Dictionary#Парадигмы-программирования) ## Базовые понятия @@ -314,7 +315,7 @@ - Паттерн реализует выбор одного из совместимых и взаимозаменяемых классов, которые содержат поведение (алгоритм), аналогичный по функциональности и реализующий общий интерфейс. Актуален и для функционального программирования. -- [Фасад / Facade] https://github.com/HowProgrammingWorks/Facade +- [Фасад / Facade](https://github.com/HowProgrammingWorks/Facade) - Паттерн для скрытия сложности. Фасад скрывает несколько инстансов разных классов в своих свойствах (иногда приватных, но для JS этого пока нет) и предоставляет общий (фасадный) интерфейс для управления ими. @@ -418,6 +419,15 @@ - [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) - [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) +## Параллельное программирование + +- [Потоки / Threads](https://github.com/HowProgrammingWorks/Threads) + - SharedArrayBuffer + - worker_threads в Node.js +- [Атомарные операуии / Atomics](https://github.com/HowProgrammingWorks/Atomics) +- [Семафор / Semaphore](https://github.com/HowProgrammingWorks/Semaphore) +- [Мьютекс / Mutex](https://github.com/HowProgrammingWorks/Mutex) + ## Парадигмы программирования - [Императивное программирование / Imperative Programming](https://github.com/HowProgrammingWorks/ImperativeProgramming) From 02113ef77c4f40004bfcf76604584da9a51b7a23 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 21 Mar 2019 01:13:24 +0200 Subject: [PATCH 29/74] Add HTTP sessions repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5543df7..2a5cf83 100644 --- a/README.md +++ b/README.md @@ -418,6 +418,7 @@ - [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) - [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) +- [HTTP сессии на cookies](https://github.com/HowProgrammingWorks/Session) ## Параллельное программирование From f0b8a7b977624c0964aa236f4185a7d694d155dd Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 21 Mar 2019 02:29:50 +0200 Subject: [PATCH 30/74] Update license --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 716dbfd..f1dbfed 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-2018 How.Programming.Works contributors +Copyright (c) 2017-2019 How.Programming.Works contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From fa99cb35b200aa4ceaf9edcd08a281011022a0aa Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 25 Mar 2019 21:15:03 +0200 Subject: [PATCH 31/74] Add async programming section --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2a5cf83..33e439e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ - [Расширенные понятия](https://github.com/HowProgrammingWorks/Dictionary#Расширенные-понятия) - [Примеры кода и комплексного использования технологий](https://github.com/HowProgrammingWorks/Dictionary#Примеры-кода-и-комплексного-использования-технологий) - [Параллельное программирование](https://github.com/HowProgrammingWorks/Dictionary#Параллельное-программирование) +- [Асинхронное программирование](https://github.com/HowProgrammingWorks/Dictionary#Асинхронное-программирование) - [Парадигмы программирования](https://github.com/HowProgrammingWorks/Dictionary#Парадигмы-программирования) ## Базовые понятия @@ -246,8 +247,7 @@ - [Множественное наследование / Multiple Inheritance](https://github.com/HowProgrammingWorks/Inheritance) - [Непрямое наследование / Indirect Inheritance](https://github.com/HowProgrammingWorks/Inheritance) - [Генератор / Generator](https://github.com/HowProgrammingWorks/Generator) -- [Синхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) -- [Асинхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) +- [Итератор / Iterable and Iterator](https://github.com/HowProgrammingWorks/Iterator) - [Ввод/вывод / I/O, Input-output](https://github.com/HowProgrammingWorks/AsynchronousProgramming) - операции, выходящие за рамки CPU и RAM (арифметико-логического устройства и памяти), т.е. операции с устройствами ввода вывода: сеть, диск, порты, @@ -379,9 +379,8 @@ - [Символ / Symbol](https://github.com/HowProgrammingWorks/Symbol) - [Дифер / Deferred](https://github.com/HowProgrammingWorks/Callbacks) - [Промис / Promise](https://github.com/HowProgrammingWorks/Promise) +- [Необработанные ошибки в промисах на Node.js](https://github.com/HowProgrammingWorks/PromiseError) - [Фьючер / Future](https://github.com/HowProgrammingWorks/Callbacks) -- [Асинхронность при помощи async/await](https://github.com/HowProgrammingWorks/AsynchronousProgramming) -- [Асинхронная композиция / Asynchronous Composition](https://github.com/metarhia/metasync/blob/master/lib/composition.js) - [Коллекторы данных / Data and Key Collectors](https://github.com/metarhia/metasync/blob/master/lib/collector.js) - Неизменяемые данные / Immutable Data - Изменяемые данные / Mutable Data @@ -420,6 +419,16 @@ - [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) - [HTTP сессии на cookies](https://github.com/HowProgrammingWorks/Session) +## Асинхронное программирование + +- [Синхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) +- [Асинхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) +- [Асинхронность при помощи async/await](https://github.com/HowProgrammingWorks/AsynchronousProgramming) +- [Асинхронная композиция / Asynchronous Composition](https://github.com/metarhia/metasync/blob/master/lib/composition.js) +- [Асинхронный генератор / Async Generator](https://github.com/HowProgrammingWorks/AsyncGenerator) +- [Асинхронный итератор / Async Iterator](https://github.com/HowProgrammingWorks/AsyncIterator) +- [Проблема асинхронного стектрейса](https://www.youtube.com/watch?v=pfiHTx3j87Y) + ## Параллельное программирование - [Потоки / Threads](https://github.com/HowProgrammingWorks/Threads) From ce3f1846c3c6c80512b6bf653dd5e5af6adb4dd4 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 29 Mar 2019 23:24:00 +0200 Subject: [PATCH 32/74] Add link to API repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 33e439e..bdb5524 100644 --- a/README.md +++ b/README.md @@ -400,6 +400,7 @@ - Кластеризация / Cluster mode - При помощи [cluster](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cluster) - при помощи [child_process](https://github.com/HowProgrammingWorks/NodeServer/tree/master/native-cp) + - [Разработка API (клиент и сервер)](https://github.com/HowProgrammingWorks/API) - Сервер приложений / Application Server - Тонкий клиент и толстый клиент - [Проекция данных / Projection](https://github.com/HowProgrammingWorks/Projection) From a05bb6dc97c98edfba4999927f9506a2476082f1 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 30 Mar 2019 21:38:33 +0200 Subject: [PATCH 33/74] Add lenses repo --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bdb5524..2e13c1d 100644 --- a/README.md +++ b/README.md @@ -413,6 +413,7 @@ - [Динамическая загрузка модулей / Live Code Reload](https://github.com/HowProgrammingWorks/LiveReload) - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) - [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) +- [Линзы - функциональные аналоги геттера и сеттера](https://github.com/HowProgrammingWorks/Lenses) ## Примеры кода и комплексного использования технологий From ea86c76717b4cbe7529d5a57ef591c5e2f7179de Mon Sep 17 00:00:00 2001 From: Anton Korniychuk <11693557+korniychuk@users.noreply.github.com> Date: Sat, 18 May 2019 11:32:13 +0300 Subject: [PATCH 34/74] typo fixed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e13c1d..f924e7a 100644 --- a/README.md +++ b/README.md @@ -436,7 +436,7 @@ - [Потоки / Threads](https://github.com/HowProgrammingWorks/Threads) - SharedArrayBuffer - worker_threads в Node.js -- [Атомарные операуии / Atomics](https://github.com/HowProgrammingWorks/Atomics) +- [Атомарные операции / Atomics](https://github.com/HowProgrammingWorks/Atomics) - [Семафор / Semaphore](https://github.com/HowProgrammingWorks/Semaphore) - [Мьютекс / Mutex](https://github.com/HowProgrammingWorks/Mutex) From 8bd3fc0236f3539c41f1f7167f3af097e1cf5468 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 12 Jun 2019 03:55:18 +0300 Subject: [PATCH 35/74] Asynchronous programming lectures --- README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2e13c1d..e9eaab4 100644 --- a/README.md +++ b/README.md @@ -423,13 +423,58 @@ ## Асинхронное программирование -- [Синхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) -- [Асинхронные операции](https://github.com/HowProgrammingWorks/AsynchronousProgramming) -- [Асинхронность при помощи async/await](https://github.com/HowProgrammingWorks/AsynchronousProgramming) -- [Асинхронная композиция / Asynchronous Composition](https://github.com/metarhia/metasync/blob/master/lib/composition.js) -- [Асинхронный генератор / Async Generator](https://github.com/HowProgrammingWorks/AsyncGenerator) -- [Асинхронный итератор / Async Iterator](https://github.com/HowProgrammingWorks/AsyncIterator) -- [Проблема асинхронного стектрейса](https://www.youtube.com/watch?v=pfiHTx3j87Y) +- [1. Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) +- [2. Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) + - Таймеры: https://github.com/HowProgrammingWorks/Timers + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter + - События: https://github.com/metarhia/common/blob/master/lib/events.js +- [3. Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Библиотека do: https://github.com/metarhia/do +- [4. Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) + - Примеры кода: https://github.com/HowProgrammingWorks/NonBlocking +- [5. Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming + - Библиотека async.js: https://caolan.github.io/async/ +- [6. Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) + - Примеры кода: https://github.com/HowProgrammingWorks/Promise +- [7. Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait +- [8. Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter +- [9. Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) + - Примеры кода: https://github.com/HowProgrammingWorks/Collector + - Библиотека: https://github.com/metarhia/metasync +- [10. Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) + - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError +- [11. Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) + - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace +- [12. Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) + - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator +- [13. Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) + - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator +- [14. Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) + - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable +- [15. Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose +- [16. Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) + - Примеры кода: https://github.com/HowProgrammingWorks/Thenable +- [17. Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) + - Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue +- [18. Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) + - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor +- [19. Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) + - Примеры кода: https://github.com/HowProgrammingWorks/Future +- [20. Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) + - Примеры кода: https://github.com/HowProgrammingWorks/Deferred +- [21. Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) + - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel +- [22. Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) + - Примеры кода: https://github.com/HowProgrammingWorks/Observer +- [23. Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) + - Примеры кода: https://github.com/HowProgrammingWorks/Rx ## Параллельное программирование From 2717f2c88e28b1c362538b5acd39ad5882cbce56 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 23 Jul 2019 23:33:02 +0300 Subject: [PATCH 36/74] Add basic terminology --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/README.md b/README.md index e9eaab4..b2872f9 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,31 @@ - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки) +- Функция / Function +- Инструкция / Instruction +- Оператор / Operator +- Команда / Command +- Идентификатор / Identifier +- Переменная / Variable +- Значение / Value +- Скаляр / Scalar / Primitive / Atomic value +- Ссылка / Reference +- Тип / Type +- Литерал / Literal +- Парадигма +- Алгоритм / Algorithm +- Выражение / Expression +- Оператор / Statement +- Цикл / Loop +- Синтаксис / Syntax +- Отладка / Debug +- ЦП / CPU +- АЛУ / ALU +- Модель / Model +- Блок кода / Block +- Модель / Module +- Компонент / Component +- Библиотека / Library ## Основные понятия From aa65d5ef8aab3db2237ccf633f0034f1f011a3ae Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 24 Jul 2019 02:05:09 +0300 Subject: [PATCH 37/74] Add and rewrite definitions --- README.md | 68 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index b2872f9..09689d1 100644 --- a/README.md +++ b/README.md @@ -15,17 +15,32 @@ ## Базовые понятия -- [Абстракция / Abstraction](https://github.com/HowProgrammingWorks/Reusable) и повторное использование - - обобщенное решение задачи, в отличие от конкретного решения, подходящее для - широкого круга задач - - модель реального объекта (множества объектов), являющаяся приближением к - реальности, обобщением - - множество свойств объекта, относящиеся к определенному его аспекту +- [Абстракция / Abstraction](https://github.com/HowProgrammingWorks/Reusable) +это обобщение, отвлеченное от конкретики с выделением существенных и отсечением +несущественных свойств и связей. Абстрагирование - построение абстракций или +моделей, повышает повторное использование алгоритмов и структур данных. + - Абстракция - обобщенное решение задачи (в отличие от конкретного решения), + подходящее для широкого круга задач; + - Абстракция - модель реального объекта (множества объектов), обобщение + множества, приближение к реальности, достаточное для решения задачи; + - Абстракция - множество свойств и связей объекта, относящееся к определенному + его аспекту, необходимому для решения задачи; - [Слои абстракций / Abstraction Layer](https://github.com/HowProgrammingWorks/AbstractionLayers) - Парадигма программирования / Programming Paradigm - - подход к решению задач на ЭВМ, характеризующийся стилем, набором приемов, - допущений и ограничений - - совокупность идей и понятий, применяемых для написания программного кода + - Парадигма задает набор идей и понятий, допущений и ограничений, концепций, + принципов, постулатов, приемов и техники программирования для решения задач + на ЭВМ; + - Парадигма предлагает модель резения задач, определенный стиль, шаблоны + (примеры хороших и плохих решений) применяемых для написания программного кода; +- Синтаксис / Syntax - формальные правила построения структуры программного кода +из символов, но не затрагивающих смысловую (семантическую) нагрузку кода. +- Значение / Value +- Скаляр / Scalar / Primitive / Atomic value +- Идентификатор / Identifier +- Переменная / Variable +- Ссылка / Reference +- Тип / Type +- Литерал / Literal - [Переменная / Variable](https://github.com/HowProgrammingWorks/DataTypes) - именованная область памяти, имеющая тип данных, адрес и значение - имя (идентификатор), с которым связано значение и тип данных @@ -56,9 +71,14 @@ - Логическое значение, определяющее состояние чего-либо, например, признак закрытия соединения, признак завершения поиска по структуре данных и т.д. - `let flagName = false;` -- Массив / Array - - коллекция эллементов, доступ к которым осуществляется по индексам - - `const cities = ['Tehran', 'Yalta', 'Potsdam'];` +- Алгоритм / Algorithm +- Инструкция / Instruction +- Оператор / Operator +- Команда / Command +- Выражение / Expression +- Оператор / Statement +- Блок кода / Block +- Функция / Function - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - многократное исполнение блока операторов - [Условие / Conditional statements](https://github.com/HowProgrammingWorks/Conditional) @@ -69,29 +89,13 @@ - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки) -- Функция / Function -- Инструкция / Instruction -- Оператор / Operator -- Команда / Command -- Идентификатор / Identifier -- Переменная / Variable -- Значение / Value -- Скаляр / Scalar / Primitive / Atomic value -- Ссылка / Reference -- Тип / Type -- Литерал / Literal -- Парадигма -- Алгоритм / Algorithm -- Выражение / Expression -- Оператор / Statement -- Цикл / Loop -- Синтаксис / Syntax +- Массив / Array + - коллекция эллементов, доступ к которым осуществляется по индексам + - `const cities = ['Tehran', 'Yalta', 'Potsdam'];` - Отладка / Debug - ЦП / CPU - АЛУ / ALU -- Модель / Model -- Блок кода / Block -- Модель / Module +- Модуль / Module - Компонент / Component - Библиотека / Library From 587a871dd5da3659e19ad299cf369491806d5583 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 24 Jul 2019 13:35:13 +0300 Subject: [PATCH 38/74] Add definitions for value, type, literal, scalar, reference --- README.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 09689d1..e8756ff 100644 --- a/README.md +++ b/README.md @@ -32,15 +32,27 @@ на ЭВМ; - Парадигма предлагает модель резения задач, определенный стиль, шаблоны (примеры хороших и плохих решений) применяемых для написания программного кода; -- Синтаксис / Syntax - формальные правила построения структуры программного кода -из символов, но не затрагивающих смысловую (семантическую) нагрузку кода. -- Значение / Value -- Скаляр / Scalar / Primitive / Atomic value +- Синтаксис / Syntax - правила построения программного кода из символов, но не +затрагивающие смысловую (семантическую) нагрузку кода. Синтаксис определяет +только формальную структуру кода. +- Значение / Value - величина, записанная в определенное место памяти в +определенном формате и представляющая данные, которым может манипулировать +программа; +- Тип / Type - множество знанчений и операции, которые могут быть произведены над +этими значениями. Например, в JavaScript тип `Boolean` предполагает два значения +`true` и `false` и логические операции над ними, тип `Null` предполагает одно +значение `null`, а тип `Number` множество рациональных чисел с дополнительными +ограничениями на минимальное и максимальное значение, а так же ограничения на +точность и математические операции `+ - * ** / % ++ -- > < >= <= & | ~ ^ << >>`. +- Литерал / Literal - запись значения в коде программы. Напромер: литералы чисел, +логических значений, null и undefined, строк, массивов, объектов, функций. +Литералы могут иметь различный синтаксис, от очень простого, для записи чисел, +до сложных синтаксических конструкций, для записи объектов. +- Скаляр / Scalar / Primitive / Atomic value - значение примитивного типа данных. +Скаляр копируется при присвоении и передается в функцию по значению. +- Ссылка / Reference указывает на значение ссылочного типа, т.е. не скалярное +значение, для JavaScript это подтипы `Object`. - Идентификатор / Identifier -- Переменная / Variable -- Ссылка / Reference -- Тип / Type -- Литерал / Literal - [Переменная / Variable](https://github.com/HowProgrammingWorks/DataTypes) - именованная область памяти, имеющая тип данных, адрес и значение - имя (идентификатор), с которым связано значение и тип данных From 59a4adaa5f5bc21405e1fcaab62f16456cee7096 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 25 Jul 2019 18:50:11 +0300 Subject: [PATCH 39/74] Add definitions for identifiers --- README.md | 52 ++++++++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index e8756ff..78ba35c 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,8 @@ значение `null`, а тип `Number` множество рациональных чисел с дополнительными ограничениями на минимальное и максимальное значение, а так же ограничения на точность и математические операции `+ - * ** / % ++ -- > < >= <= & | ~ ^ << >>`. + - [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) + - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof x);` - Литерал / Literal - запись значения в коде программы. Напромер: литералы чисел, логических значений, null и undefined, строк, массивов, объектов, функций. Литералы могут иметь различный синтаксис, от очень простого, для записи чисел, @@ -51,38 +53,28 @@ - Скаляр / Scalar / Primitive / Atomic value - значение примитивного типа данных. Скаляр копируется при присвоении и передается в функцию по значению. - Ссылка / Reference указывает на значение ссылочного типа, т.е. не скалярное -значение, для JavaScript это подтипы `Object`. -- Идентификатор / Identifier -- [Переменная / Variable](https://github.com/HowProgrammingWorks/DataTypes) - - именованная область памяти, имеющая тип данных, адрес и значение - - имя (идентификатор), с которым связано значение и тип данных - - переменная предоставляет возможность менять значение (а для некоторых - языков и тип) - - `let cityName = 'Beijing';` -- [Константа / Constant](https://github.com/HowProgrammingWorks/DataTypes) - - имя (идентификатор), с которым связано неизменяемое значение и тип - - `const WATCH_TIMEOUT = 5000;` -- [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) - - тип - это множество значений и операции, определенные на этом множестве - - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof x);` -- Примитивные или [скалярные типы / Scalar Types](https://github.com/HowProgrammingWorks/DataTypes) - - примитивные типы имеют одно значение, а не несколько структурированных - значений и передаются по значению (копирование значения), а не по ссылке - - например: `Number, String, Boolean` -- [Структурные типы / Composed types](https://github.com/HowProgrammingWorks/DataTypes) - - композитные типы или структуры состоят из нескольких скалярных значений, - объедиенных в одно таким образом, чтоб над этим объединенным значением можно - было выполнять набор операций - - например: объект, массив, множество, кортеж -- [Ссылочные типы / Reference](https://github.com/HowProgrammingWorks/DataTypes) - - типы данных, передаваемые по ссылке, а не по значению - - например: `Object, Function, Array` +значение, для JavaScript это подтипы `Object, Function, Array`. + - [ссылочные типы](https://github.com/HowProgrammingWorks/DataTypes) - [примеры кода по массивам и объектам](https://github.com/HowProgrammingWorks/DataStructures) +- Идентификатор / Identifier - имена переменных, констант, функций, методов, +аргументов, классов, как внутренние, так и импортированные из других модулей и +глобальные. +- [Переменная / Variable](https://github.com/HowProgrammingWorks/DataTypes) - +именованная область памяти (идентификатор), имеющая тип данных, адрес и +значение. Мы можем менять значение переменной в отличие от константы (а для +некоторых языков и тип): `let cityName = 'Beijing';` +- [Константа / Constant](https://github.com/HowProgrammingWorks/DataTypes) - +идентификатор, с которым связано неизменяемое значение и тип: +`const WATCH_TIMEOUT = 5000;` +- [Структурные типы / Composed types](https://github.com/HowProgrammingWorks/DataTypes) - +композитные типы или структуры состоят из нескольких скалярных значений, +объедиенных в одно таким образом, чтоб над этим объединенным значением можно +выполнять набор операций, например: объект, массив, множество, кортеж. - [Перечислимые типы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) -- Флаг / Flag - - Логическое значение, определяющее состояние чего-либо, например, признак - закрытия соединения, признак завершения поиска по структуре данных и т.д. - - `let flagName = false;` +- Флаг / Flag - Логическое значение, определяющее состояние чего-либо, например, +признак закрытия соединения, признак завершения поиска по структуре данных и т.д. +Например: `let flagName = false;` Иногда флагами могут называть не логические, а +перечислемые типы. - Алгоритм / Algorithm - Инструкция / Instruction - Оператор / Operator From 52c18ed865cf5b8b5b92281696cc04be2a5be552 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 26 Jul 2019 23:35:23 +0300 Subject: [PATCH 40/74] Add definitions for Algorithm, Instruction and Statement --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 78ba35c..664c18e 100644 --- a/README.md +++ b/README.md @@ -75,12 +75,14 @@ признак закрытия соединения, признак завершения поиска по структуре данных и т.д. Например: `let flagName = false;` Иногда флагами могут называть не логические, а перечислемые типы. -- Алгоритм / Algorithm -- Инструкция / Instruction -- Оператор / Operator -- Команда / Command +- Алгоритм / Algorithm - это формальное описанние порядка вычислений для +определенного класса задач. +- Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция +процессора исполняется CPU. +- Оператор / Statement - наименьшая синтаксическая часть языка программирования, +исполняемая интерпретатором, средой или компилируемая в машинный код. +- Команда / Command - атомарная задача для командного процессора. - Выражение / Expression -- Оператор / Statement - Блок кода / Block - Функция / Function - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) From c2013381c90817f32417a92a60d495ae634ddb13 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 26 Jul 2019 23:43:59 +0300 Subject: [PATCH 41/74] Add definition for Assignment --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 664c18e..ba91bc8 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,9 @@ именованная область памяти (идентификатор), имеющая тип данных, адрес и значение. Мы можем менять значение переменной в отличие от константы (а для некоторых языков и тип): `let cityName = 'Beijing';` +- Присвоение / Assignment - связывания значения и идентификатора (например +переменной). Операция присвоения во многих языках возвращает присваиваемое +значение (имеет поведение выражения). - [Константа / Constant](https://github.com/HowProgrammingWorks/DataTypes) - идентификатор, с которым связано неизменяемое значение и тип: `const WATCH_TIMEOUT = 5000;` From 8f675c5809cf97eedf876fa2a8cb75ce92a6ad31 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 27 Jul 2019 03:33:13 +0300 Subject: [PATCH 42/74] Definitions: Expression, Block, Collection, Array --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ba91bc8..d362b8f 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,12 @@ - Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. - Команда / Command - атомарная задача для командного процессора. -- Выражение / Expression -- Блок кода / Block +- Выражение / Expression - синтаксическая конструкция языка прогаммирования +предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, +значений, операторов и вызова функций. Пример: `(len - 1) * f(x, INTERVAL)` +- Блок кода / Block - логически связанная группа инструкций или операторов. +Блоки создают область видимости. Блоки могут быть вложенными. Примеры: `{}`, +`(+ a b)`, `begin end`, отступы в Python. - Функция / Function - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - многократное исполнение блока операторов @@ -98,9 +102,11 @@ - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки) -- Массив / Array - - коллекция эллементов, доступ к которым осуществляется по индексам - - `const cities = ['Tehran', 'Yalta', 'Potsdam'];` +- [Коллекция / Collection](https://github.com/HowProgrammingWorks/Collections) - +структура данных, служащая для хранения набора значений и предоставляющая доступ +к ним по индексам или ключам. +- Массив / Array - коллекция эллементов, доступ к которым осуществляется по +индексам. Пример: `const cities = ['Tehran', 'Yalta', 'Potsdam'];` - Отладка / Debug - ЦП / CPU - АЛУ / ALU From 0c1e939050c22dc0c23abcaca4388f89ae818208 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 27 Jul 2019 23:33:34 +0300 Subject: [PATCH 43/74] Changed Algorithm definitiona and Programm added --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d362b8f..055483f 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,10 @@ Например: `let flagName = false;` Иногда флагами могут называть не логические, а перечислемые типы. - Алгоритм / Algorithm - это формальное описанние порядка вычислений для -определенного класса задач. +определенного класса задач за конечное время (способность завершаться для любого +множества входных данных). +- Программа / Programm - программный код и данные, объединенные в одно целое для +вычисления и управления ЭВМ. - Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. - Оператор / Statement - наименьшая синтаксическая часть языка программирования, From 6ba8cae5f5978f10b97988e6222273a9d42e0330 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 00:17:07 +0300 Subject: [PATCH 44/74] Add notes/TODOs about complexity --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 055483f..bde6d4a 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,10 @@ - Модуль / Module - Компонент / Component - Библиотека / Library +- Сложность / Complexity + - Вычислительная сложность / Computational complexity + - Колмогоровская (описательная) сложность / Kolmogorov (descriptive) complexity + - Если нет циклов, то описательная коррелирует с вычислительной ## Основные понятия From 39e5f40f55e50db23e263a6f01777d8970c4a00c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 28 Jul 2019 13:31:31 +0300 Subject: [PATCH 45/74] Add definitions fot function and signature --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bde6d4a..990969f 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,14 @@ - Блок кода / Block - логически связанная группа инструкций или операторов. Блоки создают область видимости. Блоки могут быть вложенными. Примеры: `{}`, `(+ a b)`, `begin end`, отступы в Python. -- Функция / Function +- Функция / Function - абстракция преобразования значений. Функция однозначно +отображает одно множество значений в другое множество значений. Функция может +быть задана блоком операторов или выражением. Функция может быть вызвана по +имени или через указатель. Функция способствует повторному использованию кода +и может быть вызвана из разных частей программы, много раз и с разными +аргументами. +- Сигнатура функции / Function signature - имя (идентификатор), количество +аргументов и их типы (а иногда и имена аргументов), тип результата. - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - многократное исполнение блока операторов - [Условие / Conditional statements](https://github.com/HowProgrammingWorks/Conditional) From 682b1cf0777f1530a74955bfd528eb7957b4731c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 5 Aug 2019 23:51:25 +0300 Subject: [PATCH 46/74] Add definitions --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 990969f..58e794f 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,15 @@ к ним по индексам или ключам. - Массив / Array - коллекция эллементов, доступ к которым осуществляется по индексам. Пример: `const cities = ['Tehran', 'Yalta', 'Potsdam'];` -- Отладка / Debug -- ЦП / CPU -- АЛУ / ALU +- Отладка / Debug - процесс обнаружения и устранения ошибок в программном +обеспечении при помощи вывода сообщений или инструментов: отладчика, +профилировщика, декомпилятора, систем мониторинга ресурсов и логирования, +систем непрерывной интеграции и тестирования. +- ЦП / CPU - центральный процессор / central processing unit - устройство, +выполняющее машинные инструкции. +- АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования +над машинными словами, представляющими целые числа, числа с плавающей точкой, +адресами памяти, строками, логическими величинами. - Модуль / Module - Компонент / Component - Библиотека / Library From aaeaaee4391622a7169ba6f64b139966b7912f9c Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 7 Aug 2019 23:27:08 +0300 Subject: [PATCH 47/74] Module and modularity definitions --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1324acc..2e742c6 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,16 @@ - АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования над машинными словами, представляющими целые числа, числа с плавающей точкой, адресами памяти, строками, логическими величинами. -- Модуль / Module +- Модуль / Module - целостный, функционально полный, независимый компонент +программной системы имеющий имя, интерфейс, реализацию. +- [Модульность / Modularity](https://github.com/HowProgrammingWorks/Modularity) + - модульность повышает переиспользование кода, упрощает интеграцию компонентов, + улучшает компоновку и тестирование программ по частям; + - ограничения: модули не должны использовать глобальные переменные или + модифицировать базовые классы/прототипы/функции языка программирования, + платформы и/или фреймворка; модули должны быть слабо связаны, а + взаимодействовать друг с другом должны через внешнее API (предпочтительно) + или шину событий (если система построена на событийной модели, подписке). - Компонент / Component - Библиотека / Library - Сложность / Complexity @@ -340,16 +349,6 @@ - [Регулярные выражения / Regular Expressions](https://github.com/HowProgrammingWorks/RegExp) - синтаксическая конструкция, паттерн, формальный язык, определяющий порядок парсинга другой синтаксической конструкции -- [Модуль, модульность](https://github.com/HowProgrammingWorks/Modularity) - - целостный, функционально полный, независимый компонент программной системы - имеющий имя, интерфейс, реализацию - - модульность повышает переиспользование кода, упрощает интеграцию компонентов, - улучшает компоновку и тестирование программ по частям - - ограничения: модули не должны использовать глобальные переменные или - модифицировать базовые классы/прототипы/функции языка программирования, - платформы и/или фреймворка; модули должны быть слабо связаны, взаимодействовать - друг с другом только через внешнее API (предпочтительно) или шину событий - (если система построена на событийной модели, подписке или модели акторов) - [Зависимость / Dependency](https://github.com/HowProgrammingWorks/Project) - связанность программных компонентов, при которой один компонент (зависимый) "знает" другой; это значит, что в нем помещен вызов метода (реализация которого From 7adb30795d725abaaf504c10549f57721c9fbb2e Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 7 Aug 2019 23:52:38 +0300 Subject: [PATCH 48/74] Consolidate definitions: procedure, function, method --- README.md | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 2e742c6..0e2ee73 100644 --- a/README.md +++ b/README.md @@ -94,14 +94,23 @@ - Блок кода / Block - логически связанная группа инструкций или операторов. Блоки создают область видимости. Блоки могут быть вложенными. Примеры: `{}`, `(+ a b)`, `begin end`, отступы в Python. +- Процедура или подпрограмма / Procedure or Subroutine - логически связанная +группа инструкций или операторов, имеющая имя. Процедура способствует повторному +использованию кода и может быть вызвана из разных частей программы, много раз +и с разными аргументами. Процедура не возвращает значений, в отличие от функций, +но может модифицировать свои аргументы. Во многих языках процедура описывается +при помощи синтаксиса функций (например, типа void). - Функция / Function - абстракция преобразования значений. Функция однозначно отображает одно множество значений в другое множество значений. Функция может -быть задана блоком операторов или выражением. Функция может быть вызвана по -имени или через указатель. Функция способствует повторному использованию кода -и может быть вызвана из разных частей программы, много раз и с разными -аргументами. +быть задана блоком операторов или выражением. Функция имеет набор аргументов. +Функция может быть вызвана по имени или через указатель. Функция способствует +повторному использованию кода и может быть вызвана из разных частей программы, +много раз и с разными аргументами. - Сигнатура функции / Function signature - имя (идентификатор), количество аргументов и их типы (а иногда и имена аргументов), тип результата. +- [Метод / Method](https://github.com/HowProgrammingWorks/Function) + - процедура, связанная с объектным контекстом или программным интерфейсом; + - `{ a: 10, b: 10, sum() { return this.a + this.b; } }` - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - многократное исполнение блока операторов - [Условие / Conditional statements](https://github.com/HowProgrammingWorks/Conditional) @@ -169,16 +178,8 @@ ищутся свойства, пока не будут найдены или пока не будет достигнут конец) - шаблон, который клонируется во время инстанциирования - [Функция](https://github.com/HowProgrammingWorks/Function) - - определения - - функциональное программирование: отображение или преобразование элементов - одного множества в элементы другого множества - - императивное программирование: ссылка на блок операторов (не обязательно - именованный), реализующий последовательность действий - - обобщенное определение: выражение или блок операторов, имеющий имя или - анонимный, преобразующий аргументы в результаты, или изменяющий состояние - контекстов или объектов - - [Контекст](https://github.com/HowProgrammingWorks/Function) - - [Область видимости / Scope](https://github.com/HowProgrammingWorks/Function) + - Контекст функции + - Область видимости / Scope - Объявление функции / Function definition - `function max(a, b) { return a + b; }` - Функциональное выражение / Function expression @@ -232,9 +233,6 @@ прототипов соответсвенно - Функциональное наследование / Functional Inheritance - при помощи замыканий, ч.п., каррирования, лямбд -- [Метод / Method](https://github.com/HowProgrammingWorks/Function) - - функция, связанная с объектным контекстом или программным интерфейсом - - `{ a: 10, b: 10, sum() { return this.a + this.b; } }` - [Обертка / Wrapper](https://github.com/HowProgrammingWorks/Wrapper) - функция, которая оборачивает другую функцию (иногда объект, интерфейс или функциональный объект), добавляя ему дополнительное поведение From ee4a5833945b74e9e0f56f16eff02924022eb2a4 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 8 Aug 2019 00:39:37 +0300 Subject: [PATCH 49/74] Rewrite and move recursion definotion --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0e2ee73..55c615e 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,16 @@ - синтаксическая конструкция, позволяющая выполнить разные действия или возвращающая разные значения (тернарный оператор) в зависимости от логического выражения (возвращающего true или false) +- [Рекурсия / Recursion](https://github.com/HowProgrammingWorks/Recursion) - +задание алгоритма вычисления функции через вызов ее самой (прямой или непрямой) +или определение функции, через нее саму. + - Косвенная (непрямая) рекурсия - когда функция определена или вызывает себя + не напрямую, а через другую или цепочку функций; + - Хвостовая - частный случай, когда рекурсивный вызов является последней + операцией перед возвратом значения, что всегда может быть преобразовано + в цикл, даже автоматическим способом. Не хвостовая тоже может быть + преобразована в цикл и оптимизирована, но более сложным способом, обычно + вручную. - [Строка / String](https://github.com/HowProgrammingWorks/String) - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные @@ -238,15 +248,6 @@ функциональный объект), добавляя ему дополнительное поведение - можно обернуть целый API интерфейс и даже асинхронную функцию вместе с колбеками (если известен контракт) -- [Рекурсия / Recursion](https://github.com/HowProgrammingWorks/Recursion) - - Рекурсия - определение функции, через нее саму или задание алгоритма - вычисления функции через ее же вызов (или непрямой/косвенный вызов). - - Косвенная рекурсия - когда фнкция определена или вызывает себя не - напрямую, а через другую или цепочку функций. - - Хвостовая - частный случай, когда рекурсивный вызов является последней - операцией перед возвратом значения, что всегда может быть преобразовано - в цикл, даже автоматическим способом. Не хвостовая может быть преобразована - в цикл и оптимизирована более сложным способом, обычно вручную. - [Дженерики / Generics](https://github.com/HowProgrammingWorks/Generics) - Обобщенное программирование - парадигма, позволяющая обобщенно описать алгоритмы и структуры данных, абстрагируясь от конкретных типов. From 2905486211526ecc5fc61f7ed69240230a275671 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 8 Aug 2019 01:12:45 +0300 Subject: [PATCH 50/74] Add definitions for library and component --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 55c615e..8d73d1e 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,8 @@ - АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования над машинными словами, представляющими целые числа, числа с плавающей точкой, адресами памяти, строками, логическими величинами. +- Компонент / Component - несколько программных объектов (например: функций, +классов, монад, типов) объединенных и организованных по общему признаку. - Модуль / Module - целостный, функционально полный, независимый компонент программной системы имеющий имя, интерфейс, реализацию. - [Модульность / Modularity](https://github.com/HowProgrammingWorks/Modularity) @@ -155,8 +157,11 @@ платформы и/или фреймворка; модули должны быть слабо связаны, а взаимодействовать друг с другом должны через внешнее API (предпочтительно) или шину событий (если система построена на событийной модели, подписке). -- Компонент / Component -- Библиотека / Library +- Библиотека / Library - сборник программных объектов (например: функций, +классов, монад, типов) подготовленный для повторного использования (часто +опубликованный). Библиотека это более крупная логическая часть кода, чем +компонент. Иногда библиотеку используют как синоним модуля, а иногда библиотека +состоит из нескольких модулей. - Сложность / Complexity - Вычислительная сложность / Computational complexity - Колмогоровская (описательная) сложность / Kolmogorov (descriptive) complexity From 4ec796ef21c0aaf636d2b2957eabb355d968902b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sat, 10 Aug 2019 13:46:07 +0300 Subject: [PATCH 51/74] Refresh definitions: object, class, prototype, instance, instantiation --- README.md | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8d73d1e..839535f 100644 --- a/README.md +++ b/README.md @@ -169,29 +169,32 @@ ## Основные понятия -- [Объект / Object](https://github.com/HowProgrammingWorks/DataTypes) - - структура данных, содержащая состояние и методы, связанные с этим состоянием - - объект может быть создан как литерал `{}` или экземпляр класса (прототипа) - `new ClassName()` или как экземпляр прототипа `new PrototypeConstructor()` или - возвращен из фабрики +- [Объект или Экземпляр / Object or Instance](https://github.com/HowProgrammingWorks/DataTypes) - +структура данных, содержащая состояние и методы, связанные с этим состоянием. +Объект может быть создан как литерал `{}` или экземпляр класса `new ClassName()` +или как экземпляр прототипа `new PrototypeConstructor()` или возвращен из фабрики. - `const person = { name: 'Marcus', city: 'Roma', born: 121 };` - `const person = new Person('Marcus', 'Roma', 121);` -- Инстанциирование / Instantiation - - создание объекта (экземпляра) или выделение памяти для структуры данных +- [Класс / Class](https://github.com/HowProgrammingWorks/Prototype) - +программная абстракция, объединяющая состояние и поведение (свойства и методы) +своих экземпляров (инстансов). + - `class Point { constructor(x, y) { this.x = x; this.y = y; } }` + - `class Rect { move(x, y) { this.x += x; this.y += y; } }` + - `class Square extends Rect { constructor(x, y, m) { super(x, y, m, m); } }` + - `class Point { static from(point) { return new Point(this.x, this.y); } }` +- [Прототип / Prototype](https://github.com/HowProgrammingWorks/Prototype) - +специальный объект, на который ссылаются его экземпляры и наследники. Свойства +прототипа становятся видны у наследников, если эти свойства не переопределены у +наследников. Формируется цепочка прототипов, по которой происходит +последовательный поиск свойств, пока они не будут найдены или пока не будет +достигнут конец цепочки наследования. Иногда под прототипом понимается шаблон, +который клонируется во время инстанциирования (не для JavaScript). +- Инстанциирование / Instantiation - создание объекта (экземпляра) или выделение +памяти для структуры данных. - `const rect = new Rectangle(-50, -50, 100, 150);` - `const rect = { a: { x: -50, y: -50 }, b: { x: 100, y: 150 } };` - `const cities = new Array(1000);` - `const cities = ['Tehran', 'Kiev', 'Yalta', 'Beijing', 'Potsdam', 'London'];` -- Класс / Class - - программная абстракция, обобщающая свойства и методы, состояние и поведение - своих экземпляров - - `class Point { constructor(x, y) { this.x = x; this.y = y; } }` -- [Прототип / Prototype](https://github.com/HowProgrammingWorks/Prototype) - - специальный объект, на который ссылаются его экземпляры, и свойства - которого становятся видны у наследников, если эти свойства не переопределены - у наследников (формируется цепочка прототипов, по которой последовательно - ищутся свойства, пока не будут найдены или пока не будет достигнут конец) - - шаблон, который клонируется во время инстанциирования - [Функция](https://github.com/HowProgrammingWorks/Function) - Контекст функции - Область видимости / Scope From 59491783da9e64333d6923b361c4c66a3f0427a7 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 13 Aug 2019 07:27:10 +0300 Subject: [PATCH 52/74] Add definitions for scope and lexical environment --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 839535f..cf6b73f 100644 --- a/README.md +++ b/README.md @@ -195,9 +195,18 @@ - `const rect = { a: { x: -50, y: -50 }, b: { x: 100, y: 150 } };` - `const cities = new Array(1000);` - `const cities = ['Tehran', 'Kiev', 'Yalta', 'Beijing', 'Potsdam', 'London'];` -- [Функция](https://github.com/HowProgrammingWorks/Function) - - Контекст функции - - Область видимости / Scope +- Область видимости / Scope - часть кода, из которой "виден" идентификатор. +- Лексический контекст / Lexical environment - набор идентификаторов, связанных +с определенными значениями в рамках функции или блока кода (в том числе блоков +циклов, условий и т.д.). +- Объектный контекст функции - объект, связанный со служебным идентификатором +`this`. Все функции, кроме стрелочных, могут быть связаны с объектным контекстом. +Объект связан с `this` если функция являются методами этого объекта, если функция +привязана к менму через `bind` или вызвана через `apply` и `call`. +- Глобальный контекст / Global context - глобальный объект-справочник. Если +идентификатор не находится ни в одном из вложенных лексических контекстов, то +будет выполнен его поиск в глобальном контексте (global, window, sandbox). +- Функции - Объявление функции / Function definition - `function max(a, b) { return a + b; }` - Функциональное выражение / Function expression From 13cd471676c1ca0e0fbed718fdd52308b9b6b0f9 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 13 Aug 2019 07:33:11 +0300 Subject: [PATCH 53/74] Refresh function-related definitions --- README.md | 111 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index cf6b73f..84731e6 100644 --- a/README.md +++ b/README.md @@ -206,60 +206,63 @@ - Глобальный контекст / Global context - глобальный объект-справочник. Если идентификатор не находится ни в одном из вложенных лексических контекстов, то будет выполнен его поиск в глобальном контексте (global, window, sandbox). -- Функции - - Объявление функции / Function definition - - `function max(a, b) { return a + b; }` - - Функциональное выражение / Function expression - - функциональное выражение с именованной функцией / Named function expression - - `const max = function max(a, b) { return a + b; };` - - анонимное функциональное выражение / Anonymous function expression - - `const max = function(a, b) { return a + b; };` - - лямбда-функция / Lambda function - - `const max = (a, b) => { return a + b; };` - - лябмда-выражение, Функция-стрелка / Lambda expression, Arrow function - - `const max = (a, b) => (a + b);` - - [Чистая функция / Pure Function](https://github.com/HowProgrammingWorks/Function) - - функция, вычисляющая результат только на основе аргументов, не имеющая - состояния и не обращающаяся к операциям ввода-вывода - - функция, результат которой всегда детерминированный, т.е. для любого - аргумента всегда будет один и тот же результат - - функция, не имеющая побочных эффектов (см. побочный эффект) - - [Замыкание / Closure](https://github.com/HowProgrammingWorks/Closure) - - если вернуть функцию `g` из функции `f`, то `g` будет видеть контекст - функции `f`, так же, как и свои аргументы - - если `f` возвращает `g`, то говорят, что экземпляр `g` замкнул контекст `f` - - способ, позволяющий связать функцию с контекстом (с данными или - переменными контекста) - - замыкание является аналогом свойств в ООП, тоже связывающие свойства с - методами через объект, по сути объект в ООП сам является контекстом - связывания - - при помощи замыкания можно реализовать функциональное наследование - - `const add = a => b => a + b;` - - `const hash = (data = {}) => (key, value) => (data[key] = value, data);` - - [Суперпозиция / Superposition](https://github.com/HowProgrammingWorks/Composition) - - объединение вызова функций в выражения таким образом, что результат одних - функций становится аргументами других функций - - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` - - [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) - - `const compose = (f1, f2) => x => f2(f1(x));` - - `const compose = (...funcs) => (...args) => (funcs.reduce((args, fn) => [fn(...args)], args));` - - [Частичное применение / Partial application](https://github.com/HowProgrammingWorks/PartialApplication) - - `const partial = (fn, x) => (...args) => fn(x, ...args);` - - [Каррирование / Currying](https://github.com/HowProgrammingWorks/PartialApplication) - - `const result = curry((a, b, c) => (a + b + c))(1, 2)(3);` - - [Побочные эффекты / Side effects](https://github.com/HowProgrammingWorks/Function) - - [Функция высшего порядка / Higher-order Function](https://github.com/HowProgrammingWorks/HigherOrderFunction) - - если функция только в аргументах, то это колбек - - если функция только в результате, то это фабрика функций на замыканиях - - если возвращаемая функция имеет тот же смысл, что и получаемая в - аргументах (+ дополнительное поведение), то это обертка - - очень редко бывает, что возвращаемая функция не связана с функцией из - аргументов (но пока ни кто не нашел вразумительного примера, где это - реально нужно) - - если на выходе класс или функция-конструктор, то это фабрики классов и - прототипов соответсвенно - - Функциональное наследование / Functional Inheritance - - при помощи замыканий, ч.п., каррирования, лямбд +- Объявление функции / Function definition - способ объявления функции, который +виден из любого места в лексическом контексте, в котором объявлена функция, +пример: `function sum(a, b) { return a + b; }` +- Функциональное выражение / Function expression - связывание функции с +идентификатором при помощи присвоения, при котором значение будет доступно через +идентификатор не во всем лексическом контексте, а только после места присвоения. +Имеет несколько синтакчических вариантов: + - функциональное выражение с именованной функцией / Named function expression + - `const max = function max(a, b) { return a + b; };` + - анонимное функциональное выражение / Anonymous function expression + - `const max = function(a, b) { return a + b; };` + - лямбда-функция / Lambda function + - `const max = (a, b) => { return a + b; };` + - лябмда-выражение, Функция-стрелка / Lambda expression, Arrow function + - `const max = (a, b) => (a + b);` +- [Чистая функция / Pure Function](https://github.com/HowProgrammingWorks/Function) + - функция, вычисляющая результат только на основе аргументов, не имеющая + состояния и не обращающаяся к операциям ввода-вывода + - функция, результат которой всегда детерминированный, т.е. для любого + аргумента всегда будет один и тот же результат + - функция, не имеющая побочных эффектов (см. побочный эффект) +- [Замыкание / Closure](https://github.com/HowProgrammingWorks/Closure) + - если вернуть функцию `g` из функции `f`, то `g` будет видеть контекст + функции `f`, так же, как и свои аргументы + - если `f` возвращает `g`, то говорят, что экземпляр `g` замкнул контекст `f` + - способ, позволяющий связать функцию с контекстом (с данными или + переменными контекста) + - замыкание является аналогом свойств в ООП, тоже связывающие свойства с + методами через объект, по сути объект в ООП сам является контекстом + связывания + - при помощи замыкания можно реализовать функциональное наследование + - `const add = a => b => a + b;` + - `const hash = (data = {}) => (key, value) => (data[key] = value, data);` +- [Суперпозиция / Superposition](https://github.com/HowProgrammingWorks/Composition) + - объединение вызова функций в выражения таким образом, что результат одних + функций становится аргументами других функций + - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` +- [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) + - `const compose = (f1, f2) => x => f2(f1(x));` + - `const compose = (...funcs) => (...args) => (funcs.reduce((args, fn) => [fn(...args)], args));` +- [Частичное применение / Partial application](https://github.com/HowProgrammingWorks/PartialApplication) + - `const partial = (fn, x) => (...args) => fn(x, ...args);` +- [Каррирование / Currying](https://github.com/HowProgrammingWorks/PartialApplication) + - `const result = curry((a, b, c) => (a + b + c))(1, 2)(3);` +- [Побочные эффекты / Side effects](https://github.com/HowProgrammingWorks/Function) +- [Функция высшего порядка / Higher-order Function](https://github.com/HowProgrammingWorks/HigherOrderFunction) + - если функция только в аргументах, то это колбек + - если функция только в результате, то это фабрика функций на замыканиях + - если возвращаемая функция имеет тот же смысл, что и получаемая в + аргументах (+ дополнительное поведение), то это обертка + - очень редко бывает, что возвращаемая функция не связана с функцией из + аргументов (но пока ни кто не нашел вразумительного примера, где это + реально нужно) + - если на выходе класс или функция-конструктор, то это фабрики классов и + прототипов соответсвенно +- Функциональное наследование / Functional Inheritance + - при помощи замыканий, ч.п., каррирования, лямбд - [Обертка / Wrapper](https://github.com/HowProgrammingWorks/Wrapper) - функция, которая оборачивает другую функцию (иногда объект, интерфейс или функциональный объект), добавляя ему дополнительное поведение From 255cafe0ef65cc37e65d6b604756c43eb982acd0 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 14 Aug 2019 23:37:00 +0300 Subject: [PATCH 54/74] Improve definitions --- README.md | 61 +++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 84731e6..de7fd6b 100644 --- a/README.md +++ b/README.md @@ -304,37 +304,36 @@ - [Дескриптор / Handle](https://github.com/HowProgrammingWorks/Files) - уникальный идентификатор программного объекта (чаще всего объекта операционной системы): файла, сокета, окна, таймера, оединения и т.д. -- Состояние / State - - совокупность данных программного компонента (переменных и структур данных), - определяющие его поведение и реакцию на операции с ним -- Кэш, Кэширование / Cache - - место временного хранения данных (буфер, коллекция, область памяти) для - быстрого доступа и оптимизации - - возможно кеширование операций чтения, вычислений, операций записи (когда - запись не может быть поизведена достаточно быстро) или упрезжающее чтение в - буфер (когда можно определить, какие данные будут запрошены с наибольшей - вероятностью) -- Хэширование / Hashing - - преобразование данных произвольной длины (буфера, массива, объекта или - структуры данных) в последовательность битов определенной длины (хеш) при - помощи хеш-функции (при изменении 1 бита в данных хеш меняется существенно) -- [Функциональный объект](https://github.com/HowProgrammingWorks/Functor) - - [Функтор / Functor](https://github.com/HowProgrammingWorks/Functor) - - функтор - это рекурсивное замыкание / recursive closure - - объект функционального типа, хранящий в себе защищенное значение и - позволяющий отобразить это значение в другой функтор через функцию - - [Аппликативный функтор](https://github.com/HowProgrammingWorks/Functor) - - Монада / Monad -- [Мемоизация / Memoization](https://github.com/HowProgrammingWorks/Memoization) - - обертка функции, сохраняющая результаты выполнения функции для - предотвращения повторных вычислений -- [Примесь / Mixin](https://github.com/HowProgrammingWorks/Mixin) - - добавление свойств, методов или поведения к объекту после его - инстанциирования (создания) - - `Object.assign(target, { field1, field2 }, { field3 });` -- Декоратор / Decorator - - шаблон оборачивания объектов или функций для добавления новой - функциональности при помощи специального синтаксиса +- Состояние / State - совокупность данных программного компонента (переменных +и структур данных), определяющие его поведение и реакцию на операции с ним. +- Кэш / Cache - место временного хранения данных (буфер, коллекция, область +памяти) для быстрого доступа и оптимизации. Возможно кеширование операций +чтения, вычислений, операций записи (когда запись не может быть поизведена +достаточно быстро) или упрезжающее чтение в буфер (когда можно определить, +какие данные будут запрошены с наибольшей вероятностью). +- Хэширование / Hashing - преобразование данных произвольной длины (буфера, +массива, объекта или структуры данных) в последовательность битов определенной +длины (хеш) при помощи хеш-функции (при изменении хоть 1 бита в данных хеш +меняется существенно). +- [Функциональный объект](https://github.com/HowProgrammingWorks/Functor) - +объект функционального типа, который является функцией и объектом одновременно. +Другими словами, функциональный объект может быть вызван, как функция и может +иметь свойства и методы, как объект. +- [Функтор / Functor](https://github.com/HowProgrammingWorks/Functor) - это +функциональный объект, который является еще и рекурсивным замыканием. Функтор +хранит в замыкании защищенное значение и позволяющий отобразить это значение +в другой функтор через вызов функции (обычно `map`). +- [Аппликативный функтор](https://github.com/HowProgrammingWorks/Functor) - +функтор, который имеет метод `apply`. +- Монада / Monad - аппликативный функтор, который имеет метод `chain`. +- [Мемоизация / Memoization](https://github.com/HowProgrammingWorks/Memoization) - +обертка, сохраняющая результаты выполнения функции для предотвращения повторных +вычислений. +- [Примесь / Mixin](https://github.com/HowProgrammingWorks/Mixin) - добавление +свойств, методов или поведения к объекту после его инстанциирования. Пример: +`Object.assign(target, { field1, field2 }, { field3 });` +- Декоратор / Decorator - шаблон оборачивания объектов или функций для добавления +новой функциональности без наследования при помощи специального синтаксиса. - [Наследование / Inheritance](https://github.com/HowProgrammingWorks/Inheritance) - [Множественное наследование / Multiple Inheritance](https://github.com/HowProgrammingWorks/Inheritance) - [Непрямое наследование / Indirect Inheritance](https://github.com/HowProgrammingWorks/Inheritance) From 509b5cf86b53e653206fd9c3a0683543b89c02de Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 16 Aug 2019 11:35:53 +0300 Subject: [PATCH 55/74] Add parallel programming definitions --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index de7fd6b..3159955 100644 --- a/README.md +++ b/README.md @@ -495,6 +495,21 @@ - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) - [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) - [Линзы - функциональные аналоги геттера и сеттера](https://github.com/HowProgrammingWorks/Lenses) +- Состояние гонки / Race Condition - состояние в многопоточкой или конкурентной +программной системе, когда несколько потоков исполнения конкурируюя за общий +ресурс портят данные, приводят к непредусмотренному порядку исполнения, +зацикливаются, и т.д., что приводит к утечке ресурсов, непредсказуемому и +неправильному поведению, уязвимостям, нестабильности работы. +- Взаимная блокировка / Deadlock - состояние в многопроцессовой (распределенной) +системе, когда несколько процессов захватили ресурсы, необходимые для дальнейшей +работы друг друга, заблокировав, тем самым дальнейшую работу. +- Livelock - зацикленная блокировка, бесконечно изменяющея состояние, но не +выполняющая полезной работы. +- Ресурсный голод / Resource starvation - состояние в программной системе (обычно +многопоточной), когда она постоянно запрашивает доступ к ресурсам (обычно +разделяемым), и не может их получить. +- Критическая секция / Critical section - участок исполняемого кода, в котором +производится эксклюзивный доступ к разделяемому ресурсу. ## Примеры кода и комплексного использования технологий From c625c4e9718bf88b763ce2c31566992bdcb6b9dc Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Thu, 22 Aug 2019 17:45:17 +0300 Subject: [PATCH 56/74] Improve formatting --- README.md | 205 +++++++++++++++++++++++++++--------------------------- 1 file changed, 101 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 3159955..b2fb25e 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ только формальную структуру кода. - Значение / Value - величина, записанная в определенное место памяти в определенном формате и представляющая данные, которым может манипулировать -программа; +программа. - Тип / Type - множество знанчений и операции, которые могут быть произведены над этими значениями. Например, в JavaScript тип `Boolean` предполагает два значения `true` и `false` и логические операции над ними, тип `Null` предполагает одно @@ -130,7 +130,7 @@ - [Строка / String](https://github.com/HowProgrammingWorks/String) - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные - скобки) + скобки). - [Коллекция / Collection](https://github.com/HowProgrammingWorks/Collections) - структура данных, служащая для хранения набора значений и предоставляющая доступ к ним по индексам или ключам. @@ -229,19 +229,19 @@ - функция, не имеющая побочных эффектов (см. побочный эффект) - [Замыкание / Closure](https://github.com/HowProgrammingWorks/Closure) - если вернуть функцию `g` из функции `f`, то `g` будет видеть контекст - функции `f`, так же, как и свои аргументы - - если `f` возвращает `g`, то говорят, что экземпляр `g` замкнул контекст `f` + функции `f`, так же, как и свои аргументы; + - если `f` возвращает `g`, то говорят, что экземпляр `g` замкнул контекст `f`; - способ, позволяющий связать функцию с контекстом (с данными или - переменными контекста) + переменными контекста); - замыкание является аналогом свойств в ООП, тоже связывающие свойства с методами через объект, по сути объект в ООП сам является контекстом - связывания - - при помощи замыкания можно реализовать функциональное наследование + связывания; + - при помощи замыкания можно реализовать функциональное наследование; - `const add = a => b => a + b;` - `const hash = (data = {}) => (key, value) => (data[key] = value, data);` - [Суперпозиция / Superposition](https://github.com/HowProgrammingWorks/Composition) - объединение вызова функций в выражения таким образом, что результат одних - функций становится аргументами других функций + функций становится аргументами других функций; - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` - [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) - `const compose = (f1, f2) => x => f2(f1(x));` @@ -252,58 +252,58 @@ - `const result = curry((a, b, c) => (a + b + c))(1, 2)(3);` - [Побочные эффекты / Side effects](https://github.com/HowProgrammingWorks/Function) - [Функция высшего порядка / Higher-order Function](https://github.com/HowProgrammingWorks/HigherOrderFunction) - - если функция только в аргументах, то это колбек - - если функция только в результате, то это фабрика функций на замыканиях + - если функция только в аргументах, то это колбек; + - если функция только в результате, то это фабрика функций на замыканиях; - если возвращаемая функция имеет тот же смысл, что и получаемая в - аргументах (+ дополнительное поведение), то это обертка + аргументах (+ дополнительное поведение), то это обертка; - очень редко бывает, что возвращаемая функция не связана с функцией из аргументов (но пока ни кто не нашел вразумительного примера, где это - реально нужно) + реально нужно); - если на выходе класс или функция-конструктор, то это фабрики классов и - прототипов соответсвенно -- Функциональное наследование / Functional Inheritance - - при помощи замыканий, ч.п., каррирования, лямбд + прототипов соответсвенно; +- Функциональное наследование / Functional Inheritance - при помощи замыканий, +частичного применения, каррирования, вложенных лямбд. - [Обертка / Wrapper](https://github.com/HowProgrammingWorks/Wrapper) - функция, которая оборачивает другую функцию (иногда объект, интерфейс или - функциональный объект), добавляя ему дополнительное поведение + функциональный объект), добавляя ему дополнительное поведение; - можно обернуть целый API интерфейс и даже асинхронную функцию вместе с - колбеками (если известен контракт) + колбеками (если известен контракт); - [Дженерики / Generics](https://github.com/HowProgrammingWorks/Generics) - Обобщенное программирование - парадигма, позволяющая обобщенно описать алгоритмы и структуры данных, абстрагируясь от конкретных типов. - Интерфейс / Interface - набор методов (функций) объединенных или общим объектным контекстом или - применением к структурам данных одной предметной области т.е. смыслом (API) + применением к структурам данных одной предметной области т.е. смыслом (API); - способ определения (спецификации) контракта, по которому связаны - программные компоненты + программные компоненты; - Набор методов с их именами, аргументами и типами аргументов - Программный интерфейс / Application Interface, API - - интерфейс программных компонентов: модулей, слоев абстракции, приложений + - интерфейс программных компонентов: модулей, слоев абстракции, приложений; - [Синглтон / Singleton](https://github.com/HowProgrammingWorks/Singleton) - шаблон проектирования, предполагающий, что в одном пространстве имен (процессе, приложении, базе данных) будет только один экземпляр класса (или просто один подобный объект) к которому можно обратиться по определенному - (известному) имени + (известному) имени; - [Функция обратного вызова, колбек / Callback](https://github.com/HowProgrammingWorks/Callbacks) - функция передаваемая в качестве аргумента в другую функцию (или метод) - для того, чтобы быть вызванной для возврата значения, ошибки или уведомления + для того, чтобы быть вызванной для возврата значения, ошибки или уведомления; - функции обратного вызова имеют подтипы: - - один раз вызываемые (чаще всего) + - один раз вызываемые (чаще всего); - [Событие / Event](https://github.com/HowProgrammingWorks/Callbacks) - [Лисенер / Listener](https://github.com/HowProgrammingWorks/Callbacks) -- [Итерирование / Iteration](https://github.com/HowProgrammingWorks/Iteration) - - многократное повторение одного блока кода или одной функции над различными - данными: элементами массивов, множеств, списков, коллекций и различными - значениями переменной цикла -- [Итератор / Iterator](https://github.com/HowProgrammingWorks/Iteration) - - интерфейс доступа к элементам коллекции: массива, множества, списка +- [Итерирование / Iteration](https://github.com/HowProgrammingWorks/Iteration) - +многократное повторение одного блока кода или одной функции над различными +данными: элементами массивов, множеств, списков, коллекций и различными +значениями переменной цикла. +- [Итератор / Iterator](https://github.com/HowProgrammingWorks/Iteration) - +интерфейс доступа к элементам коллекции: массива, множества, списка; - [Файл / File](https://github.com/HowProgrammingWorks/Files) - [Поток, Файловый поток / Stream, File Stream](https://github.com/HowProgrammingWorks/Streams) -- [Сокет / Socket](https://github.com/HowProgrammingWorks/Socket) - - программный интерфейс (или абстракция) для обмена данными между процессами -- [Дескриптор / Handle](https://github.com/HowProgrammingWorks/Files) - - уникальный идентификатор программного объекта (чаще всего объекта операционной - системы): файла, сокета, окна, таймера, оединения и т.д. +- [Сокет / Socket](https://github.com/HowProgrammingWorks/Socket) - +программный интерфейс (или абстракция) для обмена данными между процессами. +- [Дескриптор / Handle](https://github.com/HowProgrammingWorks/Files) - +уникальный идентификатор программного объекта (чаще всего объекта операционной +системы): файла, сокета, окна, таймера, оединения и т.д. - Состояние / State - совокупность данных программного компонента (переменных и структур данных), определяющие его поведение и реакцию на операции с ним. - Кэш / Cache - место временного хранения данных (буфер, коллекция, область @@ -343,74 +343,72 @@ - операции, выходящие за рамки CPU и RAM (арифметико-логического устройства и памяти), т.е. операции с устройствами ввода вывода: сеть, диск, порты, консоль (клавиатура и экран), друге переферийные устройства (взаимодействие - с которыми на порядки медленнее, чем внутренние операции а АЛУ и памяти) + с которыми на порядки медленнее, чем внутренние операции а АЛУ и памяти); - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - универсальная абстракция для работы с событиями чере подписку (subscription: addListener, on, once) и отправку (emit) - [Чеининг / Chaining](https://github.com/HowProgrammingWorks/Chaining) - цепочный синтаксис вызова функций `total(april)(may)(july)` или методов `array.filter(f1).reduce(f2)` -- [Сериализация / Serialization](https://github.com/HowProgrammingWorks/Serialization) - - преобразование структуры данных (развернутой в памяти) в битовую - последовательность, обычно в последовательность байтов (бинарная сериализация) - или в строку (текстовая сериализация) -- [Десериализация / Deserialization](https://github.com/HowProgrammingWorks/Serialization) - - операция, обратная сериализации, т.е. восстановление структуры данных - из последовательности битов (чаще байтов или строки) -- Парсинг / Parsing - - синтаксический анализ текста, результатом чего может являться: - - для формальной граматики - AST-дерево - - для слабоструктурированного документа - структура данных, имеющая - четкую структуру, в которую частично перенесены данные из слабой структуры - - для других естественных или искуственных языков - информационные модели, - им соответствующие -- [Регулярные выражения / Regular Expressions](https://github.com/HowProgrammingWorks/RegExp) - - синтаксическая конструкция, паттерн, формальный язык, определяющий - порядок парсинга другой синтаксической конструкции -- [Зависимость / Dependency](https://github.com/HowProgrammingWorks/Project) - - связанность программных компонентов, при которой один компонент (зависимый) - "знает" другой; это значит, что в нем помещен вызов метода (реализация которого - содержится в другом) или он слушает событие, которое генерирует другой или - он "знает" структуры данных, которые могут быть переданы из другого компонента -- Декомпозиция / Decomposition - - разделение программного компонента на части по принципу функциональности, - при этом, каждая часть будет решать подзадачу и появится часть кода, которая - определяет порядок связи всех частей (композицию) +- [Сериализация / Serialization](https://github.com/HowProgrammingWorks/Serialization) - +преобразование структуры данных (развернутой в памяти) в битовую +последовательность, обычно в последовательность байтов (бинарная сериализация) +или в строку (текстовая сериализация). +- [Десериализация / Deserialization](https://github.com/HowProgrammingWorks/Serialization) - +операция, обратная сериализации, т.е. восстановление структуры данных из +последовательности битов (чаще байтов или строки). +- Парсинг / Parsing - синтаксический анализ текста, результатом чего может являться: + - для формальной граматики - AST-дерево; + - для слабоструктурированного документа - структура данных, имеющая + четкую структуру, в которую частично перенесены данные из слабой структуры; + - для других естественных или искуственных языков - информационные модели, + им соответствующие; +- [Регулярные выражения / Regular Expressions](https://github.com/HowProgrammingWorks/RegExp) - +синтаксическая конструкция, паттерн, формальный язык, определяющий порядок +парсинга другой синтаксической конструкции. +- [Зависимость / Dependency](https://github.com/HowProgrammingWorks/Project) - +связанность программных компонентов, при которой один компонент (зависимый) +"знает" другой; это значит, что в нем помещен вызов метода (реализация которого +содержится в другом) или он слушает событие, которое генерирует другой или он +"знает" структуры данных, которые могут быть переданы из другого компонента. +- Декомпозиция / Decomposition - разделение программного компонента на части по +принципу функциональности, при этом, каждая часть будет решать подзадачу и +появится часть кода, которая определяет порядок связи всех частей (композицию). - [Ленивость / Lazy](https://github.com/HowProgrammingWorks/Lazy) - [Обработка ошибок / Error handling](https://github.com/HowProgrammingWorks/Errors) -- [Фабрика / Factory](https://github.com/HowProgrammingWorks/Factory) - - функция или метод для инстациирования объектов, функций, структур данных и - любых других программных абстракций, например, экземпляров класса в обход - конструктора или функциональных объектов -- Объектный Пул / [Object Pool](https://github.com/HowProgrammingWorks/Pool) - - Множество заранее инстанциированных объектов (или массивов, сокетов, буферов, - структур данных и других программных абстракций) из которого мы можем их брать - инициализированные экземпляры (вместо инстанциирования новых) и отдавать их - после использования +- [Фабрика / Factory](https://github.com/HowProgrammingWorks/Factory) - функция +или метод для инстациирования объектов, функций, структур данных и любых других +программных абстракций, например, экземпляров класса в обход конструктора или +функциональных объектов. +- Объектный Пул / [Object Pool](https://github.com/HowProgrammingWorks/Pool) - +Множество заранее инстанциированных объектов (или массивов, сокетов, буферов, +структур данных и других программных абстракций) из которого мы можем их брать +инициализированные экземпляры (вместо инстанциирования новых) и отдавать их +после использования. - [Таймеры / Timers](https://github.com/HowProgrammingWorks/Timers) -- [Адаптер / Adapter](https://github.com/HowProgrammingWorks/Adapter) - - Паттерн достижения совместимости, позволяющий обернуть класс, функцию или - другой программный компонент с несовместимым контрактом в программный - компонент с контрактом, который нам нужен. -- [Стратегия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - - Паттерн реализует выбор одного из совместимых и взаимозаменяемых классов, - которые содержат поведение (алгоритм), аналогичный по функциональности и - реализующий общий интерфейс. Актуален и для функционального программирования. -- [Фасад / Facade](https://github.com/HowProgrammingWorks/Facade) - - Паттерн для скрытия сложности. Фасад скрывает несколько инстансов разных - классов в своих свойствах (иногда приватных, но для JS этого пока нет) и - предоставляет общий (фасадный) интерфейс для управления ими. - - Для функционального программирования возможен аналог фасада - функция - обертка, скрывающая инстансы в своем контексте и предоставляющая доступ - к ним через возврат функции (с замыканием) или другого инстанса (методы - которого тоже имеют доступ к скрываемым инстансам через замыкание). +- [Адаптер / Adapter](https://github.com/HowProgrammingWorks/Adapter) - +Паттерн достижения совместимости, позволяющий обернуть класс, функцию или +другой программный компонент с несовместимым контрактом в программный +компонент с контрактом, который нам нужен. +- [Стратегия (Strategy)](https://github.com/HowProgrammingWorks/Strategy) - +Паттерн реализует выбор одного из совместимых и взаимозаменяемых классов, +которые содержат поведение (алгоритм), аналогичный по функциональности и +реализующий общий интерфейс. Актуален и для функционального программирования. +- [Фасад / Facade](https://github.com/HowProgrammingWorks/Facade) - Паттерн +для скрытия сложности. Фасад скрывает несколько инстансов разных классов в +своих свойствах (иногда приватных, но для JS этого пока нет) и предоставляет +общий (фасадный) интерфейс для управления ими. Для функционального +программирования возможен аналог фасада - функция обертка, скрывающая +инстансы в своем контексте и предоставляющая доступ к ним через возврат +функции (с замыканием) или другого инстанса (методы которого тоже имеют +доступ к скрываемым инстансам через замыкание). ## Вспомогательные материалы -- [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) - - статический анализатор кода (без запуска), который может определить и - предложить стилистические, грамматические или оптимизационное улучшение или - просто выявить проблему (а иногда и исправить ее автоматически) +- [Линтер / Linter](https://github.com/HowProgrammingWorks/Tools) - статический +анализатор кода (без запуска), который может определить и предложить +стилистические, грамматические или оптимизационное улучшение или просто выявить +проблему (а иногда и исправить ее автоматически). - Система контроля версий - Менеджер пакетов - Непрерывная интеграция @@ -428,28 +426,27 @@ - Реализация на замыканиях и функциональных объектах - Реализация на одной и двух категориях (только узел или список и узел) - [Стек, очередь, дек](https://github.com/HowProgrammingWorks/Dequeue) - - Стек / Stack - Список, работающий про принципу LIFO - - Очередь / Queue - Список, работающий про принципу FIFO - - [Дек / Dequeue](https://github.com/HowProgrammingWorks/Dequeue) - двухсторонняя очередь (одновременно LIFO и FIFO) + - Стек / Stack - список, работающий про принципу LIFO; + - Очередь / Queue - список, работающий про принципу FIFO; + - Дек / Dequeue - двухсторонний список, работающий, как стек и очередь; - [Дерево](https://github.com/HowProgrammingWorks/Trees) -- [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), -поисковое дерево, красно-черное дерево +- [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), поисковое +дерево, красно-черное дерево. - Куча / Heap - древовидная структура данных или область памяти для динамического - распределения под хранение данных +распределения под хранение данных. - [Граф / Graph](https://github.com/HowProgrammingWorks/Graph) -- [Буфер / Buffer](https://github.com/HowProgrammingWorks/Buffers) - - область памяти для хранения данных (обычно для операций ввода/вывода) +- [Буфер / Buffer](https://github.com/HowProgrammingWorks/Buffers) - +область памяти для хранения данных (обычно для операций ввода/вывода). - Типизированные массивы -- [Коллекция / Collection](https://github.com/HowProgrammingWorks/Collections) - - структура данных, служащая для хранения набора значений и предоставляющая - доступ к ним по индексам или ключам +- [Коллекция / Collection](https://github.com/HowProgrammingWorks/Collections) - +структура данных, служащая для хранения набора значений и предоставляющая +доступ к ним по индексам или ключам. - [Множество / Set](https://github.com/HowProgrammingWorks/Set) - - структура данных, реализующая математическое "множество" + - структура данных, реализующая математическое "множество"; - структура данных, служащая для хранения однородного набора значений, которые не имеют индексов или ключей (но внутри структуры данных они должны иметь порядок, например, индекс в массиве, однако, множество абстрагирует нас от - этой особенности реализации) + этой особенности реализации). - [Ключ-значение, Хешмап / Map, Key-value](https://github.com/HowProgrammingWorks/KeyValue) - [класс `Map`](https://github.com/HowProgrammingWorks/Map) From 3ca0990d4e9e52786c66843da3e4ffe4c410cc9a Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Sun, 25 Aug 2019 23:54:48 +0300 Subject: [PATCH 57/74] Add more basic terms to define --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b2fb25e..0d02fb1 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,10 @@ множества входных данных). - Программа / Programm - программный код и данные, объединенные в одно целое для вычисления и управления ЭВМ. +- Инженерия программного обеспечения / Software engineering +- Программирование / Programming +- Кодирование / Coding +- Разработка программного обеспечения / Software development - Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. - Оператор / Statement - наименьшая синтаксическая часть языка программирования, From 8c2baac56e88400faccbcb5fece4e4b4c2f73bb9 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 26 Aug 2019 15:03:06 +0300 Subject: [PATCH 58/74] Add engineering definition --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d02fb1..bece9fe 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,11 @@ множества входных данных). - Программа / Programm - программный код и данные, объединенные в одно целое для вычисления и управления ЭВМ. -- Инженерия программного обеспечения / Software engineering +- Инженерия / Engineering - извлечение практической пользы из имеющихся русурсов +при помощь науки, техники, различных методик, организационной структуры, а так +же приемов и знаний. +- Инженерия программного обеспечения / Software engineering - приложение +инженерии к индустрии программного обеспечения; - Программирование / Programming - Кодирование / Coding - Разработка программного обеспечения / Software development From 45ffe2959f73a7bd172856e19140d7aa5c31cd36 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Wed, 28 Aug 2019 23:50:07 +0300 Subject: [PATCH 59/74] Add definitions for coding, programming and development --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bece9fe..4a00f6c 100644 --- a/README.md +++ b/README.md @@ -87,10 +87,16 @@ при помощь науки, техники, различных методик, организационной структуры, а так же приемов и знаний. - Инженерия программного обеспечения / Software engineering - приложение -инженерии к индустрии программного обеспечения; -- Программирование / Programming -- Кодирование / Coding -- Разработка программного обеспечения / Software development +инженерии к индустрии программного обеспечения. Включает архитектуру, +исследование, разработку, тестирование, развертывание и поддержку ПО. +- Программирование / Programming - это искусство и инженерия решения задач при +помощи вычислительной техники. +- Кодирование / Coding - написание исходного кода программы при помощи +определенного синтаксиса (языка), стиля и парадигмы по готовому ТЗ. +- Разработка программного обеспечения / Software development - это соединение +программирования и кодирования на всех этапов жизненного цикла ПО: +проектирования, разработки, тестировния, отладки, поддержки, сопровождения и +модификации. - Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. - Оператор / Statement - наименьшая синтаксическая часть языка программирования, From cf251bdd198e7f643a80929ea8e2ad6fb8798a2b Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 30 Aug 2019 00:46:33 +0300 Subject: [PATCH 60/74] Fix spelling --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 4a00f6c..4c43e2f 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ - Парадигма задает набор идей и понятий, допущений и ограничений, концепций, принципов, постулатов, приемов и техники программирования для решения задач на ЭВМ; - - Парадигма предлагает модель резения задач, определенный стиль, шаблоны + - Парадигма предлагает модель решения задач, определенный стиль, шаблоны (примеры хороших и плохих решений) применяемых для написания программного кода; - Синтаксис / Syntax - правила построения программного кода из символов, но не затрагивающие смысловую (семантическую) нагрузку кода. Синтаксис определяет @@ -38,7 +38,7 @@ - Значение / Value - величина, записанная в определенное место памяти в определенном формате и представляющая данные, которым может манипулировать программа. -- Тип / Type - множество знанчений и операции, которые могут быть произведены над +- Тип / Type - множество значений и операции, которые могут быть произведены над этими значениями. Например, в JavaScript тип `Boolean` предполагает два значения `true` и `false` и логические операции над ними, тип `Null` предполагает одно значение `null`, а тип `Number` множество рациональных чисел с дополнительными @@ -46,7 +46,7 @@ точность и математические операции `+ - * ** / % ++ -- > < >= <= & | ~ ^ << >>`. - [Типы данных / Data Types](https://github.com/HowProgrammingWorks/DataTypes) - `[5, 'Kiev', true, { city: 'Beijing' }, a => ++a ].map(x => typeof x);` -- Литерал / Literal - запись значения в коде программы. Напромер: литералы чисел, +- Литерал / Literal - запись значения в коде программы. Например: литералы чисел, логических значений, null и undefined, строк, массивов, объектов, функций. Литералы могут иметь различный синтаксис, от очень простого, для записи чисел, до сложных синтаксических конструкций, для записи объектов. @@ -71,19 +71,19 @@ `const WATCH_TIMEOUT = 5000;` - [Структурные типы / Composed types](https://github.com/HowProgrammingWorks/DataTypes) - композитные типы или структуры состоят из нескольких скалярных значений, -объедиенных в одно таким образом, чтоб над этим объединенным значением можно +объединенных в одно таким образом, чтоб над этим объединенным значением можно выполнять набор операций, например: объект, массив, множество, кортеж. - [Перечислимые типы / Enumerated types](https://github.com/HowProgrammingWorks/Enum) - Флаг / Flag - Логическое значение, определяющее состояние чего-либо, например, признак закрытия соединения, признак завершения поиска по структуре данных и т.д. Например: `let flagName = false;` Иногда флагами могут называть не логические, а -перечислемые типы. -- Алгоритм / Algorithm - это формальное описанние порядка вычислений для +перечислимые типы. +- Алгоритм / Algorithm - это формальное описание порядка вычислений для определенного класса задач за конечное время (способность завершаться для любого множества входных данных). - Программа / Programm - программный код и данные, объединенные в одно целое для вычисления и управления ЭВМ. -- Инженерия / Engineering - извлечение практической пользы из имеющихся русурсов +- Инженерия / Engineering - извлечение практической пользы из имеющихся ресурсов при помощь науки, техники, различных методик, организационной структуры, а так же приемов и знаний. - Инженерия программного обеспечения / Software engineering - приложение @@ -95,14 +95,14 @@ определенного синтаксиса (языка), стиля и парадигмы по готовому ТЗ. - Разработка программного обеспечения / Software development - это соединение программирования и кодирования на всех этапов жизненного цикла ПО: -проектирования, разработки, тестировния, отладки, поддержки, сопровождения и +проектирования, разработки, тестирования, отладки, поддержки, сопровождения и модификации. - Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. - Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. - Команда / Command - атомарная задача для командного процессора. -- Выражение / Expression - синтаксическая конструкция языка прогаммирования +- Выражение / Expression - синтаксическая конструкция языка программирования предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, значений, операторов и вызова функций. Пример: `(len - 1) * f(x, INTERVAL)` - Блок кода / Block - логически связанная группа инструкций или операторов. @@ -148,7 +148,7 @@ - [Коллекция / Collection](https://github.com/HowProgrammingWorks/Collections) - структура данных, служащая для хранения набора значений и предоставляющая доступ к ним по индексам или ключам. -- Массив / Array - коллекция эллементов, доступ к которым осуществляется по +- Массив / Array - коллекция элементов, доступ к которым осуществляется по индексам. Пример: `const cities = ['Tehran', 'Yalta', 'Potsdam'];` - Отладка / Debug - процесс обнаружения и устранения ошибок в программном обеспечении при помощи вывода сообщений или инструментов: отладчика, @@ -216,7 +216,7 @@ - Объектный контекст функции - объект, связанный со служебным идентификатором `this`. Все функции, кроме стрелочных, могут быть связаны с объектным контекстом. Объект связан с `this` если функция являются методами этого объекта, если функция -привязана к менму через `bind` или вызвана через `apply` и `call`. +привязана к мему через `bind` или вызвана через `apply` и `call`. - Глобальный контекст / Global context - глобальный объект-справочник. Если идентификатор не находится ни в одном из вложенных лексических контекстов, то будет выполнен его поиск в глобальном контексте (global, window, sandbox). @@ -226,7 +226,7 @@ - Функциональное выражение / Function expression - связывание функции с идентификатором при помощи присвоения, при котором значение будет доступно через идентификатор не во всем лексическом контексте, а только после места присвоения. -Имеет несколько синтакчических вариантов: +Имеет несколько синтаксических вариантов: - функциональное выражение с именованной функцией / Named function expression - `const max = function max(a, b) { return a + b; };` - анонимное функциональное выражение / Anonymous function expression @@ -274,7 +274,7 @@ аргументов (но пока ни кто не нашел вразумительного примера, где это реально нужно); - если на выходе класс или функция-конструктор, то это фабрики классов и - прототипов соответсвенно; + прототипов соответственно; - Функциональное наследование / Functional Inheritance - при помощи замыканий, частичного применения, каррирования, вложенных лямбд. - [Обертка / Wrapper](https://github.com/HowProgrammingWorks/Wrapper) @@ -322,8 +322,8 @@ и структур данных), определяющие его поведение и реакцию на операции с ним. - Кэш / Cache - место временного хранения данных (буфер, коллекция, область памяти) для быстрого доступа и оптимизации. Возможно кеширование операций -чтения, вычислений, операций записи (когда запись не может быть поизведена -достаточно быстро) или упрезжающее чтение в буфер (когда можно определить, +чтения, вычислений, операций записи (когда запись не может быть произведена +достаточно быстро) или упрежающее чтение в буфер (когда можно определить, какие данные будут запрошены с наибольшей вероятностью). - Хэширование / Hashing - преобразование данных произвольной длины (буфера, массива, объекта или структуры данных) в последовательность битов определенной @@ -356,10 +356,10 @@ - [Ввод/вывод / I/O, Input-output](https://github.com/HowProgrammingWorks/AsynchronousProgramming) - операции, выходящие за рамки CPU и RAM (арифметико-логического устройства и памяти), т.е. операции с устройствами ввода вывода: сеть, диск, порты, - консоль (клавиатура и экран), друге переферийные устройства (взаимодействие + консоль (клавиатура и экран), друге периферийные устройства (взаимодействие с которыми на порядки медленнее, чем внутренние операции а АЛУ и памяти); - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - - универсальная абстракция для работы с событиями чере подписку (subscription: + - универсальная абстракция для работы с событиями через подписку (subscription: addListener, on, once) и отправку (emit) - [Чеининг / Chaining](https://github.com/HowProgrammingWorks/Chaining) - цепочный синтаксис вызова функций `total(april)(may)(july)` или методов @@ -375,7 +375,7 @@ - для формальной граматики - AST-дерево; - для слабоструктурированного документа - структура данных, имеющая четкую структуру, в которую частично перенесены данные из слабой структуры; - - для других естественных или искуственных языков - информационные модели, + - для других естественных или искусственных языков - информационные модели, им соответствующие; - [Регулярные выражения / Regular Expressions](https://github.com/HowProgrammingWorks/RegExp) - синтаксическая конструкция, паттерн, формальный язык, определяющий порядок From 59de6673e83594ffabb2253b249ec7986f83f426 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Fri, 30 Aug 2019 01:24:03 +0300 Subject: [PATCH 61/74] Fix spelling --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4c43e2f..da7ae70 100644 --- a/README.md +++ b/README.md @@ -216,7 +216,7 @@ - Объектный контекст функции - объект, связанный со служебным идентификатором `this`. Все функции, кроме стрелочных, могут быть связаны с объектным контекстом. Объект связан с `this` если функция являются методами этого объекта, если функция -привязана к мему через `bind` или вызвана через `apply` и `call`. +привязана к нему через `bind` или вызвана через `apply` и `call`. - Глобальный контекст / Global context - глобальный объект-справочник. Если идентификатор не находится ни в одном из вложенных лексических контекстов, то будет выполнен его поиск в глобальном контексте (global, window, sandbox). @@ -317,11 +317,11 @@ программный интерфейс (или абстракция) для обмена данными между процессами. - [Дескриптор / Handle](https://github.com/HowProgrammingWorks/Files) - уникальный идентификатор программного объекта (чаще всего объекта операционной -системы): файла, сокета, окна, таймера, оединения и т.д. +системы): файла, сокета, окна, таймера, соединения и т.д. - Состояние / State - совокупность данных программного компонента (переменных и структур данных), определяющие его поведение и реакцию на операции с ним. - Кэш / Cache - место временного хранения данных (буфер, коллекция, область -памяти) для быстрого доступа и оптимизации. Возможно кеширование операций +памяти) для быстрого доступа и оптимизации. Возможно кэширование операций чтения, вычислений, операций записи (когда запись не может быть произведена достаточно быстро) или упрежающее чтение в буфер (когда можно определить, какие данные будут запрошены с наибольшей вероятностью). From accdd3a9f7c29bf296c3826070fe39dce730d336 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Mon, 2 Sep 2019 23:55:21 +0300 Subject: [PATCH 62/74] Fix spelling --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index da7ae70..0b60785 100644 --- a/README.md +++ b/README.md @@ -323,7 +323,7 @@ - Кэш / Cache - место временного хранения данных (буфер, коллекция, область памяти) для быстрого доступа и оптимизации. Возможно кэширование операций чтения, вычислений, операций записи (когда запись не может быть произведена -достаточно быстро) или упрежающее чтение в буфер (когда можно определить, +достаточно быстро) или упреждающее чтение в буфер (когда можно определить, какие данные будут запрошены с наибольшей вероятностью). - Хэширование / Hashing - преобразование данных произвольной длины (буфера, массива, объекта или структуры данных) в последовательность битов определенной @@ -507,14 +507,14 @@ - [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) - [Линзы - функциональные аналоги геттера и сеттера](https://github.com/HowProgrammingWorks/Lenses) - Состояние гонки / Race Condition - состояние в многопоточкой или конкурентной -программной системе, когда несколько потоков исполнения конкурируюя за общий +программной системе, когда несколько потоков исполнения конкурируя за общий ресурс портят данные, приводят к непредусмотренному порядку исполнения, зацикливаются, и т.д., что приводит к утечке ресурсов, непредсказуемому и неправильному поведению, уязвимостям, нестабильности работы. - Взаимная блокировка / Deadlock - состояние в многопроцессовой (распределенной) системе, когда несколько процессов захватили ресурсы, необходимые для дальнейшей работы друг друга, заблокировав, тем самым дальнейшую работу. -- Livelock - зацикленная блокировка, бесконечно изменяющея состояние, но не +- Livelock - зацикленная блокировка, бесконечно изменяющая состояние, но не выполняющая полезной работы. - Ресурсный голод / Resource starvation - состояние в программной системе (обычно многопоточной), когда она постоянно запрашивает доступ к ресурсам (обычно From fa0450fc273d93da671e7ea822e21515d2aa2c63 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 3 Sep 2019 00:05:42 +0300 Subject: [PATCH 63/74] Change async section to definition list --- README.md | 72 ++++++++++++++++--------------------------------------- 1 file changed, 20 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 0b60785..53c173c 100644 --- a/README.md +++ b/README.md @@ -530,58 +530,26 @@ ## Асинхронное программирование -- [1. Асинхронное программирование (обзор)](https://youtu.be/hY6Z6qNYzmc) -- [2. Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) - - Таймеры: https://github.com/HowProgrammingWorks/Timers - - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter - - События: https://github.com/metarhia/common/blob/master/lib/events.js -- [3. Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) - - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - - Библиотека do: https://github.com/metarhia/do -- [4. Неблокирующее асинхронное итерирование](https://youtu.be/wYA2cIRYLoA) - - Примеры кода: https://github.com/HowProgrammingWorks/NonBlocking -- [5. Асинхронность с библиотекой async.js](https://youtu.be/XQ94wQc-erU) - - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming - - Библиотека async.js: https://caolan.github.io/async/ -- [6. Асинхронность на промисах](https://youtu.be/RMl4r6s1Y8M) - - Примеры кода: https://github.com/HowProgrammingWorks/Promise -- [7. Асинхронные функции и обработка ошибок](https://youtu.be/Jdf_tZuJbHI) - - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait -- [8. Асинхронные адаптеры: promisify, callbackify, asyncify](https://youtu.be/76k6_YkYRmU) - - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAdapter -- [9. Асинхронные коллекторы данных](https://youtu.be/tgodt1JL6II) - - Примеры кода: https://github.com/HowProgrammingWorks/Collector - - Библиотека: https://github.com/metarhia/metasync -- [10. Необработанные ошибки в промисах](https://youtu.be/1Ml5NE2fsZ8) - - Примеры кода: https://github.com/HowProgrammingWorks/PromiseError -- [11. Проблема асинхронного стектрейса](https://youtu.be/pfiHTx3j87Y) - - Примеры кода: https://github.com/HowProgrammingWorks/StackTrace -- [12. Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) - - Генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator - - Асинхронные генераторы: https://github.com/HowProgrammingWorks/Generator -- [13. Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) - - Итераторы: https://github.com/HowProgrammingWorks/AsyncIterator - - Асинхронные итераторы: https://github.com/HowProgrammingWorks/Iterator -- [14. Отмена асинхронных операций](https://youtu.be/T8fXlnqI4Ws) - - Примеры кода: https://github.com/HowProgrammingWorks/Cancelable -- [15. Асинхронная композиция функций](https://youtu.be/3ZCrMlMpOrM) - - Примеры кода: https://github.com/HowProgrammingWorks/AsyncCompose -- [16. Thenable и легковесный await](https://youtu.be/DXp__1VNIvI) - - Примеры кода: https://github.com/HowProgrammingWorks/Thenable -- [17. Конкурентная асинхронная очередь](https://youtu.be/Lg46AH8wFvg) - - Примеры кода: https://github.com/HowProgrammingWorks/ConcurrentQueue -- [18. Паттерн открытый конструктор (Revealing Constructor)](https://youtu.be/leR5sXRkuJI) - - Примеры кода: https://github.com/HowProgrammingWorks/RevealingConstructor -- [19. Future: Асинхронность на фьючерах без состояния](https://youtu.be/22ONv3AGXdk) - - Примеры кода: https://github.com/HowProgrammingWorks/Future -- [20. Deferred: Асинхронность на диферах с состоянием](https://youtu.be/a2fVA1o-ovM) - - Примеры кода: https://github.com/HowProgrammingWorks/Deferred -- [21. Модель акторов (Actor Model)](https://youtu.be/xp5MVKEqxY4) - - Примеры кода: https://github.com/HowProgrammingWorks/ActorModel -- [22. Паттерн Наблюдатель (Observer + Observable)](https://youtu.be/_bFXuLcXoXg) - - Примеры кода: https://github.com/HowProgrammingWorks/Observer -- [23. Асинхронность на RxJS и потоки событий](https://youtu.be/0kcpMAl-wfE) - - Примеры кода: https://github.com/HowProgrammingWorks/Rx +- Асинхронное программирование / Asynchronous Programming +- Неблокирующая операция / Non-blocking I/O +- Асинхронное итерирование / Asynchronous Iterable +- Асинхронный коллектор данных / Asynchronous data collector +- Промис / Promise +- Генератор / Generator Function +- Асинхронный генератор / Asyncronous Generator Function +- Итератор / Iterator +- Асинхронный итератор / Asynchronous Iterator +- Итерируемый объект / Iterable +- Асинхронная композиция функций / Asynchronous Function Composition +- Thenable +- async/await +- Асинхронная очередь / Asynchronous Queue +- Открытый конструктор / Revealing Constructor +- Фьючер / Future +- Дифер / Deferred +- Модель акторов / Actor Model +- Наблюдатель / Observer +- Поток событий / Event stream ## Параллельное программирование From 0df8b3f1bb72d81fa0a67bc79c5fd4f9bf1de427 Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 3 Sep 2019 00:06:35 +0300 Subject: [PATCH 64/74] Remove complex examples from dictionary --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 53c173c..67d04f4 100644 --- a/README.md +++ b/README.md @@ -522,12 +522,6 @@ - Критическая секция / Critical section - участок исполняемого кода, в котором производится эксклюзивный доступ к разделяемому ресурсу. -## Примеры кода и комплексного использования технологий - -- [Живые электронные таблицы / Live Table](https://github.com/HowProgrammingWorks/LiveTable) -- [Чат на вебсокетах / Websocket Chat](https://github.com/HowProgrammingWorks/WebsocketChat) -- [HTTP сессии на cookies](https://github.com/HowProgrammingWorks/Session) - ## Асинхронное программирование - Асинхронное программирование / Asynchronous Programming From bf1298047dc0d94433f3e90a57f3cec7850b550d Mon Sep 17 00:00:00 2001 From: tshemsedinov Date: Tue, 3 Sep 2019 00:10:02 +0300 Subject: [PATCH 65/74] Move parallel programming definitions --- README.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 67d04f4..9021613 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ - [Вспомогательные материалы](https://github.com/HowProgrammingWorks/Dictionary#Вспомогательные-материалы) - [Структуры данных](https://github.com/HowProgrammingWorks/Dictionary#Структуры-данных) - [Расширенные понятия](https://github.com/HowProgrammingWorks/Dictionary#Расширенные-понятия) -- [Примеры кода и комплексного использования технологий](https://github.com/HowProgrammingWorks/Dictionary#Примеры-кода-и-комплексного-использования-технологий) - [Параллельное программирование](https://github.com/HowProgrammingWorks/Dictionary#Параллельное-программирование) - [Асинхронное программирование](https://github.com/HowProgrammingWorks/Dictionary#Асинхронное-программирование) - [Парадигмы программирования](https://github.com/HowProgrammingWorks/Dictionary#Парадигмы-программирования) @@ -506,21 +505,6 @@ - Http Request (HTTP, XMLHttpRequest, fetch): [примеры](https://github.com/HowProgrammingWorks/HttpRequest) - [Неблокирующие итерации](https://github.com/HowProgrammingWorks/NonBlocking) - [Линзы - функциональные аналоги геттера и сеттера](https://github.com/HowProgrammingWorks/Lenses) -- Состояние гонки / Race Condition - состояние в многопоточкой или конкурентной -программной системе, когда несколько потоков исполнения конкурируя за общий -ресурс портят данные, приводят к непредусмотренному порядку исполнения, -зацикливаются, и т.д., что приводит к утечке ресурсов, непредсказуемому и -неправильному поведению, уязвимостям, нестабильности работы. -- Взаимная блокировка / Deadlock - состояние в многопроцессовой (распределенной) -системе, когда несколько процессов захватили ресурсы, необходимые для дальнейшей -работы друг друга, заблокировав, тем самым дальнейшую работу. -- Livelock - зацикленная блокировка, бесконечно изменяющая состояние, но не -выполняющая полезной работы. -- Ресурсный голод / Resource starvation - состояние в программной системе (обычно -многопоточной), когда она постоянно запрашивает доступ к ресурсам (обычно -разделяемым), и не может их получить. -- Критическая секция / Critical section - участок исполняемого кода, в котором -производится эксклюзивный доступ к разделяемому ресурсу. ## Асинхронное программирование @@ -547,6 +531,21 @@ ## Параллельное программирование +- Состояние гонки / Race Condition - состояние в многопоточкой или конкурентной +программной системе, когда несколько потоков исполнения конкурируя за общий +ресурс портят данные, приводят к непредусмотренному порядку исполнения, +зацикливаются, и т.д., что приводит к утечке ресурсов, непредсказуемому и +неправильному поведению, уязвимостям, нестабильности работы. +- Взаимная блокировка / Deadlock - состояние в многопроцессовой (распределенной) +системе, когда несколько процессов захватили ресурсы, необходимые для дальнейшей +работы друг друга, заблокировав, тем самым дальнейшую работу. +- Livelock - зацикленная блокировка, бесконечно изменяющая состояние, но не +выполняющая полезной работы. +- Ресурсный голод / Resource starvation - состояние в программной системе (обычно +многопоточной), когда она постоянно запрашивает доступ к ресурсам (обычно +разделяемым), и не может их получить. +- Критическая секция / Critical section - участок исполняемого кода, в котором +производится эксклюзивный доступ к разделяемому ресурсу. - [Потоки / Threads](https://github.com/HowProgrammingWorks/Threads) - SharedArrayBuffer - worker_threads в Node.js From a04e7061cd935cc65564abd893f2370e2a8b35c6 Mon Sep 17 00:00:00 2001 From: Ruslan Vyshnevskyi Date: Tue, 3 Sep 2019 15:13:42 +0300 Subject: [PATCH 66/74] Fix spelling --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9021613..8c2cb08 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,10 @@ - Алгоритм / Algorithm - это формальное описание порядка вычислений для определенного класса задач за конечное время (способность завершаться для любого множества входных данных). -- Программа / Programm - программный код и данные, объединенные в одно целое для +- Программа / Program - программный код и данные, объединенные в одно целое для вычисления и управления ЭВМ. - Инженерия / Engineering - извлечение практической пользы из имеющихся ресурсов -при помощь науки, техники, различных методик, организационной структуры, а так +при помощи науки, техники, различных методик, организационной структуры, а так же приемов и знаний. - Инженерия программного обеспечения / Software engineering - приложение инженерии к индустрии программного обеспечения. Включает архитектуру, @@ -232,7 +232,7 @@ - `const max = function(a, b) { return a + b; };` - лямбда-функция / Lambda function - `const max = (a, b) => { return a + b; };` - - лябмда-выражение, Функция-стрелка / Lambda expression, Arrow function + - лямбда-выражение, Функция-стрелка / Lambda expression, Arrow function - `const max = (a, b) => (a + b);` - [Чистая функция / Pure Function](https://github.com/HowProgrammingWorks/Function) - функция, вычисляющая результат только на основе аргументов, не имеющая @@ -355,8 +355,8 @@ - [Ввод/вывод / I/O, Input-output](https://github.com/HowProgrammingWorks/AsynchronousProgramming) - операции, выходящие за рамки CPU и RAM (арифметико-логического устройства и памяти), т.е. операции с устройствами ввода вывода: сеть, диск, порты, - консоль (клавиатура и экран), друге периферийные устройства (взаимодействие - с которыми на порядки медленнее, чем внутренние операции а АЛУ и памяти); + консоль (клавиатура и экран), другие периферийные устройства (взаимодействие + с которыми на порядки медленнее, чем внутренние операции в АЛУ и памяти); - [EventEmitter](https://github.com/HowProgrammingWorks/EventEmitter) - универсальная абстракция для работы с событиями через подписку (subscription: addListener, on, once) и отправку (emit) @@ -371,7 +371,7 @@ операция, обратная сериализации, т.е. восстановление структуры данных из последовательности битов (чаще байтов или строки). - Парсинг / Parsing - синтаксический анализ текста, результатом чего может являться: - - для формальной граматики - AST-дерево; + - для формальной грамматики - AST-дерево; - для слабоструктурированного документа - структура данных, имеющая четкую структуру, в которую частично перенесены данные из слабой структуры; - для других естественных или искусственных языков - информационные модели, @@ -439,8 +439,8 @@ - Реализация на замыканиях и функциональных объектах - Реализация на одной и двух категориях (только узел или список и узел) - [Стек, очередь, дек](https://github.com/HowProgrammingWorks/Dequeue) - - Стек / Stack - список, работающий про принципу LIFO; - - Очередь / Queue - список, работающий про принципу FIFO; + - Стек / Stack - список, работающий по принципу LIFO; + - Очередь / Queue - список, работающий по принципу FIFO; - Дек / Dequeue - двухсторонний список, работающий, как стек и очередь; - [Дерево](https://github.com/HowProgrammingWorks/Trees) - [Двоичное дерево](https://github.com/HowProgrammingWorks/Trees), поисковое @@ -514,7 +514,7 @@ - Асинхронный коллектор данных / Asynchronous data collector - Промис / Promise - Генератор / Generator Function -- Асинхронный генератор / Asyncronous Generator Function +- Асинхронный генератор / Asynchronous Generator Function - Итератор / Iterator - Асинхронный итератор / Asynchronous Iterator - Итерируемый объект / Iterable @@ -531,7 +531,7 @@ ## Параллельное программирование -- Состояние гонки / Race Condition - состояние в многопоточкой или конкурентной +- Состояние гонки / Race Condition - состояние в многопоточной или конкурентной программной системе, когда несколько потоков исполнения конкурируя за общий ресурс портят данные, приводят к непредусмотренному порядку исполнения, зацикливаются, и т.д., что приводит к утечке ресурсов, непредсказуемому и From 931ed873c0de99bdbede4079579cd3ffd9c135e7 Mon Sep 17 00:00:00 2001 From: Evgeniy Kupershtein Date: Mon, 16 Sep 2019 11:01:45 +0300 Subject: [PATCH 67/74] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=B0=D1=8F=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c2cb08..a9edad8 100644 --- a/README.md +++ b/README.md @@ -214,7 +214,7 @@ циклов, условий и т.д.). - Объектный контекст функции - объект, связанный со служебным идентификатором `this`. Все функции, кроме стрелочных, могут быть связаны с объектным контекстом. -Объект связан с `this` если функция являются методами этого объекта, если функция +Объект связан с `this` если функция является методом этого объекта, если функция привязана к нему через `bind` или вызвана через `apply` и `call`. - Глобальный контекст / Global context - глобальный объект-справочник. Если идентификатор не находится ни в одном из вложенных лексических контекстов, то From 80204fc606f61babc78580909af524c901c039ae Mon Sep 17 00:00:00 2001 From: Vlad Esin <44160260+svetley1@users.noreply.github.com> Date: Sun, 29 Sep 2019 15:57:11 +0500 Subject: [PATCH 68/74] =?UTF-8?q?=D0=94=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20"=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c2cb08..432ebe8 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ - Сигнатура функции / Function signature - имя (идентификатор), количество аргументов и их типы (а иногда и имена аргументов), тип результата. - [Метод / Method](https://github.com/HowProgrammingWorks/Function) - - процедура, связанная с объектным контекстом или программным интерфейсом; + - функция или процедура, связанная с объектным контекстом или программным интерфейсом; - `{ a: 10, b: 10, sum() { return this.a + this.b; } }` - [Цикл / Loop](https://github.com/HowProgrammingWorks/Iteration) - многократное исполнение блока операторов From 82cb5e1a93ea52f610ed9262a096d8669cc10eb5 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 29 Sep 2019 15:00:25 +0300 Subject: [PATCH 69/74] Fix procedure and function definition --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9021613..d58a43b 100644 --- a/README.md +++ b/README.md @@ -111,14 +111,16 @@ группа инструкций или операторов, имеющая имя. Процедура способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. Процедура не возвращает значений, в отличие от функций, -но может модифицировать свои аргументы. Во многих языках процедура описывается -при помощи синтаксиса функций (например, типа void). +но в некоторых языках (но не в JavaScript) может модифицировать свои аргументы. +Во многих языках процедура описывается при помощи синтаксиса функций (например, +типа void). - Функция / Function - абстракция преобразования значений. Функция однозначно отображает одно множество значений в другое множество значений. Функция может быть задана блоком операторов или выражением. Функция имеет набор аргументов. Функция может быть вызвана по имени или через указатель. Функция способствует повторному использованию кода и может быть вызвана из разных частей программы, -много раз и с разными аргументами. +много раз и с разными аргументами. В JavaScript функция описывается при помощи +function или синтаксиса стрелок (лямбда-функций). - Сигнатура функции / Function signature - имя (идентификатор), количество аргументов и их типы (а иногда и имена аргументов), тип результата. - [Метод / Method](https://github.com/HowProgrammingWorks/Function) From 1791152216e0b276d5cf49ab7e0ea21e55bde615 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sun, 28 Jun 2020 00:53:46 +0300 Subject: [PATCH 70/74] Add patreon link --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..e6f64b9 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +patreon: tshemsedinov From 37d6eb40cef79f8f332e08522f4530cdd6dff94a Mon Sep 17 00:00:00 2001 From: Kyrylo Cholombytko <72078732+1mperix@users.noreply.github.com> Date: Wed, 13 Jan 2021 23:40:22 +0200 Subject: [PATCH 71/74] fixed typo --- README.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 229ca38..7591da0 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ function или синтаксиса стрелок (лямбда-функций последовательный поиск свойств, пока они не будут найдены или пока не будет достигнут конец цепочки наследования. Иногда под прототипом понимается шаблон, который клонируется во время инстанциирования (не для JavaScript). -- Инстанциирование / Instantiation - создание объекта (экземпляра) или выделение +- Инстанцирование / Instantiation - создание объекта (экземпляра) или выделение памяти для структуры данных. - `const rect = new Rectangle(-50, -50, 100, 150);` - `const rect = { a: { x: -50, y: -50 }, b: { x: 100, y: 150 } };` @@ -258,7 +258,33 @@ function или синтаксиса стрелок (лямбда-функций - объединение вызова функций в выражения таким образом, что результат одних функций становится аргументами других функций; - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` -- [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) +- [Композиция / Composition](https://github.com/HowProgrammingWorks/CompositionИнструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. +Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. +Команда / Command - атомарная задача для командного процессора. +Выражение / Expression - синтаксическая конструкция языка программирования предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, значений, операторов и вызова функций. Пример: (len - 1) * f(x, INTERVAL) +Блок кода / Block - логически связанная группа инструкций или операторов. Блоки создают область видимости. Блоки могут быть вложенными. Примеры: {}, (+ a b), begin end, отступы в Python. +Процедура или подпрограмма / Procedure or Subroutine - логически связанная группа инструкций или операторов, имеющая имя. Процедура способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. Процедура не возвращает значений, в отличие от функций, но в некоторых языках (но не в JavaScript) может модифицировать свои аргументы. Во многих языках процедура описывается при помощи синтаксиса функций (например, типа void). +Функция / Function - абстракция преобразования значений. Функция однозначно отображает одно множество значений в другое множество значений. Функция может быть задана блоком операторов или выражением. Функция имеет набор аргументов. Функция может быть вызвана по имени или через указатель. Функция способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. В JavaScript функция описывается при помощи function или синтаксиса стрелок (лямбда-функций). +Сигнатура функции / Function signature - имя (идентификатор), количество аргументов и их типы (а иногда и имена аргументов), тип результата. +Метод / Method +функция или процедура, связанная с объектным контекстом или программным интерфейсом; +{ a: 10, b: 10, sum() { return this.a + this.b; } } +Цикл / Loop +многократное исполнение блока операторов +Условие / Conditional statements +синтаксическая конструкция, позволяющая выполнить разные действия или возвращающая разные значения (тернарный оператор) в зависимости от логического выражения (возвращающего true или false) +Рекурсия / Recursion - задание алгоритма вычисления функции через вызов ее самой (прямой или непрямой) или определение функции, через нее саму. +Косвенная (непрямая) рекурсия - когда функция определена или вызывает себя не напрямую, а через другую или цепочку функций; +Хвостовая - частный случай, когда рекурсивный вызов является последней операцией перед возвратом значения, что всегда может быть преобразовано в цикл, даже автоматическим способом. Не хвостовая тоже может быть преобразована в цикл и оптимизирована, но более сложным способом, обычно вручную. +Строка / String +последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки). +Коллекция / Collection - структура данных, служащая для хранения набора значений и предоставляющая доступ к ним по индексам или ключам. +Массив / Array - коллекция элементов, доступ к которым осуществляется по индексам. Пример: const cities = ['Tehran', 'Yalta', 'Potsdam']; +Отладка / Debug - процесс обнаружения и устранения ошибок в программном обеспечении при помощи вывода сообщений или инструментов: отладчика, профилировщика, декомпилятора, систем мониторинга ресурсов и логирования, систем непрерывной интеграции и тестирования. +ЦП / CPU - центральный процессор / central processing unit - устройство, выполняющее машинные инструкции. +АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования над машинными словами, представляющими целые числа, числа с плавающей точкой, адресами памяти, строками, логическими величинами. +Компонент / Component - несколько программных объектов (например: функций, классов, монад, типов) объединенных и организованных по общему признаку. +Модуль / Module - целостный, функционально полный, независимый компонент программной системы имеющий имя, интерфейс, реализацию.) - `const compose = (f1, f2) => x => f2(f1(x));` - `const compose = (...funcs) => (...args) => (funcs.reduce((args, fn) => [fn(...args)], args));` - [Частичное применение / Partial application](https://github.com/HowProgrammingWorks/PartialApplication) From 1cc37f5f891efefd8edd5280f71b1a16a5ecc926 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 1 Feb 2022 09:11:48 -0500 Subject: [PATCH 72/74] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7591da0..8a53994 100644 --- a/README.md +++ b/README.md @@ -258,7 +258,8 @@ function или синтаксиса стрелок (лямбда-функций - объединение вызова функций в выражения таким образом, что результат одних функций становится аргументами других функций; - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` -- [Композиция / Composition](https://github.com/HowProgrammingWorks/CompositionИнструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. +- [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) +- Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. Команда / Command - атомарная задача для командного процессора. Выражение / Expression - синтаксическая конструкция языка программирования предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, значений, операторов и вызова функций. Пример: (len - 1) * f(x, INTERVAL) From 26cd985a48d2993049c0d80484d190013dfaa777 Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Tue, 1 Feb 2022 09:16:36 -0500 Subject: [PATCH 73/74] Fix list --- README.md | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 8a53994..c4738ff 100644 --- a/README.md +++ b/README.md @@ -260,32 +260,29 @@ function или синтаксиса стрелок (лямбда-функций - `const expr2 = add(pow(mul(5, 8), 2), div(inc(sqrt(20)), log(2, 7)));` - [Композиция / Composition](https://github.com/HowProgrammingWorks/Composition) - Инструкция / Instruction - один шаг алгоритма вычислений, например инструкция процессора исполняется CPU. -Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. -Команда / Command - атомарная задача для командного процессора. -Выражение / Expression - синтаксическая конструкция языка программирования предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, значений, операторов и вызова функций. Пример: (len - 1) * f(x, INTERVAL) -Блок кода / Block - логически связанная группа инструкций или операторов. Блоки создают область видимости. Блоки могут быть вложенными. Примеры: {}, (+ a b), begin end, отступы в Python. -Процедура или подпрограмма / Procedure or Subroutine - логически связанная группа инструкций или операторов, имеющая имя. Процедура способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. Процедура не возвращает значений, в отличие от функций, но в некоторых языках (но не в JavaScript) может модифицировать свои аргументы. Во многих языках процедура описывается при помощи синтаксиса функций (например, типа void). -Функция / Function - абстракция преобразования значений. Функция однозначно отображает одно множество значений в другое множество значений. Функция может быть задана блоком операторов или выражением. Функция имеет набор аргументов. Функция может быть вызвана по имени или через указатель. Функция способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. В JavaScript функция описывается при помощи function или синтаксиса стрелок (лямбда-функций). +- Оператор / Statement - наименьшая синтаксическая часть языка программирования, исполняемая интерпретатором, средой или компилируемая в машинный код. +- Команда / Command - атомарная задача для командного процессора. +- Выражение / Expression - синтаксическая конструкция языка программирования предназначенная для выполнения вычислений. Выражение состоит из идентификаторов, значений, операторов и вызова функций. Пример: `(len - 1) * f(x, INTERVAL)` +- Блок кода / Block - логически связанная группа инструкций или операторов. Блоки создают область видимости. Блоки могут быть вложенными. Примеры: `{}`, `(+ a b)`, `begin end`, отступы в Python. +- Процедура или подпрограмма / Procedure or Subroutine - логически связанная группа инструкций или операторов, имеющая имя. Процедура способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. Процедура не возвращает значений, в отличие от функций, но в некоторых языках (но не в JavaScript) может модифицировать свои аргументы. Во многих языках процедура описывается при помощи синтаксиса функций (например, типа void). +- Функция / Function - абстракция преобразования значений. Функция однозначно отображает одно множество значений в другое множество значений. Функция может быть задана блоком операторов или выражением. Функция имеет набор аргументов. Функция может быть вызвана по имени или через указатель. Функция способствует повторному использованию кода и может быть вызвана из разных частей программы, много раз и с разными аргументами. В JavaScript функция описывается при помощи function или синтаксиса стрелок (лямбда-функций). Сигнатура функции / Function signature - имя (идентификатор), количество аргументов и их типы (а иногда и имена аргументов), тип результата. -Метод / Method +- Метод / Method функция или процедура, связанная с объектным контекстом или программным интерфейсом; -{ a: 10, b: 10, sum() { return this.a + this.b; } } -Цикл / Loop -многократное исполнение блока операторов -Условие / Conditional statements -синтаксическая конструкция, позволяющая выполнить разные действия или возвращающая разные значения (тернарный оператор) в зависимости от логического выражения (возвращающего true или false) -Рекурсия / Recursion - задание алгоритма вычисления функции через вызов ее самой (прямой или непрямой) или определение функции, через нее саму. -Косвенная (непрямая) рекурсия - когда функция определена или вызывает себя не напрямую, а через другую или цепочку функций; -Хвостовая - частный случай, когда рекурсивный вызов является последней операцией перед возвратом значения, что всегда может быть преобразовано в цикл, даже автоматическим способом. Не хвостовая тоже может быть преобразована в цикл и оптимизирована, но более сложным способом, обычно вручную. -Строка / String -последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки). -Коллекция / Collection - структура данных, служащая для хранения набора значений и предоставляющая доступ к ним по индексам или ключам. -Массив / Array - коллекция элементов, доступ к которым осуществляется по индексам. Пример: const cities = ['Tehran', 'Yalta', 'Potsdam']; -Отладка / Debug - процесс обнаружения и устранения ошибок в программном обеспечении при помощи вывода сообщений или инструментов: отладчика, профилировщика, декомпилятора, систем мониторинга ресурсов и логирования, систем непрерывной интеграции и тестирования. -ЦП / CPU - центральный процессор / central processing unit - устройство, выполняющее машинные инструкции. -АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования над машинными словами, представляющими целые числа, числа с плавающей точкой, адресами памяти, строками, логическими величинами. -Компонент / Component - несколько программных объектов (например: функций, классов, монад, типов) объединенных и организованных по общему признаку. -Модуль / Module - целостный, функционально полный, независимый компонент программной системы имеющий имя, интерфейс, реализацию.) +`{ a: 10, b: 10, sum() { return this.a + this.b; } }` +- Цикл / Loop - многократное исполнение блока операторов +- Условие / Conditional statements - синтаксическая конструкция, позволяющая выполнить разные действия или возвращающая разные значения (тернарный оператор) в зависимости от логического выражения (возвращающего true или false) +- Рекурсия / Recursion - задание алгоритма вычисления функции через вызов ее самой (прямой или непрямой) или определение функции, через нее саму. +- Косвенная (непрямая) рекурсия - когда функция определена или вызывает себя не напрямую, а через другую или цепочку функций; +- Хвостовая - частный случай, когда рекурсивный вызов является последней операцией перед возвратом значения, что всегда может быть преобразовано в цикл, даже автоматическим способом. Не хвостовая тоже может быть преобразована в цикл и оптимизирована, но более сложным способом, обычно вручную. +- Строка / String - последовательность символов (в большинстве языков к каждому символу можно обратиться через синтаксис доступа к элементам массива, например, квадратные скобки). +- Коллекция / Collection - структура данных, служащая для хранения набора значений и предоставляющая доступ к ним по индексам или ключам. +- Массив / Array - коллекция элементов, доступ к которым осуществляется по индексам. Пример: const cities = ['Tehran', 'Yalta', 'Potsdam']; +- Отладка / Debug - процесс обнаружения и устранения ошибок в программном обеспечении при помощи вывода сообщений или инструментов: отладчика, профилировщика, декомпилятора, систем мониторинга ресурсов и логирования, систем непрерывной интеграции и тестирования. +- ЦП / CPU - центральный процессор / central processing unit - устройство, выполняющее машинные инструкции. +- АЛУ / ALU - блок ЦП, выполняющий арифметические и логические преобразования над машинными словами, представляющими целые числа, числа с плавающей точкой, адресами памяти, строками, логическими величинами. +- Компонент / Component - несколько программных объектов (например: функций, классов, монад, типов) объединенных и организованных по общему признаку. +- Модуль / Module - целостный, функционально полный, независимый компонент программной системы имеющий имя, интерфейс, реализацию.) - `const compose = (f1, f2) => x => f2(f1(x));` - `const compose = (...funcs) => (...args) => (funcs.reduce((args, fn) => [fn(...args)], args));` - [Частичное применение / Partial application](https://github.com/HowProgrammingWorks/PartialApplication) From ab297cfb90e542203d05ea754b68c7864c51b2d0 Mon Sep 17 00:00:00 2001 From: Anton Mikaskin Date: Mon, 3 Apr 2023 00:33:55 +0300 Subject: [PATCH 74/74] Remove duplication - buffer is described below PR-URL: https://github.com/HowProgrammingWorks/Dictionary/pull/24 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c4738ff..07da1db 100644 --- a/README.md +++ b/README.md @@ -457,7 +457,6 @@ function или синтаксиса стрелок (лямбда-функций - [Запись или структура / Struct or Record](https://github.com/HowProgrammingWorks/DataStructures) - [Массив / Array](https://github.com/HowProgrammingWorks/DataStructures) -- [Буфер / Buffer](https://github.com/HowProgrammingWorks/Buffers) - [Список / List](https://github.com/HowProgrammingWorks/LinkedList) - Односвязный, двусвязный, кольцевой, развернутый список (список массивов) - Реализация на объектах, массивах и замыканиях