Урок 3. Языки программирования, используемые в робототехнике
Продолжаем курс «Ардуино для начинающих». Мы уже познакомились с платами Ардуино, подробно рассмотрели модель Arduino Uno во втором уроке, и сегодня затронем тему языков программирования, применяемых в робототехнике и электронике.
C++
Практически каждый производитель роботов создал собственный язык программирования, и это одна из существенных проблем промышленной робототехники. С некоторыми из них можно ознакомиться, изучая Паскаль. Тем не менее программисту всё равно приходится осваивать новый язык при каждой разработке нового робота.
Однако применительно к платам Ардуино и ряду аналогичных микроконтроллеров наибольшее распространение получил язык C++.
Из википедии: C++ (читается си-плюс-плюс) — компилируемый, статически типизированный язык программирования общего назначения.
Для Ардуино применяется язык, очень близкий к C++. Его основы мы разберём позднее, но если вы хотите познакомиться с ним уже сейчас — на сайте имеется справочник языка C++ Ардуино.
Следует отметить, что C++ используется для:
разработки программного обеспечения;
создания операционных систем;
создания различных программ;
создния драйверов устройств;
реализации приложений для встраиваемых систем, высокопроизводительных серверов, игр.
Этот язык нельзя назвать простым для начала изучения программирования в целом, однако если вы его освоите, то сможете применять практически для любых задач.
LISP
LISP — второй по возрасту язык программирования в мире (FORTRAN старше лишь на один год). Он не столь широко распространён, как другие языки из этого списка, тем не менее по-прежнему занимает важное место в программировании искусственного интеллекта. Отдельные компоненты ROS написаны на LISP, хотя для работы с ROS знание этого языка не требуется.
Hardware Discription Languages (HDLs)
Эти языки хорошо знакомы некоторым специалистам по робототехнике, так как применяются для программирования FPGA (программируемых логических интегральных схем).
FPGA позволяют создавать электронное оборудование без реального производства кремниевого чипа, что делает их более быстрой и доступной альтернативой для некоторых видов разработки. Важно знать об их существовании, поскольку они кардинально отличаются от остальных языков программирования.
Assembly
Assembly даёт возможность программировать на «уровне единиц и нулей». Это программирование на самом низком уровне (более или менее). В недавнем прошлом для большинства низкоуровневых электронных задач требовалось программирование именно на Assembly.
С распространением Arduino и подобных микроконтроллеров появилась возможность легко программировать на этом уровне с помощью C/C++, а значит, Assembly постепенно теряет свою необходимость для большинства робототехнических проектов.
MATLAB
MATLAB и его аналоги с открытым исходным кодом, такие как Octave, пользуются большой популярностью у инженеров-робототехников для анализа данных и разработки систем управления. Существует также широко востребованный Robotics Toolbox для MATLAB. Некоторые разработчики создали полноценные робототехнические системы, применяя исключительно MATLAB.
C# / .NET
C# — проприетарный язык программирования от Microsoft. Если вы планируете использовать эту платформу, вам, вероятно, придётся работать с C#.
При этом изучение C/C++ может оказаться более перспективным вариантом для долгосрочного развития навыков программирования.
Java
Многих опытных инженеров-электронщиков удивляет тот факт, что ряд программ по информатике преподаёт Java студентам в качестве первого языка программирования.
Java «скрывает» от программиста низкоуровневую работу с памятью, что делает программирование проще по сравнению, скажем, с C, но при этом программист хуже понимает, что именно выполняет его код.
Идея Java состоит в том, чтобы один и тот же код работал на различных машинах благодаря виртуальной машине Java. На практике это не всегда срабатывает и порой приводит к замедлению выполнения. Тем не менее Java довольно широко распространён в ряде направлений робототехники, и потому он может пригодиться.
Python
В последние годы наблюдается мощный всплеск популярности Python, особенно в сфере робототехники. Сейчас он чрезвычайно востребован, и я полагаю, что подготовлю отдельный курс по этому языку применительно к электронике и смежным областям.
Одной из вероятных причин такой популярности является то, что Python (наряду с C++) — это два ключевых языка программирования, используемых в ROS. Подобно Java, он является интерпретируемым. Однако в отличие от Java, основной упор сделан на простоту использования.
Python избавляет от многих рутинных задач, отнимающих время при программировании, таких как объявление и приведение типов переменных. Кроме того, доступно колоссальное количество бесплатных библиотек, что избавляет от необходимости «изобретать велосипед» при реализации базовых функций. А поскольку он поддерживает удобные привязки к коду на C/C++, критически важные по производительности части программы можно написать на этих языках, избежав потери быстродействия.
За последние годы такие инструменты, как ROS Industrial, стали предоставлять более стандартизированные решения для программистов. Однако если разработчик является техническим специалистом, ему, скорее всего, придётся работать с языком конкретного производителя.
В последующих уроках этого курса мы более подробно рассмотрим основы программирования плат Ардуино.