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) - Односвязный, двусвязный, кольцевой, развернутый список (список массивов) - Реализация на объектах, массивах и замыканиях pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy