Предыдущий урок: Как работает компьютер? Часть 66. Пишем первую простую программу на Python
В прошлом уроке мы написали простую программу на Python и увидели результат её работы — приветствие и результат сложения. Кажется, что всё происходит по взмаху волшебной палочки: вы пишете понятные команды, и компьютер их немедленно выполняет. Но чтобы по-настоящему понять, как мы общаемся с процессором, нужно заглянуть под капот интерпретатора и увидеть, во что на самом деле превращаются наши элегантные строчки на Python, прежде чем они заставят светиться пиксели на экране. Этот процесс не является магией — это чётко организованная работа сложной системы, и сегодня мы станем свидетелями её скрытой, внутренней жизни.
Когда вы запускаете свой скрипт, интерпретатор Python не просто машинально выполняет его, как заученные фразы. Первым делом он проводит тщательный анализ вашего кода. Весь текст программы читается и преобразуется в специальную структуру — абстрактное синтаксическое дерево. Это не машинный код, а скорее подробный, универсальный план того, что нужно сделать, понятный самому интерпретатору. Представьте, что вы написали список поручений на русском языке, а ваш помощник-иностранец перевёл его в серию универсальных пиктограмм, понятных любому человеку, — вот что такое абстрактное синтаксическое дерево для Python.
Но и это ещё не уровень процессора. Следующий шаг — компиляция этого дерева в байт-код. Байт-код — это уже не текст и не пиктограммы, а компактная последовательность инструкций для виртуальной машины Python. Это низкоуровневый язык, но всё ещё независимый от реального железа. Если бы наш процессор понимал его напрямую, то на этом всё и закончилось. Но он не понимает. Поэтому сердце интерпретатора — виртуальная машина Python (PVM) — начинает исполнять этот байт-код построчно. Каждая инструкция байт-кода — это команда для PVM, которая приводит к выполнению одного или нескольких машинных команд самого интерпретатора, написанного на языке C и уже скомпилированного под ваш процессор.
Давайте посмотрим на это вживую. Вы можете легко увидеть байт-код своей программы. Для этого в терминале запустите Python в режиме интерактивной сессии и воспользуйтесь модулем dis (дизассемблер):
После выполнения вы увидите на экране нечто подобное:
Это и есть тот самый байт-код — подробный набор инструкций для виртуальной машины. Разберём несколько из них:
- LOAD_CONST 1 (5): Положить число 5 в стек виртуальной машины.
- STORE_FAST 0 (a): Взять значение с вершины стека и сохранить его в переменной a.
- BINARY_ADD: Взять два значения с вершины стека, сложить их и результат вернуть на стек.
- CALL_FUNCTION 1: Вызвать функцию (в данном случае print), взяв из стека необходимое количество аргументов.
И вот теперь, на самом дне, происходит то, ради чего мы начали этот курс. Каждая из этих инструкций байт-кода (например, BINARY_ADD) — это не команда процессору. Это указание для кода виртуальной машины, который, в свою очередь, состоит из настоящих машинных команд. Когда PVM встречает BINARY_ADD, она запускает соответствующий участок своего машинного кода, который заставляет процессор выполнить последовательность инструкций MOV, ADD и других, в точности таких, какие мы изучали в разделе про ассемблер. Процессор складывает два числа, даже не подозревая, что изначально они были частью элегантной строчки c = a + b на языке Python.
Таким образом, наш код проходит долгий и сложный путь: от лаконичных и понятных человеку команд на Python до универсального плана (AST), затем до набора инструкций для виртуальной машины (байт-код) и, наконец, до выполнения машинным кодом самого интерпретатора, который и управляет процессором. Это блестящий пример многоуровневой абстракции, которая скрывает невероятную сложность аппаратного обеспечения за простым и удобным интерфейсом программирования.
Спасибо за внимание!
Следующий урок: Как работает компьютер? Часть 68. Как программа загружается в память и начинает выполняться
Если вам интересно копать глубже, разбирать реальные кейсы и получать знания, которых нет в открытом доступе — вам в IT Extra Premium.
Что внутри?
✅ Закрытые публикации: Детальные руководства, разборы сложных тем (например, архитектура высоконагруженных систем, глубокий анализ уязвимостей, оптимизация кода, полезные инструменты и объяснения сложных тем простым и понятным языком).
✅ Конкретные инструкции: Пошаговые мануалы, которые вы сможете применить на практике уже сегодня.
✅ Без рекламы и воды: Только суть, только концентрат полезной информации.
✅ Ранний доступ: Читайте новые материалы первыми.
Это — ваш личный доступ к экспертизе, упакованной в понятный формат. Не просто теория, а инструменты для роста.
👉 Переходите на Premium и начните читать то, о чем другие только догадываются.
👍 Ставьте лайки если хотите разбор других интересных тем.
👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи
________________________________________________________________________
👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!