Все, що ви маєте знати про Python. Які в нього недоліки, а які переваги?
Мова програмування Python від початку мала бути лаконічна й проста. Більшість коду легко зрозуміти навіть повним початківцям, які хоч трохи знають англійську мову. Його можна запускати практично будь-де, якщо є відповідне програмне забезпечення. Прочитайте, які в неї переваги, недоліки й як виглядає вивчання мови Python порівняно з іншими мовами програмування.
Python уперше з’явилася на світ Божий на початку 90-х років. Гвідо ван Россум почав роботу над цією мовою з думкою, що його витвір буде нащадком мови АВС, що розвивалася в 80-х роках.
Сама назва, як може видатися, не походить від змії, а від популярного комедійного серіалу, що транслювався BBC у сімдесятих роках, — «Летючий цирк Монті Пайтона». Ван Россум був палким фанатом цієї продукції й постановив, що його мова має мати коротку, унікальну й дещо таємничу назву, звідси таке рішення. Однак, як жартівливо підкреслюють, не треба любити британського гумору, аби полюбити Python.
Зміст
- Перші версії мов Python і BeOpen
- Python. Переваги й недоліки
- Переваги
- Недоліки
- Як стати розробником мови програмування Python?
- Вивчення мови програмування Python у порівнянні з іншими мовами
Spis treści
Перші версії мов Python і BeOpen
Своє існування мова програмування Python розпочала з версії 0.9.0 у лютому 1991 року. Вже тоді вона обслуговувала винятки, функції й базові типи даних, але володіла також механізмом обміну функціональністю між класами і т. д. З цього моменту мова почала розвиватися.
Версія 1.0 остаточно вийшла в січні 1994 року. Також у цьому році з’явився comp.lang.python, головний дискусійний форум спільноти, який вважається важливою ланкою в розвитку бази користувачів мовою Python. Версія Python 1.2 була останньою, виданою CWI (Центр математики й інформатики в Амстердамі). З 1995 року творець мови продовжував роботу над Python у Корпорації з проведення національних науково-дослідних робіт (Corporation for National Research Initiatives (CNRI)).
Там з’явилося декілька версій мови, до 1.6 включно. І саме від неї пішла вимога користувачів надати таку версію мови, яку можна було б використовувати з програмним забезпеченням з ліцензією BPL. Таким чином була створена версія 1.6.1, яка опиралася на кількох дрібних змінах та ліцензії, завдяки якій пізніші версії мови могли відповідати бажаній ліцензії.
У 2000 році команда ван Россума перейшла в BeOpen.com, де з’явився BeOpen PythonLabs. В результаті її розробок видано Python 2.0, однак невдовзі Гвідо разом зі своїми людьми перейшов до Digital Creations. Саме тоді, після видання версії 2.1, все владналося. Вся інтелектуальна власність проєкту, додана з цього моменту, є власністю Python Software Foundation (PSF).
Python. Переваги й недоліки
Які основні переваги й недоліки мови програмування Python? Їх перелічує Томаш Качмарек, головний інженер-програміст в Egnyte:
Переваги
- Досить сучасний мовний синтаксис і можливість використання різноманітних парадигм програмування (об’єктно-орієнтована, функціональна, реактивна);
- Дружнє ком’юніті, велика кількість відповідей на запитання на StackOverflow;
- Python йде в пакеті «з батареями», як говорять пайтоністи, тобто з дуже великою бібліотекою стандартних пакетів (не треба їх додатково інсталювати, щоб створювати навіть досить складні проєкти) та ще більшим списком пакетів Open Source, доступних в публічних репозиторіях (для легкого встановлення). У тому числі потужні пакети для обробки зображення, створення графіків, статистичного аналізу даних, мережевої комунікації, штучного інтелекту (особливо Deep Learning) та Machine Learning, опрацювання натуральної мови, взаємодії з базами даних, створення вебдодатків, витягування даних з вебсайтів, графічних алгоритмів;
- Незалежність від платформи — програми в Python працюють здебільшого на кожній платформі, для якої доступний інтерпретатор Python. Вистачає раз написати й можна запускати на майже кожній операційній системі;
- Python є чудовою мовою програмування для прототипування, тобто швидкого написання пробних версій додатка, які мають перевірити підхід або довести, що якась концепція спрацює. А це завдяки стислому й багатому синтаксису, вищепереліченій насиченості пакетів і мінімальним вимогам для початку створення додатка;
- Величезна кількість матеріалів у мережі, чудова документація для великої кількості стандартних пакетів;
- Керована пам’ять — інтерпретатор Python сам звільняє пам’ять, виділену програмі, але яка вже не використовується. Це полегшує продумування програми, скорочує код і унеможливлює допускання помилок, пов’язаних із передчасним звільненням ще потрібної пам’яті, які часто з’являються в програмах, написаних, наприклад, мовами C або C++.
Недоліки
- Складна система публікування власних пакетів Open Source, особливо, якщо використовують бібліотеки в С — Python, на жаль, стає тут жертвою власного успіху й успадковує труднощі, пов’язані з побудовою нативного коду (наприклад, мовою С) на конкретну системно-апаратну платформу;
- Система типізації — це одночасно перевага й недолік. Для програмістів-початківців певним шоком може бути те, що в програмі не треба подавати типи для змінних. Python розпізнає їх сам й відповідно перевіряє в ході діяльності програми, чи ми не пробуємо виконати на даних недозволені операції (так звана сильна система типізації). Однак це відбувається лише на етапі виконання конкретного шматка коду, а тому про потенційну помилку дізнаємося лише після запуску. Це зумовлює те, що, створюючи програми на Python, більшу увагу слід приділити їхньому тестуванню. На відміну від компільованих мов програмування (C, C++, Java, C# та багато інших), компілятор не допоможе нам викрити певні помилки, тому ми повинні самі подбати про відповідне покриття коду тестуваннями. Відсутність явної типізації також є певного роду ускладненням, коли ми розширюємо велику систему. Тоді явна типізація є важливою допомогою для програміста, який читає код, написаний кимось іншим. Тому також нові версії мови Python мають опційну можливість опису функцій і класів через типи, що є рекомендованою практикою у випадку більших додатків;
- Зважаючи на широку екосистему й багатство залежностей, певні виклики дає контейнеризація додатка в Python, а точніше — управління залежностями й будування образів додатка, які мали б використовуватися в сконтейнеризованому середовищі (наприклад, докер). Це найбільш можливо, але треба уважно контролювати особливо пакети, які використовують нативні бібліотеки.
Як стати розробником мови програмування Python?
Що треба зробити для того, щоб стати розробником мови програмування Python? Якими матеріалами варто користуватися?
– Кількість матеріалів у мережі у вигляді як документації, так і туторіалів, відеоматеріалів для мови Python величезна (навіть тих безкоштовних), але більшою проблемою буде знахідка тих найцінніших, аніж їхня відсутність, – вважає Томаш Качмарек, головний інженер-програміст у Egnyte.
А, отже, які матеріали він рекомендує? – Якість документації часто є дуже хороша й варто користуватися нею, що доступна на сторінці python.org. Точно знадобляться знання англійської мови, але це загальновідома правда. Окрім цього, варто скористатися книжками, що презентують основи мови програмування Python, яких є багато на ринку. Однак має найбільший сенс практичний підхід: спроба реалізації конкретного невеликого проєкту, який поступово, разом з пізнаванням екосистеми Python і самої мови, можна буде розвивати й перестворювати. Багато пайтонівських пакетів мають туторіали, організовані власне таким способом, – від невеликої програми, яка реалізовує просте завдання, до великого додатка, який використовує багато можливостей даного пакету й самої мови, – радить Качмарек.
Вивчення мови програмування Python у порівнянні з іншими мовами
Вивчення мови програмування Python: складне чи просте? Скільки часу потрібно присвятити, щоб поглибити знання основ?
– У порівнянні з іншими мовами, вивчення мови програмування Python простіше, часто вона відразу біля мови Scratch є мовою, яку вибирають для вивчання програмування. Опанування основ вимагає від кількох годин до кільканадцяти днів, залежно від темпу вивчання, – вважає Томаш Качмарек.
І подає кілька прикладів:
- Порівняно з іншими скриптовими мовами (Perl/bash) синтаксис Python легше осягнути й там менше винятків чи несподіванок, які вимагають запам’ятовування.
- Порівняно з іншими веб-мовами (PHP, JS) — опанування створення мережевих додатків є також складним, хоча для більш просунутих застосунків Python, здається, забезпечує більшу гнучкість у тому сенсі, що Python можна використовувати для створення мережевих додатків, які також є, наприклад, програмами, що використовують машинне навчання або великі бібліотеки статистичного аналізу даних у Python. У інших мовах такого типу бібліотек менше, що може випливати з того, що основним мотором розвитку цих пакетів є наукове середовище, котре з легкістю прийняло Python.
- Порівняно з іншими компільованими мовами вищого рівня (Java, C#), Python дає легший старт для дуже коротких і простих програм. Те, що приходить з «батареями», також придатне для менших додатків або навіть додатків середньої складності. Для великих систем починає мати більше значення екосистема (доступність пакетів Open Source і комерційних) і тут Python не відстає, але зате випливає специфіка цих пакетів і певна спрямованість ком’юніті даної мови на різні типи додатків. Наприклад: точно легше створювати додаток спеціально для платформи Windows на C#, ніж на Python.
- Порівняно з компільованими мовами нижчого рівня (C, C++), з точки зору бачення програміста у багатьох випадках полегшенням у Python може бути керування пам’яттю. У С треба алокувати й звільнювати пам’ять, що використовується програмою, тоді як інтерпретатор Python робить це сам. З іншого боку, якщо виникає потреба міцної оптимізації коду, Python дає менше шансів, ніж ті мови, — між іншим, з тієї самої причини. Однак важливою ознакою Python є те, що ця мова уможливлює легше використання наявних бібліотек С. Існує також багато готових пакетів для Python — своєрідних «обгортань» навколо бібліотек на C, — які дають максимальну ефективність, але також полегшують програмування на Python.
Основне фото походить з unsplash.com.
Запрошуємо до обговорення