Терминологический словарь

Код и выполнение

Исходный код — текст программы на языке программирования.

Компилятор — программа, которая преобразует исходное представление в другое: например, javac переводит Java-код в JVM bytecode.

Интерпретатор — выполняет инструкции, анализируя их во время работы. Реальная JVM сочетает интерпретацию bytecode и JIT-компиляцию.

Runtime — среда и библиотеки, необходимые уже запущенной программе.

Процесс — экземпляр выполняемой программы со своим адресным пространством и ресурсами ОС.

Поток — путь исполнения внутри процесса. Потоки разделяют память процесса, но имеют собственные стеки.

Отладка — локализация причины расхождения между ожидаемым и фактическим поведением. Debugger — только один из инструментов; логи, тесты и профилировщик тоже участвуют.

Структура программы

Модуль — самостоятельная часть системы с явным интерфейсом и зависимостями.

API — контракт взаимодействия: доступные операции, входы, выходы и ошибки.

Сигнатура метода — имя и типы параметров в понимании Java; return type не помогает различить перегруженные методы.

Инвариант — условие, которое должно оставаться истинным в определённых точках выполнения.

Идемпотентность — повтор операции с тем же входом не меняет итог после первого успешного применения.

Побочный эффект — наблюдаемое изменение вне возвращаемого значения: запись в БД, отправка сообщения, изменение аргумента.

Данные

Сериализация — преобразование состояния в представление для хранения или передачи.

Транзакция — логическая единица работы, которая фиксируется или откатывается согласно правилам системы.

Индекс — дополнительная структура данных, ускоряющая определённые способы поиска ценой памяти и стоимости записи.

Кэш — более быстрое хранилище копии данных; требует политики заполнения, актуализации и удаления.

Архитектура

Связность — насколько тесно элементы модуля относятся к одной задаче. Высокая смысловая связность обычно желательна.

Зацепление — насколько один модуль знает детали другого. Чем меньше лишних знаний, тем проще изменение.

Фреймворк — каркас, который управляет жизненным циклом приложения и вызывает пользовательский код в предусмотренных точках. См. Фреймворк.

Библиотека — код, который вызывает само приложение. Граница с фреймворком бывает размыта, но направление управления помогает различить их.

Git

Repository — набор объектов Git и ссылок вместе с рабочей копией проекта.

Commit — снимок дерева файлов с метаданными и ссылкой на родителя или родителей.

Branch — перемещаемая ссылка на commit.

Merge — объединение историй.

Rebase — перенос последовательности изменений на другую основу с созданием новых commit objects.

Remote — именованная ссылка на другой Git-репозиторий.

Fork — серверная копия репозитория под другой учётной записью; это не синоним локального clone.

Pull request — предложение объединить изменения с обсуждением и проверками; это функция hosting-платформы, а не команда самого Git.

Имена-заполнители

foo, bar и baz — нейтральные метапеременные для примера, когда предметное имя не важно. В прикладном коде осмысленное имя почти всегда полезнее.

Связанные заметки