# Глава 11. Основные термины Код на языке **Nim** описывает вычисления, которые воздействуют на память, состоящую из отдельных ячеек, называемых _локациями_. _Переменная_ — это, по сути, имя локации. Каждая переменная и локация имеют определенный _тип_. _Тип переменной_ называется _статическим типом_, а _тип локации_ — _динамическим типом_. Если статический тип отличается от динамического, то он является _супертипом_ или _подтипом динамического типа_. _Идентификатор_ — это символ, объявленный в качестве имени переменной, типа, процедуры и т. д. Область программы, к которой применяется объявление, называется _областью видимости_ объявления. Области видимости могут быть _вложенными_. _Значение_ идентификатора определяется наименьшей охватывающей областью видимости, в которой он объявлен, если только правила разрешения перегрузки не предполагают иного. _Выражение_ задает _вычисление_, результатом которого является значение или локация. Выражения, результатом которых являются локации, называются _L-значениями_. L-значение может обозначать либо локацию, либо значение, которое содержит эту локацию, в зависимости от контекста. _Литерал_ — это часть программы на языке **Nim**, которая обозначает атомарную часть вычисления, не являющуюся локацией, например: число 3 или строка "abc" — это литералы. Литералы нельзя изменять, например, фрагмент кода 12 = 4 (присвоить значение 4 значению 12) недопустим. Программа на языке **Nim** состоит из одного или нескольких текстовых файлов с исходным кодом. Процессор **Nim** — это инструмент, который может анализировать и при необходимости преобразовывать программы на языке **Nim**. Один из типов процессоров называется компилятором. Компилятор **Nim** преобразует код на языке **Nim** в формат, подходящий для выполнения на конкретной целевой машине. > Эти определения были вдохновлены спецификацией ("report") языка Modula 3. Термин L-value был взят из спецификаций языков C и C++.