Итерация
Итерация в программировании — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (не путать с рекурсией) [1] .
Когда какое-то действие необходимо повторить большое количество раз, в программировании используются циклы. Например, нужно вывести 200 раз на экран текст «Hello, World!». Вместо двухсоткратного повторения одной и той же команды вывода текста часто создается цикл, который проходится 200 раз, и 200 раз выполняет то, что написано в теле цикла. Один шаг цикла и называется итерацией.
См. также
- Рекурсия и корекурсия — циклы «на себя» (с конструкцией цикла в итерации).
Примечания
- ↑Е.А. Роганов Рекурсия и итерация // Основы информатики и программирования: Учебное пособие. — Москва: МГИУ, 2001.
- Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).
- Проверить достоверность указанной в статье информации.
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Концепции языков программирования
- Управление потоком
Wikimedia Foundation . 2010 .
Синонимы:
- Казарян, Ашот
- Промышленность и торговля при Петре I
Полезное
Смотреть что такое «Итерация» в других словарях:
- итерация — повторение, цикл Словарь русских синонимов. итерация сущ., кол во синонимов: 2 • операция (457) • … Словарь синонимов
- итерация — — [[http://www.rfcmd.ru/glossword/1.8/index.php?a=index d=23]] итерация Повторное применение математической операции (с измененными данными) при решении вычислительных задач для постепенного приближения к нужному результату (это видно на… … Справочник технического переводчика
- Итерация — повторное применение математической операции в серии аналогичных операций, производимых для получения результата. Словарь бизнес терминов. Академик.ру. 2001 … Словарь бизнес-терминов
- ИТЕРАЦИЯ — (от лат. iteratio повторение) повторное применение какой либо математической операции … Большой Энциклопедический словарь
- Итерация — (iteration): более чем однократное использование компонента при различном выполнении операций. Источник: ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. МЕТОДЫ И СРЕДСТВА ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ. КРИТЕРИИ ОЦЕНКИ БЕЗОПАСНОСТИ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ. ЧАСТЬ 1.… … Официальная терминология
- итерация — и, ж. itération f. <лат. iterare повторять, возобновлять. мат. Результат применения какой н. математической операции, получающийся в серии аналогичных операций. Крысин 1998. Итерированный ая, ое. Повторенный. Зауэр. Лекс. СИС 1954: итера/ция … Исторический словарь галлицизмов русского языка
- Итерация — [iteration] повторное применение математической операции (с измененными данными) при решении вычислительных задач для постепенного приближения к нужному результату (это видно на блок схеме вычисления среднего арифметического см. рис. A.2 к статье … Экономико-математический словарь
- итерация — (лат. iteratio повторение) мат. результат применения какой л. математической операции, получающийся в серии аналогичных операций. Новый словарь иностранных слов. by EdwART, , 2009. итерация [ Словарь иностранных слов русского языка
- итерация — (от лат. iteratio повторение), повторное применение какой либо математической операции. * * * ИТЕРАЦИЯ ИТЕРАЦИЯ (от лат. iteratio повторение), повторное применение какой либо математической операции … Энциклопедический словарь
- итерация — iteracija statusas T sritis automatika atitikmenys: angl. iteration vok. Iteration, f rus. итерация, f pranc. itération, f … Automatikos terminų žodynas
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Итерация
Итерация – это одно повторение чего-либо. В программировании термин используют применительно к циклам: подпрограммам, которые выполняются несколько раз. Одно выполнение называется одной итерацией.

Освойте профессию «Frontend-разработчик»
Циклы бывают разными. Некоторые выполняются, пока верно или неверно определенное условие. Другие отрабатывают заданное количество раз. Соответственно, и итераций может быть разное количество. Встречаются циклы с бесконечным количеством итераций или такие, которые не выполнятся ни разу – там итераций будет ноль.
Например, цикл должен умножать число a на 10, пока оно не станет больше или равно 100. Если начальное значение a будет равно 10 – значит, цикл выполнится один раз: 10 * 10 = 100. Получится одна итерация. А вот если a = 0,1, то цикл выполнится уже трижды: 0,1 * 10 * 10 * 10 = 100. Выйдет три итерации.
Если же a изначально будет равно, скажем, 101, цикл не выполнится ни разу – ноль итераций.
Профессия / 9 месяцев
Frontend-разработчик
Создавайте интерфейсы сервисов, которыми пользуются все

Для чего нужны итерации
В разработке часто встречаются задачи, когда одно и то же действие нужно повторить несколько раз: вывести сообщение, получить или записать данные, отправить запрос и так далее. Делать это вручную неудобно и нарушает важный принцип программирования – DRY, don’t repeat yourself, или «не повторяйся». Вместо разработчика действие повторяет цикл – совершает нужное количество итераций.
В более узком смысле итерации помогают контролировать выполнение программы.
- Например, если сказать циклу «выполнись 10 раз», то он выполнится ровно столько раз – в этом можно быть уверенным.
- И наоборот: если мы сами не знаем, сколько итераций нужно, цикл будет проверять условие для завершения на каждой из них. Когда заданное разработчиком условие выполнится – он закончится. Так что считать итерации вручную не понадобится.
Поэтому итерации и циклы в целом – одно из базовых понятий в программировании. Они есть практически во всех популярных языках: Java, JavaScript, PHP, Python, C++ и так далее.
Как устроены итерации
Структура цикла. Когда программист объявляет цикл, он сначала описывает его условия – инструкции для выполнения. Например, он пишет условие для выхода из цикла или количество повторений.
После объявления пишется тело цикла. Это подпрограмма, которая обычно отделена от основного кода фигурными скобками или ключевыми словами begin и end. В Python для этого используются отступы.
Выполнение итерации. Когда программа доходит до цикла, она смотрит на объявление. Если условий для выхода из цикла нет, то начинает исполняться код внутри цикла – его тело. Этот внутренний код пишет разработчик, он может быть любым.
В ходе каждой итерации тело цикла выполняется один раз. Потом программа снова проверяет условие – и так далее.
Другой вариант поведения. Описанное выше поведение можно менять. Есть разные виды циклов: один проверяет условие перед входом в подпрограмму, а другой сразу заходит в тело цикла. Условие он впервые проверяет уже после первой итерации.
Соответственно, если условие изначально неверно (например, «повторять, пока 0 равен 1»), первый тип цикла выполнится ноль раз, а второй – один раз. Так происходит, потому что второй тип не проверяет условие перед первой итерацией.
Итерация и итератор
Итерацию не нужно путать с другим похожим понятием – итератором. Так называется переменная-счетчик: в нее программа записывает, сколько раз цикл уже выполнился. Обычно итераторы используют в циклах, которые должны отработать определенное количество раз.
Как работает. Простейший итератор работает так: в конце каждой итерации к нему прибавляется единица. Как только значение итератора достигнет какого-то заданного порога, цикл остановится. Счет обычно начинается с нуля. Реже – с единицы.
Значение итератора доступно в теле цикла. Можно сравнивать его с чем-то другим или прибавлять к другой переменной. А вот сам итератор в теле цикла менять не стоит: цикл сломается. Некоторые языки это допускают, но делать так не нужно.
Изменение поведения. На самом деле в большинстве языков программирования можно менять поведение итератора. Например, прибавлять к нему не единицу, а другое число. Или даже наоборот: отнимать от числа-оператора единицу, пока он не станет равным 0. Но нужда в подобном встречается редко, а без острой необходимости так лучше не делать – это ухудшает читаемость кода.
Исключение – проход по объекту, о котором мы расскажем ниже. Там поведение итератора отличается от обычного счетчика от 0 до n.
Интерфейс итератора. Иногда можно столкнуться с понятиями «интерфейс Iterator», «протокол Iterator» и похожими. Это не совсем то же самое. Если говорить простыми словами, это объект, который умеет заниматься перечислением. Он встроен в некоторые типы данных. Но с ним можно столкнуться уже на более продвинутых уровнях изучения разработки: без знания основ сложно понять, что это такое и как работает.
Также в некоторых стандартных функциях языков есть встроенные итераторы. Они тоже работают как счетчики, но цикл разработчику писать не приходится.
Что означает «итерируемый объект»
Еще одно понятие из программирования – итерируемость. Некоторые сущности называют итерируемыми, или iterable. Если вы будете изучать какой-либо из современных языков, например, JavaScript, то с большой вероятностью столкнетесь с этим понятием.
Итерируемые объекты – это такие, содержимое которых можно пересчитать. Простейший пример – строка: в цикле можно пройти от первой ее буквы к последней. У нее конечное количество символов, и у каждого из них есть строго заданное место.
Второй пример итерируемого объекта – массив. Это переменная, в которую записано несколько значений, и у каждой есть свой порядковый номер. Структура похожа на числовой ряд. Массив тоже можно пересчитать: двигаться в цикле от первого объекта к последнему или наоборот.
Необходимость проходить по таким объектам часто встречается в разработке, например, при парсинге, обработке строк или других данных. Поэтому итерируемость – важное понятие.
Интерфейс итератора, о котором мы упомянули выше, в обязательном порядке есть у итерируемых объектов. Это важное условие. Без него объект не получится пересчитать.

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все
Итерация в проходах по объекту
Во многих языках программирования есть специальные форматы циклов для прохода по массивам и другим итерируемым объектам. По сути это те же циклы с заданным количеством повторений, просто с другим итератором.
Итератор в таких циклах по очереди принимает каждое значение из содержимого объекта – от первого к последнему. Разберем на примере.
Допустим, в цикле нужно пройти по строке «школа». Повторений будет пять. Итератор будет по очереди принимать значения «ш», «к», «о», «л», «а». После этого он дойдет до конца строки, и цикл завершится.
Такой формат удобен, потому что при работе с массивом или строкой часто бывает нужно работать с отдельными элементами из набора. Например, массив содержит множество сообщений, и каждое нужно обработать отдельно от другого. Это удобно сделать с помощью прохода по массиву в цикле.
Проходить таким образом можно только по итерируемым объектам.
Чем итерации отличаются от рекурсии
Еще один пример повторяющегося алгоритма – рекурсия. Но она работает по другому принципу. Рекурсивный и итеративный подход различаются следующим:
- итеративная подпрограмма вызывается, завершается и снова вызывается несколько раз подряд;
- рекурсивная функция вызывает сама себя, но с другими аргументами. В итоге одновременно может быть открыто несколько вложенных друг в друга подпрограмм.
У рекурсивных функций тоже есть условия для выхода, но пишутся они иначе. Если аргументы отвечают какому-то условию, функция возвращает некоторое значение и закрывается. Это значение передается в предыдущий экземпляр – и так далее. Они завершаются от внутренних к внешним.
В решениях некоторых задач рекурсия выглядит изящнее, чем итерации, но такой подход отнимает довольно много памяти. Поэтому использовать его не всегда оптимально – чаще его рекомендуют заменять на итеративный.
Примеры задач, которые решаются итеративно
Приведем несколько примеров задач, которые удобно решать с помощью нескольких итераций с условием или заданным количеством повторений. Это далеко не исчерпывающий список, но перечислить все возможные задачи практически невозможно. Их существует слишком много.
Циклический подсчет. Простой пример – расчет какого-нибудь математического выражения, например, факториала или n-го числа Фибоначчи. Кстати, такие задачи можно решать и рекурсивно, но часто это неоптимально с точки зрения использования памяти.
Факториал – это число, которое получается, если по очереди умножить друг на друга числа от 1 до n. Например, факториал из 5 (записывается как 5!) равен 1 * 2 * 3 * 4 * 5 = 120.
Так как умножать числа нужно несколько раз и по очереди, здесь будет уместен цикл с заданным количеством итераций. Итератор будет отсчитывать значения от 1 до n.
Кстати, итератор можно использовать при перемножении – хранить в переменной промежуточный результат и на каждом шаге умножать на итератор. Ведь он точно так же по очереди меняется от 1 до n. Правда, тогда надо сразу прописать, чтобы отсчет итератора начался с 1, а не с 0, как обычно. Иначе весь результат окажется равен 0.
Перебор массива или объекта. Представьте, что с сервера пришел большой массив строк. В каждой из них – данные по какому-то товару с сайта. Это условный упрощенный пример, на самом деле особенности передачи данных с сервера несколько сложнее.
Нужно обработать этот массив строк: выделить из каждой строки отдельные части и записать их в нужные места. Получается итеративный алгоритм. Элементы массива пронумерованы, и это итерируемый объект, поэтому его можно обойти в специальном цикле для прохода.
На каждом шаге цикла можно выполнять заданные действия с нужным элементом. На следующем шаге те же действия выполнятся с другим элементом – и так далее до конца массива. Не нужно несколько раз писать одно и то же, все сделает программа.
Правда, в некоторых языках для такой обработки массива существуют специальные функции. С их помощью пройти и обработать итерируемый объект можно в одну строку – но такое есть не везде, и это более продвинутый уровень.
Повтор до выполнения условия. Абстрактный пример: каждый месяц количество пользователей сайта увеличивается в среднем на n процентов. Нужно проанализировать, сколько месяцев пройдет, прежде чем количество пользователей достигнет определенного числа m. Будем считать, что динамика прироста остается одинаковой.
В этом случае мы точно не знаем, сколько повторений нужно. Но задача сводится к тому, чтобы несколько раз высчитать n % от текущего количества, прибавить к текущему количеству и сравнить с пороговым числом m. На каждом шаге счетчик нужно увеличивать на 1 – один месяц. Это можно сделать итеративно.
Понадобится цикл с неопределенным количеством повторений – тот, который выполняется, пока верно или неверно какое-либо условие. Можно написать условие «повторять, пока количество пользователей не станет равно или больше m» – и программа сама повторится нужное количество раз.
Потом подпрограмма должна вернуть количество месяцев, то есть фактическое количество итераций. Кстати, цикл можно использовать повторно с разными n и m – для каждых входных данных цикл подсчитает свой результат. Соответственно, будет меняться и количество итераций.
Как часто нужно решать задачи итеративно
Решать задачи в цикле – стандартный алгоритм для многих языков. Но в коммерческой разработке этот подход не всегда применим. Например, в JavaScript считается, что лучше обходиться без перебора массивов в цикле – вместо этого советуют применять специальные встроенные функции. Но в целом итерации встречаются много где, а конкретный подход во многом зависит от языка программирования.
С итерациями человек сталкивается еще в самом начале обучения программированию. Циклы – часть базового синтаксиса практически любого языка. А без нескольких итераций цикл не получится.
Даже если впоследствии программист в основном будет работать с языком, где редко нужны циклы, знать их все равно надо. Это основа, база, которая помогает понять структуру и принцип работы с языком.
Frontend-разработчик
Научитесь создавать удобные и эффектные сайты, сервисы и приложения, которые нужны всем. Сегодня профессия на пике актуальности: в России 9000+ вакансий, где требуется знание JavaScript.

Статьи по теме:
Разбираемся, чем змея отличается от жабы, почему синтаксический сахар нельзя добавить в чай и кто такие сионисты
Итерация — разработка ПО
Итерация — это временной интервал, является элементом современных итерационно-инкрементных процессов, когда команда в течение итерации, реализуя часть функциональности (инкремент продукта), проходит все фазы разработки: анализ, проектирование, разработка, тестирование, развертывание.
В результате итерации команда получает законченную функциональность приложения, которую можно передать заказчику, либо владельцу (менеджеру) продукта для оценки.
Длительность итерации может варьироваться от нескольких дней, до нескольких недель, но обычно составляет одну или две недели.
В методологиях семейства Agile часто практикуют фиксацию длительности итерации на всем протяжении разработки приложения, называется эта практика time boxing. Это позволяет создать ритм работы команды и вычислить скорость команды, на основе их оценок сложности и трудоемкости реализации функциональности.
В методологии Scrum, вместо термина итерация используют спринт , таким образом, календарный график разработки делится на спринты .
Итерация (программирование)
![]()
- Итерация в программировании — в широком смысле — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии). В узком смысле — один шаг итерационного, циклического процесса.
Связанные понятия
Мемоизация (запоминание, от англ. memoization (англ.) в программировании) — сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации, применяемый для увеличения скорости выполнения компьютерных программ. Перед вызовом функции проверяется, вызывалась ли функция ранее.
Избыточность — термин из теории информации, означающий превышение количества информации, используемой для передачи или хранения сообщения, над его информационной энтропией. Для уменьшения избыточности применяется сжатие данных без потерь, в то же время контрольная сумма применяется для внесения дополнительной избыточности в поток, что позволяет производить исправление ошибок при передаче информации по каналам, вносящим искажения (спутниковая трансляция, беспроводная передача и т. д.).
В статистике метод оценки с помощью апостериорного максимума (MAP) тесно связан с методом максимального правдоподобия (ML), но дополнительно при оптимизации использует априорное распределение величины, которую оценивает.
В информатике объединение (англ. union) представляет собой значение или структуру данных, которое может иметь несколько различных представлений.
Выравнивание данных в оперативной памяти компьютеров — способ размещения данных в памяти особым образом для ускорения доступа.
Упоминания в литературе
Любой фрактал может быть представлен как визуализация некоторого алгоритма, набора математических процедур, имеющих характер последовательных итераций (многократных повторений заданных операций). Фрактальные итерации – рекурсивны, т. е. каждый результат предыдущего шага служит начальным значением для нового цикла самовоспроизводства фрактальной структуры (узора, конструкции, идеи).
Анализ топологии процесса может проводиться в несколько итераций. В результате первоначальный построенный процесс может кардинально измениться. Например, функции, которые раньше выполнялись последовательно друг за другом, стали выполняться параллельно. Цель данного анализа – добиться максимально понятного течения процесса, отражающего при этом либо реальное положение вещей, либо оптимальное с учетом доступности ресурсов.
Ракурс, который нам дает теория исследований операции, позволяет увидеть и особую роль механизмов бифуркации в развитии материн. Используя язык этой теории, мы могли бы сказать, что бифуркационные механизмы в отличие от механизмов адаптационного типа осуществляют нелокальную оптимизацию. То, что начинает происходить в природе, когда вступает в действие бифуркационный механизм, можно уподобить ситуации, в которой вычислитель, работая с диалоговой системой оптимизации, время от времени при решении сложной задачи отступает от использования локальных алгоритмов типа наискорейшего пуска. Так он поступает всякий раз, когда используемый алгоритм «зацикливается», т. е. когда последующие итерации с помощью этого алгоритма перестают совершенствовать систему, т. е. приближать нас к точке минимума. В этом случае опытный вычислитель, как правило, переходит на метод Монте-Карло или какой-нибудь другой метод нелокального спуска.
В биологии простые формы оказываются во многих случаях более адаптивными, чем сложные, да и в культуре сложность организации как отдельных образований, так и целых социально-исторических систем вовсе не даёт гарантий их выживания и успешного ответа на разного рода вызовы., Трансцендентность вектора усложнения обусловлена, думаю, тем, что сложность структуры пропорциональна скоростям протекающих в ней процессов. Ведь чем выше уровень сложности, тем больше скорости внутренних взаимодействий[59]. А ускорение процессов – показатель сжатия времени, на глобальном уровне стремящегося к своему снятию. В этом смысле, каждая локальная система живёт в своём темпомире, внутренне ускоряющемся по ходу эволюционных итераций. Так, вектор усложнения устремляется к возврату (на новом, разумеется, уровне) в состояние не-длительности. Даже если сжатие времени и не достигает (никогда не достигнет?) метафизической точки снятия, а просто стремится к бесконечности, то и этого достаточно, чтобы служить глобальным трендом эволюционного усложнения форм и систем. Стремление доводить всё до логического конца – в данном случае до финализма квазигегелевского толка – въевшаяся в подсознание привычка, выработанная рационалистическим логицизмом. Однако сама действительность никаких «логических концов», как правило, не приемлет. Так, результатом «критического» уплотнения времени может стать растворение каузальности в когерентности, преодоление необратимости времени и т. п.
Нужно отметить, что если бы архитектура человека была построена на какой-либо другой базовой формуле и воспроизводилась бы, например, по 24-м итерациям, как в рунической системе, то методы описания такого фрактала отличались, хотя аналогии между такими системами возможны. Поэтому, руническая и сефиротическая традиции отличаются, но обладают точками сопряжения.
В части IV мы переключаем внимание на вопросы, связанные с составлением календарных графиков для проекта. Глава 13 открывается обзором этапов составления календарных графиков для сравнительно простого, выполняемого одной командой проекта. В следующей главе (14) рассматривается вопрос планирования итераций. Главы 15 и 16 посвящены выбору длины итераций для проекта и оценке первоначального темпа продвижения команды. В главе 17 детально разбирается составление календарных графиков для проекта с высоким уровнем неопределенности или с высокой чувствительностью к некорректности графика. Раздел завершается главой 18, в которой описываются дополнительные этапы при оценке и планировании проекта, осуществляемого несколькими командами.
При этом легкие методологии также отличаются друг от друга – Crystal призывает совмещать производительность и толерантность, в отличие от ХР, где продуктивность возрастает как раз за счет уменьшения толерантности. Методология «Adaptive Software Development» разработана специально для крайне нестабильных ситуаций в разработках, когда требования, проектирование и невозможно короткие сроки являются функциями друг друга и постоянно меняются (так зачастую происходит в веб-разработках). Scrum характерен активным воздействием внешних лиц по отношению к рабочей группе, при этом у заказчика сохраняется максимальный приоритет. Заказчик продукта сам решает, как оформить бэклог продукта, выбирает требования для следующей итерации. При этом несоблюдение базовых принципов, заложенных в Scrum, таких как самонаправляемые команды, обязательная расстановка приоритетов или еженедельные обновления, может привести к срыву проекта.
Связанные понятия (продолжение)
Метка (англ. label) — символьное имя, идентификатор для более удобного указания данных и кода в языках программирования. Позволяет программисту обходиться без вычисления и пересчёта адресов и смещений внутри программы (эти действия за него выполняет компилятор). Несмотря на то, что большинство языков программирования высокого уровня поддерживают операции с метками, их использование крайне нежелательно, так как программный код становится плохочитаемым, и отладка такой программы занимает большее время.
Псевдопреобразова́ние Адама́ра (англ. Pseudo-Hadamard Transform, PHT) — обратимое преобразование битовых строк, используемое в криптографии для обеспечения диффузии при шифровании. Количество бит на входе преобразования должно быть чётным, чтобы было возможным разделение строки на две части равной длины. Создателем преобразования является французский математик Жак Адамар.
Глобальная переменная в программировании — переменная, областью видимости которой является вся программа, кроме специально затенённых областей. Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию (англ. global environment, global state). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений.
Прототипом функции в языке Си или C++ называется объявление функции, не содержащее тела функции, но указывающее имя функции, арность, типы аргументов и возвращаемый тип данных. В то время как определение функции описывает, что именно делает функция, прототип функции может восприниматься как описание её интерфейса.
Недостижимый код часто относят к одному из типов мёртвого кода, такая терминология обычно применяется при рассмотрении исходного кода программ. Однако в теории компиляторов, эти понятия никак не связаны, мёртвым кодом там называют только достижимый, но не влияющий на вывод программы код.
Гибри́дная (или комбини́рованная) криптосисте́ма — это система шифрования, совмещающая преимущества криптосистемы с открытым ключом с производительностью симметричных криптосистем. Симметричный ключ используется для шифрования данных, а асимметричный для шифрования самого симметричного ключа, иначе это называется числовой упаковкой.
Функциональный объект (англ. function object), также функтор, функционал и функционоид — распространённая в программировании конструкция, позволяющая использовать объект как функцию. Часто используется как callback, делегат.
Абстракция в информатике представляет собой технику управления сложностью систем.
Кома́нда перехо́да — команда процессора, которая нарушает непрерывную последовательность исполнения команд, вынуждая выбирать и исполнять последующие команды с произвольно заданного адреса. Используется для организации условных операторов, циклов, для связи с подпрограммами. Исполнение команды перехода в современных микропроцессорах чревато потерями производительности из-за простоев конвейера.
В криптографии, атака нахождения прообраза криптографической хеш-функции — это попытка отыскать сообщение с заданным значением хеша. Существуют два типа подобных атак.
Экранирование символов — замена в тексте управляющих символов на соответствующие текстовые подстановки. Один из видов управляющих последовательностей.
В информатике таблица символов (от англ. symbol table «таблица идентификаторов») — это структура данных, используемая транслятором (компилятором или интерпретатором), в которой каждый идентификатор переменной или функции из исходного кода ассоциируется с информацией, связанной с его объявлением или появлением в коде: типом данных, областью видимости и в некоторых случаях местом в памяти (смещением).
В программировании понятие флаг относится к одному или нескольким битам памяти, используемым для хранения двоичной комбинации или кода, который характеризует состояние некоторого объекта. Флаги обычно входят в определённые структуры данных, такие как записи баз данных, и их значения, как правило, связаны со значением структур данных, частью которых они являются. Во многих случаях двоичное значение флага представляет собой кодированное представление одного из нескольких возможных состояний или статусов.
Парсер (англ. parser; от parse – анализ, разбор) или синтаксический анализатор — часть программы, преобразующей входные данные (как правило, текст) в структурированный формат. Парсер выполняет синтаксический анализ текста.
Хеш-деревом, деревом Меркла (англ. Merkle tree) называют полное двоичное дерево, в листовые вершины которого помещены хеши от блоков данных, а внутренние вершины содержат хеши от сложения значений в дочерних вершинах. Корневой узел дерева содержит хеш от всего набора данных, то есть хеш-дерево является однонаправленной хеш-функцией. Дерево Меркла применяется для эффективного хранения транзакций в блокчейне криптовалют (например, в Bitcoin’е, Ethereum’е). Оно позволяет получить «отпечаток» всех транзакций.
Атака возврата в библиотеку (англ. Return-to-libc attack) — один из видов компьютерных атак, популярных на x86-совместимых машинах и схожие с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе, и в последующую часть стека записываются параметры для вызываемой функции. Эта техника позволяет нападающему выполнить какую-либо существующую функцию без необходимости внедрять вредноносный код в программу.
Веду́щие нули́ в записи числа при помощи позиционной системы счисления — последовательность из одного или более нулей, занимающая старшие разряды. Понятие ведущих нулей возникает при использовании представлений чисел, имеющих фиксированное количество разрядов. В остальных случаях, как правило, ведущие нули не пишутся.
В теории вычислимости алгоритмически неразрешимой задачей называется задача, имеющая ответ да или нет для каждого объекта из некоторого множества входных данных, для которой (принципиально) не существует алгоритма, который бы, получив любой возможный в качестве входных данных объект, останавливался и давал правильный ответ после конечного числа шагов.
Коди́рование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.
В программировании, ассемблерной вставкой называют возможность компилятора встраивать низкоуровневый код, написанный на ассемблере, в программу, написанную на языке высокого уровня, например, Си или Ada. Использование ассемблерных вставок может преследовать следующие цели.
Стековый язык программирования (англ. stack-oriented programming language) — это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript, а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#). При использовании стека в качестве основного канала передачи параметров между словами элементы языка естественным образом образуют фразы (последовательное.
Зацепление, сцепление, сопряжение (англ. coupling) — способ и степень взаимозависимости между программными модулями; сила взаимосвязей между модулями; мера того, насколько взаимозависимы разные подпрограммы или модули.
Зако́н Амдала (англ. Amdahl’s law, иногда также Закон Амдаля-Уэра) — иллюстрирует ограничение роста производительности вычислительной системы с увеличением количества вычислителей. Джин Амдал сформулировал закон в 1967 году, обнаружив простое по существу, но непреодолимое по содержанию ограничение на рост производительности при распараллеливании вычислений: «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения.
Дублирование кода — термин из программирования, под которым понимается, что некоторые участки исходного кода могут встречаться более чем однажды, как внутри одной, так и в нескольких программных сущностях. Дублирование является симптомом так называемого «дурно пахнущего кода». В первую очередь потому, что увеличивается его длина; именно из-за дублирования, а не из-за совпадений. Последовательность дубликатов иногда называют клонами.
Менеджер памяти — часть компьютерной программы (как прикладной, так и операционной системы), обрабатывающая запросы на выделение и освобождение оперативной памяти или (для некоторых архитектур ЭВМ) запросы на включение заданной области памяти в адресное пространство процессора.
Точка следования (англ. sequence point) — в программировании любая точка программы, в которой гарантируется, что все побочные эффекты предыдущих вычислений уже проявились, а побочные эффекты последующих ещё отсутствуют.
Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT) используется в архитектуре x86 и служит для определения корректного ответа на прерывания и исключения.
В языках программирования единица трансляции — минимальный блок исходного текста, который физически можно оттранслировать (преобразовать во внутреннее машинное представление; в частности, откомпилировать). Важная концепция языков Си и Си++.
Управляющая последовательность (исключённая последовательность, экранированная последовательность, от англ. escape sequence) — совокупность идущих подряд значащих элементов, в группе теряющих для обрабатывающего механизма своё индивидуальное значение, одновременно с приобретением этой группой нового значения.
В программировании то́чка остано́ва (англ. breakpoint) — это преднамеренное прерывание выполнения программы, при котором выполняется вызов отладчика (одновременно с этим программа сама может использовать точки останова для своих нужд). После перехода к отладчику программист может исследовать состояние программы (логи, состояние памяти, регистров процессора, стека и т. п.), с тем чтобы определить, правильно ли ведёт себя программа. В отличии от полной остановки, с помощью останова, после работы в.
Охра́на (охраня́ющее выраже́ние, охранное выражение) — логическое выражение, которое предназначено для ограничения вычислительных процессов и выбора варианта вычислений. Обычно, используется в функциональных языках программирования (например, Haskell, Erlang).
Квазиньютоновские методы — методы оптимизации, основанные на накоплении информации о кривизне целевой функции по наблюдениям за изменением градиента, чем принципиально отличаются от ньютоновских методов. Класс квазиньютоновских методов исключает явное формирование матрицы Гессе, заменяя её некоторым приближением.
Точка входа — адрес в оперативной памяти, с которого начинается выполнение программы. Другими словами — адрес, по которому хранится первая команда программы. Однако не надо путать её с «первыми командами» программы на языке высокого уровня. Например программа на C++ начинает выполнение с функции main(), на самом деле, программа в памяти начинается далеко не с первой команды этой функции.
Признаковое описание объекта (англ. feature vector) — это вектор, который составлен из значений, соответствующих некоторому набору признаков для данного объекта. Значения признаков могут быть различного, не обязательно числового, типа. Является одним из самых распространённых в машинном обучении способов ввода данных.
Делегат (англ. delegate) — класс, который позволяет хранить в себе ссылку на метод с определённой сигнатурой (порядком и типами принимаемых и типом возвращаемого значений) произвольного класса. . Экземпляры делегатов содержат ссылки на конкретные методы конкретных классов.
В программировании тип возвращаемого значения (англ. return type) или тип результата (англ. result type) определяет и накладывает ограничения на тип данных, возвращаемых методом или функцией. Во многих языках программирования (особенно это касается языков со статической типизацией, как например, Java, C++ и Си) возвращаемый тип должен быть явно указан при объявлении функции.
Обобщённый алгебраический тип да́нных (англ. generalized algebraic data type, GADT) — один из видов алгебраических типов данных, который характеризуется тем, что его конструкторы могут возвращать значения не своего типа, связанного с ним. Сконструированы под влиянием работ об индуктивных семействах в среде исследователей зависимых типов.
Мажорита́рный элеме́нт (мажоритарный клапан, переключатель по большинству, ППБ) — логический элемент из класса пороговых, с чётным или нечётным числом входов и одним выходным сигналом, значение которого совпадает со значением на большинстве входов. При чётном числе входов большинством считается n/2+1, соответственно, n/2 к большинству не относится. Таким образом, элемент работает по «принципу большинства»: если на большинстве входов будет сигнал «1», то и на выходе схемы установится сигнал «1»; и.
Группа Григорчука — первый пример конечнопорождённой группы промежуточного роста (то есть её рост быстрее полиномиального, но медленнее экспоненциального).
Перебор делителей (пробное деление) — алгоритм факторизации или тестирования простоты числа путём полного перебора всех возможных потенциальных делителей.
Перенос и заём в арифметике — приёмы, применяемые в арифметических алгоритмах позиционных систем счисления при выполнении операций сложения и вычитания соответственно, а также (в составе тех же сложения и вычитания) и иных арифметичких операций. Перенос можно понимать как выделение умножения на основание системы счисления в отдельное слагаемое, с последующей перегруппировкой слагаемых.
Лине́йная интерполя́ция — интерполяция алгебраическим двучленом P1(x) = ax + b функции f, заданной в двух точках x0 и x1 отрезка . В случае, если заданы значения в нескольких точках, функция заменяется кусочно-линейной функцией.
Таблица поиска (англ. lookup table) — это структура данных, обычно массив или ассоциативный массив, используемая с целью заменить вычисления на операцию простого поиска. Увеличение скорости может быть значительным, так как получить данные из памяти зачастую быстрее, чем выполнить трудоёмкие вычисления.
Сортировка Шелла (англ. Shell sort) — алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами — это сортировка вставками с предварительными «грубыми» проходами. Аналогичный метод усовершенствования пузырьковой сортировки называется сортировка расчёской.
Конструктивная блочная геометрия, КБГ (англ. Constructive Solid Geometry, CSG) — технология, используемая в моделировании твёрдых тел. Конструктивная блочная геометрия зачастую, но не всегда, является способом моделирования в трёхмерной графике и САПР. Она позволяет создать сложную сцену или объект с помощью битовых операций для комбинирования нескольких иных объектов. Это позволяет более просто математически описать сложные объекты, хотя не всегда операции проходят с использованием только простых.