Терминологический словарь
Код и выполнение
Исходный код — текст программы на языке программирования.
Компилятор — программа, которая преобразует исходное представление в другое: например, 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 — нейтральные метапеременные для примера, когда предметное имя не важно. В прикладном коде осмысленное имя почти всегда полезнее.