Андрей
Высший разум
(425869)
1 год назад
Переменная состоит из 3 компонентов:
имя (то, что ты называешь строкой) - существует только в исходном коде
адрес в памяти (указатель) - существует только в скомпилированном коде
значение - хранится по адресу переменной в памяти
В процессе компиляции имя заменяется адресом (это может быть фиксированный адрес или смещение относительно вершины стека или фрейма), а операции обращения к переменной языка высокого уровня заменяются на процессорные команды обращения к данным по адресу переменной.
В современных интерпретируемых языках исходный текст сначала компилируется в байт-код виртуальной машины, а только потом выполняется виртуальной машиной. И там может быть либо такая же замена имен переменных на адреса, либо в байт-коде сохраняются имена переменных. В последнем случае переменные в виртуальной машине хранятся, например, в виде ассоциативного массива с ключами - именами переменных.
Сергей
Гений
(56279)
1 год назад
Имена переменных (а так же функций, названия операторов, синтаксис) - только для легкого понимания человеком. Все переменные и функции - это адреса в памяти, операции - последовательность машинных команд, каждая из которых в памяти представлена как некое число. Вот и выходит - одни лишь адреса и цифры, цифры и адреса. По этой причине чистый машинный код был понятен только у 4 битных "калькуляторов". А когда калькуляторам доверили разбирать этот код, стало возможным написание более сложных программ для серьезных компьютеров. И так далее.
Вроде бы те, кто придумывали компьютер и первые программы - отличные математики.
if A != B:
then вывод какой то информации
else еще какой то блок
если перед компиляцией/интерпретацией переменная это строка/символ который можно найти как текст то как компилированый код обращается к переменной если код компилирован/интерпретирован?