Связанные понятия
Атака возврата в библиотеку (англ. Return-to-libc attack) — один из видов компьютерных атак, популярных на x86-совместимых машинах и схожие с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе, и в последующую часть стека записываются параметры для вызываемой функции. Эта техника позволяет нападающему выполнить какую-либо существующую функцию без необходимости внедрять вредноносный код в программу.
Правило одного определения (One Definition Rule, ODR) — один из основных принципов языка программирования C++. Назначение ODR состоит в том, чтобы в программе не могло появиться два или более конфликтующих между собой определения одной и той же сущности (типа данных, переменной, функции, объекта, шаблона). Если это правило соблюдено, программа ведёт себя так, как будто в ней существует только одно, общее определение любой сущности. Нарушение ODR, если оно не будет обнаружено при компиляции и сборке...
Фьютекс (англ. futex, сокращение от англ. fast userspace mutex) — в программировании способ реализации семафоров и мьютексов POSIX в Linux. Впервые введены в ядро Linux с версии 2.5.7 (development); выработана стабильная семантика с 2.5.40; включаются в стабильные версии серии 2.6.x.
Barrel
процессор, барабанный процессор , представляет собой процессор, который после каждого такта переключается между потоками команд. Эта архитектура процессора также известна как «interleaved» (чередующаяся) или «fine-grained» (мелкозернистая) временная многопоточность. В отличие от одновременной многопоточности в современных суперскалярных архитектурах, данная технология не позволяет выполнять несколько команд за один цикл.
Глобальная переменная в программировании — переменная, областью видимости которой является вся программа, кроме специально затенённых областей. Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию (англ. global environment, global state). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений.
Индексный регистр — регистр процессора в современных ЦПУ, используемый для автоматического изменения адреса операнда во время исполнения программы.
В программировании то́чка остано́ва (англ. breakpoint) — это преднамеренное прерывание выполнения программы, при котором выполняется вызов отладчика (одновременно с этим программа сама может использовать точки останова для своих нужд). После перехода к отладчику программист может исследовать состояние программы (логи, состояние памяти, регистров процессора, стека и т. п.), с тем чтобы определить, правильно ли ведёт себя программа. В отличии от полной остановки, с помощью останова, после работы в...
Мемоизация (запоминание, от англ. memoization (англ.) в программировании) — сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ. Перед вызовом функции проверяется, вызывалась ли функция ранее...
Недостижимый код часто относят к одному из типов мёртвого кода, такая терминология обычно применяется при рассмотрении исходного кода программ. Однако в теории компиляторов, эти понятия никак не связаны, мёртвым кодом там называют только достижимый, но не влияющий на вывод программы код.
Старсет — высокоуровневый язык программирования, разработанный под руководством М. М. Гилулы в Институте программных систем РАН в 1991 году.
Дедупликация (также дедубликация; от лат. deduplicatio — устранение дубликатов) — специализированный метод сжатия массива данных, использующий в качестве алгоритма сжатия исключение дублирующих копий повторяющихся данных. Данный метод обычно используется для оптимизации использования дискового пространства систем хранения данных, однако может применяться и при сетевом обмене данных для сокращения объема передаваемой информации.
Маши́нный цикл — промежуток времени между двумя последовательными обращениями центрального процессора к внешней оперативной памяти команд/данных, или обмена 1 словом данных с периферийными устройствами, в том числе в циклах обработки аппаратных прерываний и является составляющей частью исполнения машинной команды.
Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT) используется в архитектуре x86 и служит для определения корректного ответа на прерывания и исключения.
Коди́рование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.
Кома́нда перехо́да — команда процессора, которая нарушает непрерывную последовательность исполнения команд, вынуждая выбирать и исполнять последующие команды с произвольно заданного адреса. Используется для организации условных операторов, циклов, для связи с подпрограммами. Исполнение команды перехода в современных микропроцессорах чревато потерями производительности из-за простоев конвейера.
В информатике
таблица символов (от англ. symbol table «таблица идентификаторов») — это структура данных, используемая транслятором (компилятором или интерпретатором), в которой каждый идентификатор переменной или функции из исходного кода ассоциируется с информацией, связанной с его объявлением или появлением в коде: типом данных, областью видимости и в некоторых случаях местом в памяти (смещением).
Хот-спот (англ. hotspot) — участок кода в программе, на который приходится бо́льшая часть исполняемых инструкций процессора или на исполнение которого процессор затрачивает очень много времени (одни инструкции исполняются быстрее, а другие — медленнее). Хот-споты могут являться узкими местами программы, если на них приходится лишняя нагрузка из-за неэффективности кода, — в таком случае они могут быть подвергнуты оптимизации.
Парсер (англ. parser; от parse – анализ, разбор) или синтаксический анализатор — часть программы, преобразующей входные данные (как правило, текст) в структурированный формат. Парсер выполняет синтаксический анализ текста.
Подробнее: Синтаксический анализатор
Хеш-деревом, деревом Меркла (англ. Merkle tree) называют полное двоичное дерево, в листовые вершины которого помещены хеши от блоков данных, а внутренние вершины содержат хеши от сложения значений в дочерних вершинах. Корневой узел дерева содержит хеш от всего набора данных, то есть хеш-дерево является однонаправленной хеш-функцией. Дерево Меркла применяется для эффективного хранения транзакций в блокчейне криптовалют (например, в Bitcoin'е, Ethereum'е). Оно позволяет получить «отпечаток» всех транзакций...
Подробнее: Дерево хешей
В программировании, ассемблерной вставкой называют возможность компилятора встраивать низкоуровневый код, написанный на ассемблере, в программу, написанную на языке высокого уровня, например, Си или Ada. Использование ассемблерных вставок может преследовать следующие цели...
Подробнее: Ассемблерная вставка
Выравнивание данных в оперативной памяти компьютеров — способ размещения данных в памяти особым образом для ускорения доступа.
Внеполосные данные являются логически независимым каналом передачи между парой поточных сокетов. В компьютерных сетях под внеполосными данными понимаются данные, передающиеся через поток, отличный от основного (in-band). Данная технология предоставляет независимый с точки зрения программиста канал и позволяет разграничить данные. Физически внеполосные данные передаются по тому же каналу, что и обыкновенные данные. Термин, вероятно, происходит от внеполосных сигналов, используемых в телекоммуникационной...
В программировании понятие
флаг относится к одному или нескольким битам памяти, используемым для хранения двоичной комбинации или кода, который характеризует состояние некоторого объекта. Флаги обычно входят в определённые структуры данных, такие как записи баз данных, и их значения, как правило, связаны со значением структур данных, частью которых они являются. Во многих случаях двоичное значение флага представляет собой кодированное представление одного из нескольких возможных состояний или статусов...
Фа́ззинг (англ. fuzzing) — техника тестирования программного обеспечения, часто автоматическая или полуавтоматическая, заключающая в передаче приложению на вход неправильных, неожиданных или случайных данных. Предметом интереса являются падения и зависания, нарушения внутренней логики и проверок в коде приложения, утечки памяти, вызванные такими данными на входе. Фаззинг является разновидностью выборочного тестирования (англ. random testing), часто используемого для проверки проблем безопасности...
Уничтожение данных — последовательность операций, предназначенных для осуществления программными или аппаратными средствами необратимого удаления данных, в том числе остаточной информации.
Зако́н Амдала (англ. Amdahl's law, иногда также Закон Амдаля-Уэра) — иллюстрирует ограничение роста производительности вычислительной системы с увеличением количества вычислителей. Джин Амдал сформулировал закон в 1967 году, обнаружив простое по существу, но непреодолимое по содержанию ограничение на рост производительности при распараллеливании вычислений: «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения...
Сигналы и слоты — подход, используемый в некоторых языках программирования и библиотеках (например, Boost и Qt) который позволяет реализовать шаблон «наблюдатель», минимизируя написание повторяющегося кода. Концепция заключается в том, что компонент (часто виджет) может посылать сигналы, содержащие информацию о событии (например: был выделен текст «слово», была открыта вторая вкладка). В свою очередь другие компоненты могут принимать эти сигналы посредством специальных функций — слотов. Система сигналов...
Управляющая последовательность (исключённая последовательность, экранированная последовательность, от англ. escape sequence) — совокупность идущих подряд значащих элементов, в группе теряющих для обрабатывающего механизма своё индивидуальное значение, одновременно с приобретением этой группой нового значения.
Каркас ное программирование — это стиль компьютерного программирования, основанный на простых высокоуровневых программных структурах, на так называемых фиктивных кодах. Программа каркасов похожа на псевдокод, но при этом допускает синтаксический анализ, компиляцию и тестирования кода. Фиктивный код код будет вставлен в программу каркаса для симуляции обработки и во избежание сообщений об ошибках при компиляции. Он может включать в себя пустые функциональные выражения, или функции, которые возвращают...
Схе́ма уско́ренного перено́са — комбинационная логическая схема, входит в арифметико-логическое устройство большинства современных ЭВМ микропроцессоров и микроконтроллеров.
Абстракция в информатике представляет собой технику управления сложностью систем.
Бездисковая рабочая станция — это персональный компьютер, лишённый несъёмных средств для долговременного хранения данных. Существуют два основных сценария использования бездисковых рабочих станций...
Переопределение метода (англ. Method overriding) в объектно-ориентированном программировании — одна из возможностей языка программирования, позволяющая подклассу или дочернему классу обеспечивать специфическую реализацию метода, уже реализованного в одном из суперклассов или родительских классов. Реализация метода в подклассе переопределяет (заменяет) его реализацию в суперклассе, описывая метод с тем же названием, что и у метода суперкласса, а также у нового метода подкласса должны быть те же параметры...
Диспетчер управления службами (англ. Service Control Manager, SCM) — в Microsoft Windows (\Windows\System32\Services.exe) особый системный процесс, реализующий технологию удалённого вызова процедур (remote procedure call, RPC). Обеспечивает создание, удаление, запуск и остановку служб ОС. Стартует при загрузке системы, обеспечивает работу журнала событий, а также позволяет выполнять манипуляцию процессами удалённой машины.
Функциональный объект (англ. function object), также функтор, функционал и функционоид — распространённая в программировании конструкция, позволяющая использовать объект как функцию. Часто используется как callback, делегат.
Итерация в программировании — в широком смысле — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии). В узком смысле — один шаг итерационного, циклического процесса.
Функция как услуга — архитектурный шаблон, предполагающий возможность вызова экземпляра управляющего кода без необходимости управления серверами и серверным приложением; ключевой компонент бессерверных вычислений. Одной из первых широко известных реализаций является представленный в 2014 году сервис AWS Lambda, аналогичные предложения среди публичных PaaS есть у Google (Cloud Functions), IBM (на Apache OpenWhisk в составе платформы Bluemix) и Microsoft (Azure Functions)
Экранирование символов — замена в тексте управляющих символов на соответствующие текстовые подстановки. Один из видов управляющих последовательностей.
Фунарг — сокращение от «функциональный аргумент»; в компьютерных науках, проблема фунарга относится к сложности реализации функций как первоклассных объектов в стеково-ориентированных языках программирования (в широком смысле, включая все языки, в которых передача параметров функциям осуществляется через стек).
Подробнее: Проблема фунарга
Полная виртуализация возможна исключительно при условии правильной комбинации оборудования и программного обеспечения. Например, она была невозможной ни в серии IBM System/360, за исключением IBM System/360-67, ни в ранних IBM System/370, пока IBM не добавила оборудование виртуальной памяти в своих System/370 в 1972 г.
Контрольная точка — служебная информация, которая записывается операционной системой на жесткий диск или другой носитель для обработки исключительных ситуаций, таких как перезапуск, сбой или отказ оборудования. По состоянию контрольной точки операционная система может определить был сбой или нет и восстановить данные, вычислительные потоки. При этом часть данных между последней записью контрольной точки до сбоя теряются. При решении объемных задач контрольные точки эффективно восстанавливают процесс...
Делегат (англ. delegate) — класс, который позволяет хранить в себе ссылку на метод с определённой сигнатурой (порядком и типами принимаемых и типом возвращаемого значений) произвольного класса. . Экземпляры делегатов содержат ссылки на конкретные методы конкретных классов.
Целочисленная сортировка — это задача сортировки коллекции значений данных при помощи целочисленных ключей. Алгоритмы целочисленной сортировки можно применять и для задач, в которых ключами являются числа с плавающей запятой или текстовые строки. Возможность выполнения целочисленных арифметических операций над ключами позволяет алгоритмам целочисленной сортировки быть во многих случаях быстрее, чем аналогичные алгоритмы сортировки с использованием сравнений, в зависимости от допустимых в модели вычислений...
Гибри́дная (или комбини́рованная) криптосисте́ма — это система шифрования, совмещающая преимущества криптосистемы с открытым ключом с производительностью симметричных криптосистем. Симметричный ключ используется для шифрования данных, а асимметричный для шифрования самого симметричного ключа, иначе это называется числовой упаковкой.
Избыточность — термин из теории информации, означающий превышение количества информации, используемой для передачи или хранения сообщения, над его информационной энтропией. Для уменьшения избыточности применяется сжатие данных без потерь, в то же время контрольная сумма применяется для внесения дополнительной избыточности в поток, что позволяет производить исправление ошибок при передаче информации по каналам, вносящим искажения (спутниковая трансляция, беспроводная передача и т. д.).
Прототипом
функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функция, прототип функции может восприниматься как описание её интерфейса.
Внедрение зависимости (англ. Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту. Является специфичной формой «инверсии управления» (англ. Inversion of control, IoC), когда она применяется к управлению зависимостями. В полном соответствии с принципом единственной ответственности объект отдаёт заботу о построении требуемых ему зависимостей внешнему, специально предназначенному для этого общему механизму.
Метка (англ. label) — символьное имя, идентификатор для более удобного указания данных и кода в языках программирования. Позволяет программисту обходиться без вычисления и пересчёта адресов и смещений внутри программы (эти действия за него выполняет компилятор). Несмотря на то, что большинство языков программирования высокого уровня поддерживают операции с метками, их использование крайне нежелательно, так как программный код становится плохочитаемым, и отладка такой программы занимает большее время...
Управление компьютерной сетью — выполнение множества функций необходимых для контроля, планирования, выделения, внедрения, координации и мониторинга ресурсов компьютерной сети.
Граф вызовов (англ. Call graph) в теории построения компиляторов — ориентированный граф, который изображает вызовы между функциями в компьютерной программе. В частности, каждый узел представляет собой некоторую процедуру, а каждая дуга (f, g) показывает, что процедура f вызывает процедуру g.