Python / Перша книга програміста / Доступна

Основа основ: про комп’ютери, програми та програмування в цілому

1. Основа основ: про комп’ютери, програми та програмування в цілому

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

У цьому розділі ми розглянемо, що таке комп’ютери, програми та мови програмування, а також чому Python є чудовим вибором як перша мова програмування.

1.1 Що таке комп’ютер

Комп’ютер — це пристрій, який виконує інструкції (програми) для обробки даних.

Озирніться довкола: смартфон, планшет, ноутбук, розумний годинник, мікрохвильова піч — усе це приклади пристроїв, які виконують програми. Але чи всі вони є повноцінними комп’ютерами?

Комп’ютери бувають різними. Наприклад, мікрохвильова піч може містити невеликий комп’ютер, який виконує спеціальні програми для керування її роботою. А от ноутбук — це комп’ютер загального призначення, на якому можна створювати, змінювати та запускати найрізноманітніші програми.

1.2 Складові комп’ютера

Поп-арт ілюстрація, що показує основні компоненти комп’ютера, включно з процесором (CPU), оперативною пам’яттю (RAM) та сховищем даних.

Щоб краще зрозуміти, як працює програма, розгляньмо типову будову комп’ютера.

Зовнішні частини:

  • монітор (дисплей, display),

  • клавіатура (keyboard),

  • миша (mouse),

  • адаптер живлення (power adapter) — підключає ноутбук до електромережі.

Внутрішні частини:

  • процесор (CPU) — “мозок”, що виконує обчислення;

  • оперативна пам’ять (RAM) — тимчасове місце для даних;

  • накопичувач (HDD або SSD) — для зберігання файлів і програм;

  • материнська плата (motherboard) — зв’язує всі компоненти;

  • відеокарта (video card) — обробляє зображення;

  • блок живлення (power supply) — забезпечує компоненти настільного комп’ютера електроенергією;

  • додаткові модулі: Bluetooth, Wi-Fi, дисковод, тощо.

Деякі пристрої об’єднують усе в одному корпусі — наприклад, моноблок.

Що таке RAM, HDD, SSD, CPU — простими словами

  • RAM (Random Access Memory, оперативна пам’ять) — швидка, тимчасова пам’ять. Після вимкнення живлення всі дані зникають.

  • HDD (Hard Disk Drive, жорсткий диск) — повільний, але дешевий накопичувач на магнітних дисках. Інформація зберігається навіть без живлення.

  • SSD (Solid State Drive, твердотільний накопичувач) — швидкий, надійний і безшумний, зберігає інформацію без живлення. Значно швидший за HDD.

  • CPU (Central Processing Unit, центральний процесор) — основний обчислювальний елемент комп’ютера.

💡 Якщо один комп’ютер завантажується кілька хвилин, а інший — кілька секунд, імовірно, перший має HDD, а другий — SSD.

З погляду програми: як розділити складові

Для програмування важливо поділити частини комп’ютера так:

  • ввід (input): клавіатура, мишка, сенсорний екран;

  • вивід (output): дисплей, звук, принтер;

  • пам’ять для виконання програми (memory): RAM;

  • пам’ять для зберігання (storage): HDD або SSD;

  • обчислювальний блок (computing): процесор (CPU).

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

Поп-арт ілюстрація жінки, яка сидить за комп’ютером і читає програму на екрані.

Програма — це набір інструкцій для комп’ютера. Якщо ми формулюємо послідовність дій, які комп’ютер може виконати, ми створюємо програму.

Наприклад, уявімо, що я хочу створити програму, яка:

  • запитає у вас ім’я;

  • запитає дату народження;

  • виведе на екран повідомлення на кшталт:

Привіт, <ім'я>. Я знаю, що тобі зараз <X> років.

де <ім'я> — це те, що ви ввели, а <X> — обчислений вік на основі дати народження.

Це програма? Так! Це вже програма — нехай і у словесному вигляді. Наступний крок — записати ці інструкції мовою, яку розуміє комп’ютер.

1.4 Що таке мова програмування

Мова програмування — це система, за допомогою якої програміст записує інструкції для комп’ютера. Перші мови програмування були досить складними й вимогливими. Щоб написати навіть просту програму, потрібно було дотримуватися суворих правил і бути дуже уважним, адже помилитися було легко.

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

1.5 Python — сучасна мова для старту

Поп-арт ілюстрація з тюльпанами, велосипедом і написом «Hello, World!», що символізує походження мови програмування Python у Нідерландах.

У 1991 році голландський програміст Гвідо ван Россум створив мову програмування Python (робота почалася наприкінці 1980-х, а перша публічна версія з’явилася у 1991 році).

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

Де використовується Python

Багатоцільова — означає, що Python застосовується у найрізноманітніших сферах:

  • у навчанні (особливо як перша мова для новачків),

  • у веброзробці,

  • для написання скриптів (автоматизації рутинних дій),

  • у науці — від статистики до машинного навчання,

  • у робототехніці та розробці ігор.

Чому саме Python — у цій книжці

Ми обрали Python не тому, що це єдина мова програмування. А тому, що він — найкращий варіант для початку.

Python:

  • простий для першого знайомства з кодом;

  • зручний і зрозумілий для навчання;

  • широко використовується у реальному світі — від сайтів до штучного інтелекту.

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

У сучасному світі існує багато мов програмування, кожна має свої особливості й сфери застосування:

  • Java / Kotlin — для Android-застосунків;

  • Swift — для iOS;

  • JavaScript / TypeScript — для веброзробки;

  • C++ / Rust — для системного програмування, розробки драйверів, ігор і програм для мікроконтролерів.

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

👉 Вивчивши їх на Python, ви зможете швидко опанувати будь-яку іншу мову. Знання залишаються — змінюється лише синтаксис.

Про версії Python

Ми працюватимемо з Python 3 — третьою гілкою мови, яка з’явилася у 2008 році. Усі приклади в книжці сумісні з Python версії 3.10 або новішими (позначається як 3.10+).

Хоча мову створили ще в 1991 році, вона постійно розвивалася. У кожній мові програмування є свої версії. Наприклад, Python 2.7 підтримували до 2020 року, але сучасні програми створюються для Python 3.10 або новіших.

⚠️ Звертайте увагу на версію Python, коли читаєте приклади в інтернеті. Старі приклади можуть бути написані під Python 2 і вже не працювати.

1.6 Як написати програму

Поп-арт ілюстрація хлопчика, який думає про те, як написати програму, з знаками питання над його головою.

Ми вже знаємо: програма — це набір інструкцій для комп’ютера. Зазвичай інструкції програми записують у файл із програмним кодом, який потім можна запустити на виконання. Але в деяких мовах програмування, зокрема Python, окремі інструкції можна виконувати й без створення файлу — наприклад, в інтерактивному режимі. Детальніше ми розглянемо цю можливість у розділі 5 “Термінал і консоль”.

Файли з кодом: що таке розширення

Кожна мова має свої формати файлів. Саме розширення вказує комп’ютеру, як обробляти файл.

Наприклад:

  • *.exe — програма для Windows,

  • *.apk — програма для Android,

  • *.py — програма, написана на Python.

*.py означає: будь-яке ім’я файлу з розширенням .py. Наприклад, файл hello_world.py — це текстовий файл із Python-кодом.

Як створити Python-файл

Ось найпростіші способи:

  • Створити звичайний текстовий файл (наприклад, hello.txt) і змінити його розширення на .py.

  • Використати редактор коду, який сам створить потрібний файл.

⚠️ Порада: іноді в системі не видно розширення файлів. Пошукайте, як увімкнути їх відображення (це залежить від Windows, macOS чи Linux).

Редактор коду або IDE

Поп-арт ілюстрація програміста, який розглядає код на екрані комп’ютера через лупу, де видно маленьку помилку та напис ‘Found your little bug’.

Щоб писати програми зручно, краще використовувати спеціальні інструменти — редактори коду або IDE (Integrated Development Environment — інтегроване середовище розробки).

IDE допомагає:

  • підсвічувати синтаксис;

  • показувати помилки;

  • запускати й зупиняти код;

  • переглядати змінні під час виконання (debug);

  • форматувати код;

  • іноді — навіть спілкуватися з іншими програмістами.

Популярні редактори для Python

  • PyCharm — потужна IDE, створена саме для Python.

  • Visual Studio Code (VS Code) — підтримує багато мов, гнучко налаштовується, потребує встановлення Python-розширення.

  • Sublime Text — легкий і швидкий редактор, який можна розширювати.

Навіть простий блокнот (Notepad) можна використати — але спеціалізовані редактори значно зручніші.

Що потрібно для запуску програми

Просто створити файл — недостатньо. Також потрібно мати встановлений сам Python — тобто програму, яка вміє зчитувати файли з розширенням .py та виконувати їхній код.

Коли ви встановлюєте Python, насправді встановлюється цілий набір інструментів:

  • інтерпретатор — програма, яка виконує інструкції з .py файлів;

  • стандартна бібліотека — великий набір корисних вбудованих модулів;

  • інструменти типу pip — менеджер для встановлення додаткових пакетів.

Отже, для запуску програм на Python вам потрібно:

  • Встановити Python;

  • Мати редактор коду (будь-який);

  • Створити .py файл із кодом;

  • Запустити файл через Python.

А якщо без встановлення?

У цій книжці (тобто до теми функцій включно) вам не потрібно нічого встановлювати. Достатньо мати комп’ютер із доступом до інтернету — більшість прикладів можна запускати в онлайн-редакторах.

Якщо ж ви хочете зберігати код — копіюйте його з книги у .py файл або використовуйте редактор коду.

👉 Процес встановлення Python, редактора та запуску програми на комп’ютері називається налаштуванням локального середовища (setting up a local environment). Цей процес не розглядається в межах цієї книжки, але ви легко знайдете інструкції онлайн.

Онлайн-інструменти для запуску Python-коду

Спробуйте один із цих онлайн-інструментів:

Ще один варіант — Google Colab (https://colab.research.google.com/), браузерне середовище для роботи з блокнотами, яке дає змогу писати й запускати код Python в окремих комірках. Воно особливо популярне для аналізу даних і машинного навчання.

💡 Ви також можете пошукати інші онлайн IDE — оберіть ту, яка вам найбільше підходить.

1.7 Навіщо програмувати

Це дуже слушне запитання. Справді — навіщо взагалі програмувати?

Я б виділив кілька основних причин:

  • Монотонні та повторювані дії краще доручити комп’ютеру.
    Людина в цей час може займатись чимось більш творчим або різноплановим.

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

  • Комп’ютер рахує швидше, обробляє більше даних, працює надійніше.

  • Йому не потрібно відпочивати — він не втомлюється і може працювати цілодобово.

  • Він здатен виконувати кілька завдань одночасно.

  • Хтось має цим керувати.
    Потрібні люди, які пишуть програми, налаштовують системи, знаходять і виправляють помилки, вдосконалюють процеси. І тут програміст (або людина, близька до сфери програмування) виходить на перший план.

Отже, програмування — це інструмент для автоматизації, прискорення та покращення різних процесів. Мета — передати рутинні завдання комп’ютеру, а самому зосередитися на чомусь більш важливому або цікавому.

Програмування дає великі можливості — але щоб ними скористатися, потрібні певні навички. Саме про них ми і поговоримо в наступному розділі.

1.8 Самостійна робота

Спробуйте відповісти на ці запитання — вони допоможуть краще засвоїти матеріал із розділу.

Про комп’ютери:

  1. Що таке комп’ютер? Які пристрої можна вважати комп’ютерами?

  2. Чи можна назвати мікрохвильову піч або смартфон комп’ютером? Чому так або ні?

  3. Які основні складові має комп’ютер?

Про пам’ять і зберігання:

  1. Яка різниця між оперативною пам’яттю (RAM) і постійною пам’яттю (SSD або HDD)?

  2. У якому модулі пам’яті зберігаються програми на комп’ютері?

  3. У якому модулі пам’яті виконуються програми?

Про програми та мови:

  1. Що таке програма? Як її можна описати простими словами?

  2. Що таке мова програмування?

  3. Яке розширення мають файли програм на Python?

Про Python:

  1. Чому Python вважається хорошим вибором для початківців?

  2. Яку версію Python рекомендується використовувати?

Для допитливих

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

1.9 Для допитливих: як комп’ютер виконує код

Код, написаний мовою програмування, процесор не може виконати безпосередньо. Спочатку його потрібно перетворити на машинні інструкції. Подивімося, як це відбувається на прикладі мов C і C++.

Однією з найвідоміших мов стала C, створена у 1970-х роках. Згодом на її основі з’явилася C++ — як розширення. Ці мови залишаються популярними досі, тому що:

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

  • дають гнучкий контроль над пам’яттю — програміст сам визначає, як і коли виділяється чи очищується пам’ять;

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

Що таке компіляція?

Компіляція — це процес перетворення коду, який написав програміст, в іншу форму коду — наприклад, у машинний або проміжний код, придатний для подальшого виконання.

Що таке машинний код?

Це найнижчий рівень коду, яким “розмовляє” комп’ютер. Людині його читати складно, але комп’ютер виконує саме ці інструкції безпосередньо, без додаткових перекладачів.

Приклад машинного коду:

10110000 01100001

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

1.10 Для допитливих: низький і високий рівні мов

Щоб краще зрозуміти різницю між мовами програмування низького та високого рівня, уявімо таку ситуацію:

Ви — батько або мати, живете в квартирі на п’ятому поверсі й просите свого сина піти погратися у м’яча на дитячий майданчик. Тобто ви даєте йому інструкції — як програміст дає інструкції комп’ютеру.

У мові низького рівня така інструкція виглядала б дуже детально:

Взяти м’яча → взяти ключі → відкрити двері → зачинити двері на ключ → викликати ліфт → дочекатися ліфта → зайти в ліфт → натиснути кнопку 1 → вийти з ліфта → відчинити двері в під’їзді → зачинити їх → пройти між будинками → дістатися до майданчика.

Це довгий список дій, але кожна з них максимально точна. Ви контролюєте кожен крок.

У мові високого рівня все виглядає значно простіше: взяти м’яча → зачинити двері → скористатися ліфтом → піти на дитячий майданчик.

Це вже абстрактніші інструкції. Їх менше, але вони охоплюють більше дій “всередині”.

Що це означає?

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

Це зручно і зменшує ймовірність помилок — бо менше інструкцій = менше місць, де можна схибити.

Це можливо тому, що в інструкціях високого рівня вже “вшиті” дрібні кроки. Наприклад, команда “скористатися ліфтом” може автоматично означати: викликати ліфт → натиснути потрібну кнопку → вийти на потрібному поверсі.

Але не все так просто…

Мови високого рівня не завжди дають повний контроль. Уявімо, що вам дуже важливо, щоб син зачинив двері саме на ключ, а не просто причинив. Але команда “зачинити двері” може не передбачати вибору способу. Якщо вона не дозволяє уточнити цю деталь, ви не зможете змінити її поведінку.

Або уявімо, що ви хочете, щоб він ішов найкоротшим шляхом між будинками, а не обхідною доріжкою. Але інструкція “піти на майданчик” може автоматично вибрати довший шлях, оскільки вона сама визначає, як саме це зробити.

Так само мова високого рівня іноді приховує певні можливості й не дає програмісту керувати ними безпосередньо. Щоб отримати такий контроль, іноді доводиться звертатися до можливостей нижчого рівня, а іноді він узагалі недоступний.

Підсумок

Мови нижчого рівня дають більше прямого контролю, але потребують уваги до технічних деталей.

Мови високого рівня приховують багато таких деталей і дозволяють більше зосередитися на логіці програми.

І кожна має свої переваги — залежно від задачі.

Тепер подивімося, як мови різних рівнів виглядають у справжньому програмуванні.

1.11 Для допитливих: шкала рівнів абстракції

Процесор зрештою виконує не команди Python або C++, а машинні інструкції. Тому мови програмування можна умовно розташувати за шкалою рівнів абстракції — залежно від того, наскільки вони близькі до машинного коду або до зрозумілих людині команд:

  1. Машинний код — інструкції з нулів та одиниць, які виконує процесор. Приклад: 10110000 01100001

  2. Асемблер (Assembly) — символьне представлення машинного коду, дуже близьке до заліза. Приклад: MOV AL, 97

  3. Мови, ближчі до нижчого рівня, — як-от C. Вони дають програмісту прямий контроль над пам’яттю та апаратним забезпеченням.

  4. Мови високого рівня — як-от Python, Java, JavaScript. Вони абстрагують деталі роботи комп’ютера, роблячи програмування простішим і зрозумілішим.

Ця шкала також допомагає умовно простежити еволюцію мов програмування. Спочатку програми писалися в машинному коді. Згодом з’явився асемблер — спроба зробити машинний код трохи зрозумілішим для людини: замість чисел з’явилися команди. Пізніше почали з’являтися мови високого рівня, які значно спростили розробку програм. Водночас розвиток мов відбувався в різних напрямках, тому їхній рівень абстракції не завжди пов’язаний із часом появи.

У деяких випадках (наприклад, під час програмування для мікроконтролерів) особливо важливий прямий контроль над пам’яттю та обладнанням. У таких задачах частіше використовують мови нижчого рівня — як-от C.

Чим вищий рівень мови, тим більше технічних деталей вона приховує від програміста. Завдяки цьому можна писати зрозуміліший код і більше уваги приділяти логіці програми. Мови, ближчі до нижчого рівня, натомість дають більше прямого контролю над пам’яттю та обладнанням.

👉 Примітка: Розмежування на рівні — умовне. Деякі мови, як C++, мають як низькорівневі можливості, так і високорівневі абстракції.

1.12 Для допитливих: компіляція та інтерпретація

У підрозділі 1.9 ми побачили, що програми мовами C і C++ зазвичай компілюються: перед запуском написаний програмістом код перетворюється на машинний код. Але компіляція — не єдиний спосіб виконання програм.

Python працює інакше: для запуску його коду використовується інтерпретатор. Тому програміст зазвичай може змінити файл і відразу запустити його знову, не виконуючи окремий етап компіляції вручну.

👉 Примітка: Насправді Python теж виконується не зовсім “рядок за рядком”, а спочатку перетворюється у проміжну форму (байт-код), яку виконує спеціальна програма — інтерпретатор Python. Але для початку нам важливо розуміти саме загальну ідею: інтерпретатор виконує програму одразу, без попереднього компілювання в машинний код.

Порівняймо:

  • у Python: змінив код → зберіг → запустив → одразу бачиш результат;

  • у C++: змінив код → скомпілював (тобто перетворив на машинний код) → запустив → побачив результат.

А як щодо швидкості?

Програми, скомпільовані в машинний код, зазвичай виконуються швидше за звичайний Python-код. Саме тому C і C++ часто використовують там, де особливо важливі швидкість або прямий контроль над обладнанням.

Проте швидкість виконання — не єдиний критерій. Python дозволяє швидше писати, перевіряти й змінювати програми. Крім того, багато популярних бібліотек Python виконують складні обчислення за допомогою оптимізованого коду, написаного мовами C або C++.

Наприклад, програміст може викликати функцію Python для обробки зображення, а основну роботу “під капотом” виконає швидкий код іншою мовою.

Отже, не існує мови, яка найкраще підходить для всіх завдань. Мови нижчого рівня дають більше контролю, а мови високого рівня допомагають швидше створювати зрозумілі програми. Для навчання ми використовуватимемо Python, адже він дозволяє зосередитися на основах програмування, не занурюючись одразу в технічні деталі роботи комп’ютера.