|
|
Програмування мовою Python: основи та практика Електронний посібник |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ТЕМА 1. ЗНАЙОМСТВО З
МОВОЮ ПРОГРАМУВАННЯ PYTHON |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Стежки створення мови Python ведуть від Гвідо
ван Россума, програміста з Нідерландів.
У грудні 1989 року Гвідо розпочав свій власний «хобі-проєкт» Python, використовуючи певні аспекти мови ABC як основу. Фактично, Python створювався, щоб виправити недоліки, виявлені в процесі
роботи над ABC. Офіційно датою створення
мови Python вважають 20 лютого 1991 року. Впродовж тривалого
періоду часу Гвідо ван Россум не лише був творцем
мови, але і виконував роль «Доброзичливого
диктатора на все життя» (Benevolent
Dictator For Life), хто мав право приймати кінцеві
рішення щодо мови. Але 12 липня 2018 року він оголосив про своє відмовлення
від цієї посади. Щодо назви мови, сам Гвідо ван Россум зазначає,
що вона виникла через британське комедійне шоу «Літаючий цирк Монті Пайтона» (Monty Python’s Flying Circus), хоча подекуди її вимовляють
як «Пітон». Мова почала швидко розвиватися,
оскільки з’явилася велика кількість людей, які були зацікавлені та розумілися
на розвитку мов програмування. Спочатку це була досить проста мова, невеликий
інтерпретатор, незначна кількість функцій, об’єктно-орієнтованого
програмування не було, але дуже швидко все це з’явилося та донині продовжується
її розвиток та виходять нові версії, де кожна наступна має декілька суттєвих
відмінностей від попередньої. Python було створено під впливом різних мов
програмування.
Python є у двох
актуальних версіях: Python 2.x (остання версія ‒ 2.7) та Python 3.x
(остання версія ‒ 3.8). Підтримка гілки 2.x завершилася у січні 2020
року, тому для нових проєктів
рекомендовано використовувати Python 3.x.
Мову Python
можна охарактеризувати як
інтерпретовану високорівневу
мову програмування загального призначення. У різній
літературі можна знайти набагато більше складових мови, які вказують під час
її опису, тому просто сформулюймо її особливості.
Читання хорошої програми
мовою Python
дуже нагадує читання англійського тексту,
хоча і досить строгого. Така псевдокодова
природа мови Python
є однією з її найсильніших сторін. Python
надає змогу програмісту зосередитися на розв’язуванні
задачі, а не на самій мові. Ядро мови без додаткових модулів досить просте і
мінімальне ‒ це надає
мові простоти та логічності, що відповідно спрощує її вивчення.
Мовою Python надзвичайно
легко почати програмувати.
Вона має виключно простий синтаксис. Досить часто в закладах освіти обирають Python як першу мову
програмування для своїх
студентів.
Простіше кажучи, ви маєте право
вільно використовувати копії цього програмного забезпечення, переглядати його
вихідні тексти, вносити зміни, а також використовувати його частини в своїх
програмах. Python було створено і постійно поліпшується співтовариством, яке просто хоче
зробити цю мову кращою.
Машина (комп’ютер, процесор) розуміє лише
певний обмежений та примітивний набір спеціальних команд. Коли пишеться код
деякою мовою, по суті, вказуються інструкції, які має виконати машина.
Залежно від того, які ці інструкції, мови і поділяються на високорівневі та
низькорівневі. Якщо код пишеться
в машинних інструкціях
(командах), то це низькорівневі
мови. Якщо ж додатково необхідне певне програмне
забезпечення, яке перетворюватиме код, написаний мовою
програмування, в машинні інструкції (команди), то це високорівнева мова програмування. Програмне
забезпечення, за яким відбувається вказане переведення, називають
компіляторами або інтерпретаторами.
Мова призначена для розв’язування
досить широкого спектра задач.
Завдяки своїй відкритій природі, Python
було портовано на багато платформ (змінено так, щоб працювати на різних
пристроях та різних операційних системах). Один і той самий код
запускатиметься на різних платформах без будь-яких змін за умови, що в коді
немає системно-залежних функції.
Як зазначено
раніше, для виконання програми на комп’ютері необхідно команди мови
програмування перетворити на команди, які здатен виконувати процесор
комп’ютера. Є два типи таких перетворень – інтерпретація і компіляція, які
здійснюють спеціальні програми-транслятори. Програма, написана компільованою мовою програмування, як наприклад, Pascal або C++, аналізується і за відсутності
помилок перетворюється за допомогою компілятора на мову, зрозумілу комп’ютеру
(бінарний код), після чого записується в оперативну пам’ять комп’ютера або на
диск. Утворений на диску файл є виконуваним файлом і
може бути виконаний засобами операційної системи без повторного використання
транслятора. У процесі інтерпретації транслятор
аналізує кожну команду програми окремо і, якщо команда не містить
синтаксичних помилок, перетворює її на машинний код і відразу виконує. Проте в Python цей процес дещо
складніший. Після запуску
програми Python
аналізує кожну команду програми і, якщо команда не містить синтаксичних помилок,
перетворює її на байт-код (машино-незалежний код низького рівня). Далі байт-код передається віртуальній машині Python, яка
і виконує інструкції
байт-коду, перетворюючи їх на машинний код. Коли байт-код сформовано, його можна
виконати на різних інтерпретаторах, що підтримують цей байт-код.
В основу Python
покладено декілька
парадигм програмування: об’єктно- орієнтовна,
імперативна, функціональна (функційна), структурна. Проте
досить часто про Python
говорять, зокрема, як про
об’єктно-орієнтовну мову програмування. В об’єктно-орієнтованих мовах
програмування програми будуються на основі об’єктів, які об’єднують дані і
функціонал. Об’єктів в мові
Python багато,
можна навіть сказати, що все є об’єкт (це не дуже коректно, але допустимо).
Якщо потрібно, щоб деяка критична
частина програми працювала дуже швидко, або є необхідність приховати частину алгоритму,
можна написати цю частину програми мовою C
або C++, а потім
викликати її з програми, написаною мовою Python.
Код Python
можна легко вбудовувати в
програми на Java,
C/C++, щоб
надати користувачам змогу написання власних сценаріїв. Взаємодія Python-додатків з іншими системами можлива також за допомогою CORBA (Common
Object Request Broker Architecture), XML-RPC (Extensible Markup Language Remote Procedure
Call), SOAP (Simple Object Access
Protocol), COM (Component Object
Model).
Хоча мова Python є досить швидкою для більшості застосунків, проте її швидкість може виявитися
не завжди достатньою. Якщо програма проводить більшу частину
часу за обчисленнями («обмежена
швидкодією процесора»
(CPU-bound)), то мови С, С++ або Java впораються із завданням набагато краще, ніж Python. Але не завжди. Іноді
більш якісний алгоритм (покрокове рішення) для Python перевершує
за швидкістю неефективний
алгоритм для С. Більш
висока швидкість розробки для Python
дає більше часу для
експериментів над альтернативними рішеннями.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||