Константа
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Значение с именем, которое не меняется, пока программа работает: задал один раз — дальше только читаешь.
Табличка с номером на двери кабинета: прочитать может каждый, а переписать номер маркером нельзя.
Найти в скетче Arduino «мигалки» число, которое нигде не меняется (номер вывода светодиода), и предложить ему говорящее имя.
Именованное значение, которое нельзя перезаписать: в скетче Arduino — const int LED_PIN = 13;. При проверке скетча Arduino IDE не даст присвоить константе новое значение — защита от случайной порчи. Константы убирают из кода «магические числа»: имя объясняет смысл, а менять значение при настройке нужно в одном месте, а не по всему коду.
Заменить в скетче Arduino три повторяющихся числа 13 на const int LED_PIN = 13; затем попытаться написать LED_PIN = 10; и прочитать сообщение об ошибке.
Неизменяемое именованное значение; имя обычно пишут ЗАГЛАВНЫМИ. В C++ запрет перезаписи проверяет компилятор (const), а constexpr требует значения, вычислимого ещё до запуска. В Python констант в языке нет — только соглашение об именах. Краевой случай: const в JavaScript запрещает переприсваивание имени, но не изменение содержимого: const a = [1] допускает a.push(2), но не a = [2].
Объявить в JavaScript const scores = [10, 20]; выполнить scores.push(30), затем scores = []; объяснить, почему первое сработало, а второе дало TypeError.
Частое заблуждение
«Раз значение не меняется, проще писать число прямо в коде». Нет: безымянное «магическое число» расползается по коду и объясняется только догадкой; константа даёт ему имя и одну точку изменения.