Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
Округление (rounding). Преобразование значения в ближайшее менее точное значение по математическим правилам.
Операция (operation). Нечто, выполняющее какое-то действие, например функция или оператор.
Определение (definition). Объявление сущности, содержащее всю необходимую информацию для его использования в программе. Упрощенное определение: объявление, выделяющее память.
Отладка (debugging). Поиск и удаление ошибок из программы; обычно имеет менее систематичный характер, чем тестирование.
Ошибка (error). Несоответствие между разумными ожиданиями относительно поведения программы (часто выраженными в виде требований или руководства пользователя) и тем, что программа делает на самом деле.
Парадигма (paradigm). Несколько претенциозное название стиля проектирования или программирования. Часто (ошибочно) считают, что существует парадигма, превосходящая все остальные.
Параметр (parameter). Объявление явной входной информации для функции или шаблона. При вызове функция может обращаться к аргументам по именам своих параметров
Перегрузка (overload). Определение двух функций или операторов с одинаковыми именами, но разными типами аргументов (операндов).
Переменная (variable). Именованный объект заданного типа; содержит значение, если был инициализирован.
Переполнение (overflow). Создание значения, которое невозможно сохранить в предназначенной для него области памяти.
Подтип (subtype). Производный тип; тип, обладающий всеми свойствами базового типа и, возможно, дополнительными возможностями.
Последовательность (sequence). Совокупность элементов, которую можно перебрать последовательно.
Постусловие (post-condition). Условие, которое должно выполняться при выходе из фрагмента кода, например, функции или цикла.
Правильность (correctness). Программа или фрагмент программы считается правильным, если он соответствует своим спецификациям. К сожалению, спецификация может быть неполной или противоречивой или не соответствовать разумным ожиданиям пользователя. Таким образом, для того чтобы создать приемлемый код, мы иногда должны сделать больше, чем просто следовать формальной спецификации.
Предусловие (pre-condition). Условие, которое должно выполняться при входе во фрагмент кода, например функцию или цикл.
Прецедент использования (use case). Конкретный (как правило, простой) пример использования программы, предназначенный для ее тестирования и демонстрации возможностей.
Приложение (application). Программа или коллекция программ, рассматриваемая пользователями как сущность.
Принцип RAII (“Resource Acquisition Is Initialization”). Основная технология управления ресурсами, основанная на концепции области видимости.
Программирование (programming). Искусство выражения решений задач в виде кода.
Программное обеспечение (software). Совокупность фрагментов кода и связанных с ними данных; часто используется как синоним слова “программа”.
Программный код (возможно, вместе со связанными с ним данными). То, что полностью готово к выполнению на компьютере.
Проект (design). Общее описание того, как должно работать программное обеспечение, чтобы соответствовать своей спецификации.
Производный класс (derived class). Класс, являющийся наследником одного или нескольких базовых классов.
Псевдокод (pseudo code). Описание вычислений, записанное с помощью неформальных обозначений, а не языка программирования.
Реализация (implementation). 1) Действие, означающее написание и тестирование кода; 2) код, реализующий программу.
Регулярное выражение (regular expression). Обозначение шаблонов в виде строк символов.
Редактор связей (linker). Программа, объединяющая файлы объектного кода с библиотеками в исполняемый модуль.
Рекурсия (recursion). Вызов функции самой себя; см. также итерация.
Ресурс (resource). Нечто, чем можно завладеть и что впоследствии следует освободить, например дескрипторы файлов, блокировка или память.
Система (system). 1) Программа или набор программ для выполнения определенной задачи на компьютере; 2) сокращение словосочетания “операционная система”, т.е. базовая среда для выполнения программ и инструменты компьютера.
Слово (word). Основная единица памяти компьютера, обычно используется для хранения целых чисел.
Сложность (complexity). С трудом поддающееся точному определению понятие, представляющее собой некую меру трудности процесса поиска решения задачи или свойство самого решения. Иногда под сложностью (просто) понимают оценку количества операций, необходимых для выполнения алгоритма.
Сокрытие (hiding). Действие, предотвращающее доступ к информации. Например, имя из вложенной (внутренней) области видимости, совпадающее с именем из охватывающей (внешней) области видимости, может быть недоступно для непосредственного использования.
Сокрытие информации (information hiding). Действие, связанное с отделением интерфейса и реализации друг от друга, в результате которого детали реализации остаются за пределами внимания пользователя и возникает абстракция.
Состояние (state). Набор значений.
Спецификация (specification). Описание того, что должен делать фрагмент кода.
Ссылка (reference). 1) Значение, описывающее место в памяти значения, имеющего тип; 2) переменная, содержащая такое значение.
Стандарт (standard). Официально согласованное определение чего-либо, например, языка программирования.
Стиль (style). Совокупность методов программирования, обеспечивающая согласованное использование возможностей языка. Иногда используется в очень ограниченном смысле, касающемся правил выбора имен и внешнего вида текста программы.
Стоимость (cost). Затраты (например, время работы программиста, время выполнения программы или объем памяти), связанные с производством программы или ее выполнением. В идеале стоимость должна зависеть от сложности.
Строка (string). Последовательность символов.
Супертип (supertype). Базовый тип; тип, имеющий подмножество свойств производного типа.
Тестирование (testing). Систематический поиск ошибок в программе.
Тип (type). То, что определяет набор возможных значений и допустимых операций над объектов.
Требование (requirement). 1) Описание желательного поведения программы или части программы; 2) описание предположений об аргументах функции или шаблона.
Указатель (pointer). 1) Значение, используемое для идентификации в памяти объекта, имеющего тип; 2) переменная, содержащая такое значение.
Усечение (truncation). Потеря информации в результате преобразования типа в другой тип, который не может точно представить преобразованное значение.
Утверждение (assertion). Утверждение, вставленное в программу, чтобы установить (assert), какое условие всегда должно выполняться в данной точке программы.
Файл (file). Контейнер, содержащий информацию в постоянной памяти компьютера.
Функция (function). Именованная единица кода, которую можно активизировать (вызвать) из разных частей программы; логическая единица вычислений.
Целое число (integer). Целое число в математическом смысле, например, 42 и –99.
Цикл (loop). Фрагмент кода, выполняющийся повторно; в языке C++ циклы, как правило, реализуются инструкцией for или while.
Число с десятичной точкой (floating-point number). Компьютерная аппроксимация действительного числа, например 7.93 и 10.78e–3.
Чисто виртуальная функция (pure virtual function). Виртуальная функция, которая должна быть замещена в производном классе.
Шаблон (template). Класс или функция, параметризованные одним или несколькими типами или значениями (на этапе компиляции); основная конструкция в языке C++, поддерживающая обобщенное программирование.
Язык программирования (programming language). Язык для выражения программ.
Библиография
Aho, Alfred V., Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools, Second Edition (обычно ее называют “The Dragon Book”). Addison-Wesley, 2007. ISBN 0321547985. (Русский перевод: Ахо А., Сети Р., Ульман Дж., Лам М. Компиляторы. Принципы, технологии, инструменты. 2-е издание. — М.: Вильямс, 2008.)
Andrews, Mike, and James A. Whittaker. How to Break Software: Functional and Security Testing of Web Applications and Web Services. Addison-Wesley, 2006. ISBN 0321369440.
Austern, Matthew H. Generic Programming and the STL: Using and Extending the C++ Standard Template Library. Addison-Wesley, 1999. ISBN 0201309564. (Русский перевод: Остерн М. Обобщенное программирование и STL. Использование и наращивание стандартной библиотеки шаблонов C++. — Спб: Невский Диалект, 2004.)
Austern, Matt, ed.