Не всі погоджуються, що Python є найкращою або найпростішою мовою для програмування роботів. Багато хто твердо вважає C++ найефективнішим, а прихильники JavaScript стверджують, що вони створюють найпростіші, але елегантні програми.
Зараз, коли Python став більш популярним, ніж будь-коли, завдяки його обширній стандартній бібліотеці та здатності підтримувати численні парадигми програмування, дивно, що ця дискусія взагалі триває.
Факт у тому, що ми повинні задуматися, в тандемі Python + робототехніка має бути щось, що нам, можливо, не зрозуміло. Поки що.
Тож Superprof має на меті розглянути проблеми і переваги принаймні часткового програмування вашого робота на Python.
Розуміння Python
Python існує вже 30 років, але він довго залишався ідеєю, яка розроблялася впродовж кількох років. Він заснований на ABC, мові програмування загального призначення, яка виникла в CWI, теоретичному дослідницькому центрі з інформатики та математики у Нідерландах.
Гвідо ван Россум є батьком і творцем Python. Він відомий як Доброзичливий пожиттєвий диктатор (це такий напівгумористичний термін, що вживається стосовно голови чи засновника проєкту, який зберігає за собою право ухвалювати остаточні рішення), хоча у 2018 році він відмовився від одноосібної відповідальності за еволюцію Python. Піддавшися химерному пориву, він назвав свою мову програмування на честь Монті Пайтона, а не на честь рептилій, що живуть десь у тропіках.
Відповідно до ідеї, що використовувати Python має бути перш за все цікаво і весело, багато його термінів та посилань містять грайливі назви, всупереч кодам, які звучать загадково. Наприклад, замість звичайних програмних заповнювачів foo (певна функція) і bar (бар’єр, метод синхронізації), Python розпізнає spam і eggs – це така затяжна «пушка» від Монті Пайтона.

Python – це не тільки веселощі, але й найчистіший та найпростіший спосіб читати і писати код. На відміну від багатьох комп’ютерних мов, Python не використовує фігурних дужок і не має численних винятків. Щоб зробити код більш читабельним, Python використовує пробільні відступи: збільшення вказує на новий блок, а зменшення відступу сигналізує про кінець блоку.
Це правило офсайду (інша назва цієї практики відступів) робить семантичну структуру програми візуально впізнаваною. Зауважте, що інші мови також мають відступ у своєму коді, але форматування в більшості випадків семантично не має значення.
Мови програмування звуться мовами не без причини
Як і будь-яка мова на планеті – з її унікальним словниковим запасом, граматичними правилами та певним порядком слів у реченні, щоб воно мало сенс чи емоційну забарвленість, – мови програмування мають правила, яких потрібно дотримуватися. Інакше програма не працюватиме взагалі або, у кращому випадку, може працювати, але не так, як передбачалося програмістами.
Що, якби ви могли скопіювати та вставити вже написані блоки мови туди, де вони вам потрібні, подібно до того, як хтось, хто вивчає мову, міг би копіпейстнути речення, котре він провів через Гугл-перекладач? За своєю суттю, це філософія роботи Python.
Замість того, щоб придумати складний набір тверджень і виразів – ван Россум був розчарований тим, скільки їх уже було, – він навмисне зробив так, щоб Python мав якомога компактнішу основну мову, одночасно створюючи велику стандартну бібліотеку для її доповнення.
Така простота використання в поєднанні з цікавим підходом до програмування робить Python улюбленим інструментом розробників-початківців. Його універсальність і проста структура роблять веб-розробку одним із основних застосувань цієї мови програмування.
Python за продуктивність?
Настільки широке використання Python у веб-розробці може бути підказкою, що він не дуже добре адаптований до швидкості та продуктивності.

Подивіться на робота – будь-якого, навіть на зображенні вище. Чи можете ви сказати, якою мовою він запрограмований? Ні, звичайно! Ми часто просто зачаровані тим, що ця машинерія може робити! Але головне питання в іншому: як робот усе це робить?
За посередництвом команд, звісно. І мова, якою написані ці команди, визначає все: від порядку процесів до того, як часто та швидко вони відбуваються.
Якщо у вас є якісь знання у робототехніці та програмуванні, ви, ймовірно, знаєте, що C++ є стандартною мовою програмування роботів.
Тим не менш, ніщо не говорить про те, що ви не можете писати деякі аспекти програмування роботів на Python, в той час як більшість із них написані на C++.
Якщо ви не женетесь за часовою складовою і ваш робот не має вражати швидкістю реакцій та виконання дій, ви можете написати всю програму на Python
А тепер уважно. Якщо ви це зробите, то обміняєте продуктивність на простоту та легкість у використанні, які Python може вам дозволити.
Дізнайтеся більше про python уроки у столиці.
Річ у тім, що незалежно від зовнішнього вигляду робота і від того, наскільки мляво чи реактивно він працює, на рівні програмування все має відбуватися за мілісекунди.
Скажімо, ви пишете в циклі керування серію інструкцій, які перетворюються на дію чи бездіяльність, яку виконає робот. Кожен цикл повинен виконуватися за 100 мілісекунд, часто швидше. Але сама природа Python стверджує, що він не підходить для швидкої роботи. Дійсно, залежно від використовуваного апаратного та програмного забезпечення, Python може працювати в 100 разів повільніше, ніж C++!
Пам’ятайте, що код Python насамперед призначений для автоматичного керування пам’яттю – так званого збирання сміття. Його мета полягає в тому, щоб спробувати відновити пам’ять, яка була виділена програмою, але не є посиланням у певному моменті операції.
Він добре працює як доповнення або разом із програмою робота — і може навіть покращити продуктивність пристрою, постійно звільняючи пам’ять. Але для функцій, які вимагають блискавичних рішень, програмування вашого робота на C++ було б набагато ефективнішим. Особливо, якщо ви говорите про роботів корпоративного рівня, наприклад про тих, що використовуються у виробництві, де продуктивність має значення.
Ваша черга висловлюватися: на вашу думку, Python краще підходить для програмування комп’ютерних ігор, ніж для робототехніки?
Чому просто не писати на С++?
Будь-який програміст-робототехнік може сказати, що цілком можливо запускати цілі роботизовані системи лише на C++, але у додавання прив’язки Python є свої переваги.
Python є мовою інтерпретації, тобто він перетворює інструкції в програмі на машинний код, а потім застосовує ці інструкції для виконання цієї частини програми. Перевага полягає в тому, що ви витрачатимете менше часу на компіляцію коду, що дозволить швидше тестувати та запускати програми.
Насправді Python — чудовий спосіб перевірити окремі частини вашої програми. Припустімо, ви стурбовані тим, як ваша програма керуватиме рухами вашого робота. Базового сценарію на Python було б достатньо, щоб перевірити лише цей аспект функцій вашого робота без необхідності вичищати код рядок за рядком, шукаючи помилки чи неточності.
Не кожен рядок коду уособлює життєво важливу або критичну функцію робота. Є фонові процеси, які не впливають на продуктивність або безпечну роботу робота; їх можна було б написати на Python.
Але для таких речей, як алгоритми планування руху та цикли керування, котрі мають вирішальне значення для вашої програми, використання Python – просто не найкращий шлях. І нам усім треба з цим змиритися.
Більше про уроки python за посиланням.
Експерти в цій галузі погоджуються, що в осяжному майбутньому неможливо обійти C++ як основну мову робототехніки, але вони також визнають, що Python може використовуватися в цій області. Просто не так часто і повно, як використовують Python у машинному навчанні.

Найкраще застосування Python у робототехніці
Наразі, сидячи із частинами роботу навколо, ви, можливо, думаєте: де ж я тут застосую Python?
Якщо ви створюєте робота просто для розваги чи набуття практичного досвіду — або якщо вам потрібно створити прототип як доказ концепції для вашого стартапу, – ви можете написати весь код на Python.
З іншого боку, якщо бос або компанія змушує вас працювати за розкладом та бюджетом, і керівництво надало вам чіткі стандарти продуктивності, які вони очікують від свого нового робота, ви можете обмежити використання Python роботою з усунення несправностей і тестування програми.
Було б гарною ідеєю прив’язати кілька модулів Python до запуску некритичних частин програми вашого робота або запрограмувати ваш графічний інтерфейс користувача (GUI) та інтерфейс прикладного програмування (API) на Python. Наразі це приблизно все, де можна застосувати Python.
Чи є у Python майбутнє в робототехніці, окрім тестування та забезпечення некритичних функцій?
Сфера штучного інтелекту (ШІ) широко відкрита та швидко розвивається; її можливості безмежні. А тепер найкращі новини: Python просто ідеально підходить для ШІ. Нумо, відпустіть свою уяву, зруйнуйте паркани буденності і просто відчуйте...
- розумні будинки, наповнені роботизованими приладами, які працюють на Python;
- роботи як супутники у сфері охорони здоров’я – уявіть, якби ми мали їх у нещодавніх пандемічних палатах!
- віртуальні помічники: роботи як чат-боти з будь-якої сфери, які можуть, наприклад, організовувати подорожі та бронювати готелі;
- роботи як дослідники космосу збирали б дані, не ризикуючи людськими життями;
- громадська безпека – ви бачили робота-собаку із Нью-Йорка?
- роботи в освіті: оцінювачі творів (робо-читачі) звільнять учителів та викладачів від багатогодинного читання та оцінювання кожного есе кожного учня чи студента.
Деякі з цих ідей уже існують у реалі – напевно, ви відвідували веб-сайти, котрі мали чат-ботів, щоб направляти вас і відповідати на найбільш поширені питання, чи не так?
Інші ідеї звучать трохи надумано та ірреалістично. Пам’ятайте, однак, лише 70 років тому Айзек Азімов завершив серію «Я, робот», і менше 20 років тому ці історії були зафільмовані.
Але де ми зараз на цій часовій стрічці? Безпілотні автомобілі знаходяться на стадії тестування, а кілька роботехнічних компаній пропонують на продаж роботів-компаньйонів. Інновації відбуваються швидше, ніж, мабуть, ми можемо їх відслідковувати... А Python добре підходить для керування всіма цими інтерфейсами користувача.
Тепер дізнайтеся, яку велику роль відіграє Python у науці про дані.