Python Core

Як комп'ютер виконує програму

Що відбувається між натисканням «Run» і результатом на екрані — процесор, пам'ять, мови програмування, компілятор та інтерпретатор, і чому Python спершу компілює код у байт-код. Встановлення Python і перший запуск.

Як комп'ютер виконує програму

Що таке програма

Програма — це послідовність інструкцій, які комп'ютер виконує по черзі. Комп'ютер не додумує і не вгадує: він робить рівно те, що написано, і в тому порядку, в якому написано.

Типова програма виконує три дії: отримує дані, обробляє їх і видає результат. Калькулятор отримує числа, додає їх і показує суму. Ігровий застосунок отримує натискання клавіш, змінює стан гри й малює новий кадр.

Python — одна з мов, якими такі інструкції записують. У цій лекції розглянуто, що відбувається з рядком Python-коду від натискання «Run» до результату на екрані.

🎯 Мета лекції

  • Назвати ролі процесора, оперативної пам'яті й диска.
  • Пояснити, що в пам'яті всі дані зберігаються як числа.
  • Розрізняти компіляцію та інтерпретацію.
  • Знати, що Python спершу компілює код у байт-код, а потім виконує його.
  • Встановити Python, запустити його в режимі REPL і як скрипт.

🔑 Ключові терміни

  • Процесор (CPU): виконує інструкції.
  • Оперативна пам'ять (RAM): зберігає код і дані, поки програма працює.
  • Машинний код: числові команди, які розуміє процесор.
  • Компілятор / інтерпретатор: програми, що перекладають код у команди для процесора.
  • Байт-код: проміжні команди Python для його віртуальної машини.

Пригадаємо, що ви вже знаєте

Це перший урок, тому питання перевіряють наявні уявлення. Дайте відповідь на кожне до читання пояснень і запам'ятайте її: наприкінці лекції ці самі питання розглядаються ще раз.

Процесор, пам'ять і диск

У виконанні програми беруть участь три компоненти.

Процесор (CPU, Central Processing Unit) виконує інструкції. Він бере одну інструкцію, виконує її, переходить до наступної. Інструкції прості: додати два числа, порівняти два числа, скопіювати значення. Сила процесора в швидкості: він виконує мільярди таких кроків за секунду.

Оперативна пам'ять (RAM, Random Access Memory) — робоче сховище. У ній лежить усе, з чим програма працює зараз: код, числа, проміжні результати. Пам'ять швидка, але після вимкнення комп'ютера її вміст зникає.

Диск (SSD або HDD) зберігає файли постійно. Читання з диска значно повільніше, ніж з RAM, тому процесор напряму з диском не працює.

Звідси висновок: програму спершу завантажують з диска в оперативну пам'ять, і лише потім процесор бере звідти інструкції.

Спрощення: у реальному процесорі є ще кеш і регістри, а операційна система керує пам'яттю складніше. Для курсу достатньо: процесор виконує, RAM тримає код і дані, диск зберігає постійно.
Незбережені зміни у файлі існують лише в оперативній пам'яті редактора. Якщо живлення зникне, вони втратяться. Збереження копіює дані з RAM на диск.

Усе в пам'яті — числа

Оперативна пам'ять — це ряд однакових комірок, і кожна комірка має адресу. Одна комірка вміщує один байт (byte). Байт складається з 8 бітів (bit), кожен біт дорівнює 0 або 1, тому байт вміщує 256 значень: числа від 0 до 255. Усе, що зберігається в пам'яті, записане такими числами.

Приклад: слово Hello. Кожній літері відповідає номер за таблицею символів. Літера H має номер 72, e — 101, l — 108, o — 111. Слово займає п'ять сусідніх комірок.

Python має функції для перевірки: ord() повертає номер літери, chr() виконує зворотну дію.

print(ord("H"))
print(chr(101))
python numbers.py
72
e

Так само зберігаються й інші дані. Колір пікселя — це три числа (червоний, зелений, синій). Звук — послідовність чисел. Команди процесора теж числа. Тому байт сам по собі не має змісту: число 72 може бути літерою H, яскравістю пікселя або частиною команди. Зміст залежить від того, як програма його читає. На цьому ґрунтується поняття типу даних.

Адреси на картинці умовні. Справжні адреси залежать від операційної системи й змінюються між запусками.
Літера ї не входить до таблиці ASCII і в кодуванні UTF-8 займає 2 байти. Тому len("ї") дорівнює 1 символу, а в пам'яті це два байти. Докладніше в уроці про рядки.

Мови високого рівня і машинний код

Процесор виконує машинний код (machine code): числові команди, специфічні для архітектури процесора. Чипи Intel і AMD мають одні команди, чипи Apple та більшість смартфонів — інші. Вручну такі команди писати довго й складно: щоб додати два числа й вивести результат, потрібні десятки команд, а помилку в ряді чисел важко помітити.

Тому існують мови програмування високого рівня (high-level languages): C, Java, JavaScript, Python. Їхній синтаксис ближчий до людської мови:

print("Hello")

Один такий рядок замінює багато команд машинного коду. Але процесор його не розуміє. Між текстом програми й процесором потрібен перекладач.

Компілятор і інтерпретатор

Є два способи перекладу.

Компілятор (compiler) перекладає всю програму в машинний код один раз, до запуску. Результат — виконуваний файл (на Windows це .exe). Далі запускають саме його, вихідний код уже не потрібен. Так працюють C, C++, Go, Rust. Аналогія: книгу перекладають повністю й видають готовий переклад.

Інтерпретатор (interpreter) — програма, яка читає код і виконує його під час запуску, без окремого виконуваного файлу. Аналогія: перекладач перекладає кожне речення в момент розмови.

КомпіляціяІнтерпретація
Коли відбувається перекладодин раз, перед запускомщоразу під час запуску
Швидкість виконаннязазвичай вищазазвичай нижча
Перенесення на інший комп'ютерзбирати окремо під кожен процесордостатньо мати інтерпретатор
ПрикладиC, C++, Go, Rustbash; Python (після компіляції в байт-код)

Що насправді робить Python

Поширена відповідь — «Python інтерпретована мова». Вона неповна.

Python не виконує текст програми рядок за рядком. Спочатку він компілює код у проміжну мову — байт-код (bytecode). Це набір простих команд, які не залежать від процесора. Потім віртуальна машина Python (PVM, Python Virtual Machine) виконує ці команди по черзі. Вона і є інтерпретатором у класичному розумінні.

Перед створенням байт-коду текст розбивається на частини (токени) і з них будується дерево програми. Докладно ці етапи показано у відео. Python виконує обидві дії: компілює текст у байт-код, потім інтерпретує байт-код. Наслідки:

  • синтаксичні помилки знаходяться до виконання першого рядка;
  • байт-код не залежить від процесора, тому програма працює скрізь, де встановлено Python.

Байт-код можна переглянути модулем dis:

import dis

dis.dis('print("Hello")')
  0           RESUME                   0

  1           LOAD_NAME                0 (print)
              PUSH_NULL
              LOAD_CONST               0 ('Hello')
              CALL                     1
              RETURN_VALUE

LOAD_NAME знаходить об'єкт print, LOAD_CONST кладе текст 'Hello', CALL 1 викликає функцію з одним аргументом. RESUME і PUSH_NULL — службові команди віртуальної машини, зараз вони не потрібні.

Набір команд змінюється між версіями Python. Вивід отримано в Python 3.15. Назви команд запам'ятовувати не потрібно. Важливо, що команди прості й виконуються по черзі.
Програма, яку запускає команда python, називається CPython, бо написана мовою C. Існують й інші реалізації (PyPy, Jython). У курсі використовується CPython версії 3.15.

Встановлення Python і перший запуск

Курс використовує Python 3.15. Класичний спосіб встановлення — офіційний інсталятор з сайту python.org. Інсталятор встановлює інтерпретатор, стандартну бібліотеку та засоби запуску.

Завантажте інсталятор

Відкрийте python.org/downloads і завантажте інсталятор Python 3.15 для Windows (64-bit).

Позначте Add python.exe to PATH

На першому екрані інсталятора увімкніть прапорець Add python.exe to PATH. Він дозволяє запускати Python командою python з будь-якої папки.

Встановіть

Натисніть Install Now і дочекайтеся повідомлення про успішне встановлення.

Перевірте

Відкрийте новий PowerShell і виконайте команду:

python --version
У Windows інтерпретатор запускає команда python, у macOS і Linux — python3. У прикладах курсу скрізь написано python; на macOS і Linux замінюйте її на python3.

Очікуваний вивід (останнє число може відрізнятися):

Python 3.15.0

Інші способи встановлення

Усі ці способи дають той самий Python. Різниця в зручності оновлення та в тому, звідки береться пакет.

brew install python@3.15
python3.15 --version

Homebrew оновлює Python разом з іншими програмами командою brew upgrade.

REPL і скрипт

Код запускають у двох режимах.

REPL (Read-Eval-Print Loop) — інтерактивний режим: ви вводите рядок, Python виконує його, показує результат і чекає наступного. Підходить для експериментів. Запуск:

python

З'явиться запрошення >>>. Введіть вираз і натисніть Enter:

python
>>> 2 + 3
5
>>> print("Hello")
Hello
>>> exit()

Вихід з REPL — exit(). Кожен рядок у REPL проходить той самий шлях: компіляція в байт-код, виконання.

Скрипт (script) — файл .py з усією програмою. Створіть hello.py з рядком print("Hello") і запустіть:

python hello.py

Скрипт зберігається на диску, його можна запускати повторно й передавати іншим. Реальні програми пишуть саме у файлах.

Звідки береться __pycache__

У папці проєкту може з'явитися каталог __pycache__ з файлами .pyc — це збережений байт-код. Коли програма імпортує інший файл, Python компілює його й кладе байт-код у __pycache__, щоб не компілювати повторно, якщо вихідний файл не змінився. Назва містить версію Python, наприклад hello.cpython-315.pyc.

Скрипт, який запускають напряму (python hello.py), у __pycache__не потрапляє. Кеш створюється лише для імпортованих файлів. Відсутність папки після запуску скрипта — нормальна поведінка.

Передбачте, перш ніж запускати

Для кожного фрагмента запишіть відповідь, потім запустіть код у REPL і порівняйте. Розбіжність між передбаченням і результатом показує, яке уявлення потрібно уточнити.

Підсумок

  1. Процесор виконує, RAM тримає код і дані, диск зберігає постійно.
  2. Усе в пам'яті — числа; зміст числа залежить від того, як програма його читає.
  3. Процесор розуміє лише машинний код, тому код потрібно перекласти.
  4. Python спершу компілює код у байт-код, потім віртуальна машина виконує його.
  5. Код запускають у REPL або як скрипт; __pycache__ зберігає байт-код імпортованих файлів.

Повернімося до питань на початку

Порівняйте свої відповіді з блоку «Пригадаємо, що ви вже знаєте» з викладеним. Найчастіше змінюється відповідь про Python: це мова, код якої компілюється в байт-код і виконується на віртуальній машині, а не лише інтерпретується.

Типові хибні уявлення

Практичні завдання

Наступний урок: функція print, аргументи, розділювачі та екранування. Зокрема, чому \n — це один символ, а не два.
Copyright © 2026