композитные типы или структуры состоят из нескольких скалярных значений,
объедиенных в одно таким образом, чтоб над этим объединенным значением можно
было выполнять набор операций
структура данных, содержащая состояние и методы, связанные с этим состоянием
объект может быть создан как литерал {} или экземпляр класса (прототипа)
new ClassName() или как экземпляр прототипа new PrototypeConstructor() или
возвращен из фабрики
специальный объект, на который ссылаются его экземпляры, и свойства
которого становятся видны у наследников, если эти свойства не переопределены
у наследников (формируется цепочка прототипов, по которой последовательно
ищутся свойства, пока не будут найдены или пока не будет достигнут конец)
шаблон, который клонируется во время инстанциирования
Флаг / Flag
Логическое значение, определяющее состояние чего-либо, например, признак
закрытия соединения, признак завершения поиска по структуре данных и т.д.
let flagName = false;
Массив / Array
коллекция эллементов, доступ к которым осуществляется по индексам
функциональное программирование: отображение или преобразование элементов
одного множества в элементы другого множества
императивное программирование: ссылка на блок операторов (не обязательно
именованный), реализующий последовательность действий
обобщенное определение: выражение или блок операторов, имеющий имя или
анонимный, преобразующий аргументы в результаты, или изменяющий состояние
контекстов или объектов
если функция только в результате, то это фабрика функций на замыканиях
если возвращаемая функция имеет тот же смысл, что и получаемая в
аргументах (+ дополнительное поведение), то это обертка
очень редко бывает, что возвращаемая функция не связана с функцией из
аргументов (но пока ни кто не нашел вразумительного примера, где это
реально нужно)
если на выходе класс или функция-конструктор, то это фабрики классов и
прототипов соответсвенно
шаблон проектирования, предполагающий, что в одном пространстве имен
(процессе, приложении, базе данных) будет только один экземпляр класса
(или просто один подобный объект) к которому можно обратиться по определенному
(известному) имени
многократное повторение одного блока кода или одной функции над различными
данными: элементами массивов, множдеств, списков, коллекций и различными
значениями переменной цикла
синтаксическая конструкция, позволяющая выполнить разные действия или
возвращающая разные значения (тернарный оператор) в зависимости от логического
выражения (возвращающего true или false)
последовательность символов (в большинстве языков к каждому символу можно
обратиться через синтаксис доступа к элементам массива, например, квадратные
скобки)
уникаьный идентификатор программного объекта (чаще всего объекта операционной
системы): файла, сокета, окна, таймера, оединения и т.д.
Состояние / State
совокупность данных программного компонента (переменных и структур данных),
определяющие его поведение и реакцию на операции с ним
Кэш, Кэширование / Cache
место временного хранения данных (буфер, коллекция, область памяти) для
быстрого доступа и оптимизации
возможно кеширование операций чтения, вычислений, операций записи (когда
запись не может быть поизведена достаточно быстро) или упрезжающее чтение в
буфер (когда можно определить, какие данные будут запрошены с наибольшей
вероятностью)
Хэширование / Hashing
преобразование данных произвольной длины (буфера, массива, объекта или
структуры данных) в последовательность битов определенной длины (хеш) при
помощи хеш-функции (при изменении 1 бита в данных хеш меняется существенно)
операции, выходящие за рамки CPU и RAM (арифметико-логического устройства
и памяти), т.е. операции с устройствами ввода вывода: сеть, диск, порты,
консоль (клавиатура и экран), друге переферийные устройства (взаимодействие
с которыми на порядки медленнее, чем внутренние операции а АЛУ и памяти)
преобразование структуры данных (развернутой в памяти) в битовую
последовательность, обычно в последовательность байтов (бинарная сериализация)
или в строку (текстовая сериализация)
целостный, функционально полный, независимый компонент программной системы
имеющий имя, интерфейс, реализацию
модульность повышает переиспользование кода, упрощает интеграцию компонентов,
улучшает компоновку и тестирование программ по частям
ограничения: модули не должны использовать глобальные переменные или
модифицировать базовые классы/прототипы/функции языка программирования,
платформы и/или фреймворка; модули должны быть слабо связаны, взаимодействовать
друг с другом только через внешнее API (предпочтительно) или шину событий
(если система построена на событийной модели, подписке или модели акторов)
связанность программных компонентов, при которой один компонент (зависимый)
"знает" другой; это значит, что в нем помещен вызов метода (реализация которого
содержится в другом) или он слушает событие, которое генерирует другой или
он "знает" структуры данных, которые могут быть переданы из другого компонента
статический анализатор кода (без запуска), который может определить и
предложить стилистические, грамматические или оптимизационное улучшение или
просто выявить проблему (а иногда и исправить ее автоматически)
Декомпозиция / Decomposition
разделение программного компонента на части по принципу функциональности,
при этом, каждая часть будет решать подзадачу и появится часть кода, которая
определяет порядок связи всех частей (композицию)
функция или метод для инстациирования объектов, функций, структур данных и
любых других программных абстракций, например, экземпляров класса в обход
конструктора или функциональных объектов
Множество заранее инстанциированных объектов (или массивов, сокетов, буферов,
структур данных и других программных абстракций) из которого мы можем их брать
инициализированные экземпляры (вместо инстанциирования новых) и отдавать их
после использования
структура данных, реализующая математическое "множество"
структура данных, служащая для хранения однородного набора значений, которые
не имеют индексов или ключей (но внутри структуры данных они должны иметь
порядок, например, индекс в массиве, однако, множество абстрагирует нас от
этой особенности реализации)