Логотип компании МТС
МТС

На чём программируют интернет вещей

Рассказываем, какие популярные и не очень языки программирования нужно знать, чтобы заниматься разработкой в IoT.

3953
Обложка поста На чём программируют интернет вещей

С каждым годом интернет вещей (Internet of Things, IoT) всё глубже проникает в нашу жизнь. Кофеварка будит ароматом кофе вместо будильника, лампочки в доме автоматически выключаются, когда все уходят на работу, а фитнес-браслеты следят за нашими активностью и самочувствием в течение дня.

Вы тоже можете принять участие в разработке таких полезных устройств — нужно только разобраться в архитектуре IoT и выбрать язык, на котором хотите программировать.

Что такое интернет вещей, и из чего он состоит

Интернет вещей — система, которая объединяет с помощью проводных и беспроводных сетей (Wi-Fi, Bluetooth и т. д.) разные устройства, подключённые к интернету.

IoT-устройства работают в режиме реального времени, собирая, анализируя и передавая данные в облако. Там программное обеспечение обрабатывает данные и оповещает пользователя или выполняет дальнейшие действия самостоятельно. Например, при повышении температуры в помещении включается кондиционер, а если кто-то открыл окно в доме в отсутствие хозяев, идёт сигнал на пункт полиции.

Архитектуру IoT обычно разделяют на несколько уровней:

  • датчики, собирающие данные (датчики пульса, температуры в помещении, движения и т. д.);
  • локальные шлюзы — устройства, позволяющие датчикам и облаку обмениваться данными;
  • граничные серверы, которые собирают всю информацию;
  • облачная инфраструктура. 

Компании, которые работают в сфере IoT, обычно занимаются созданием как самих устройств, так и программного обеспечения для всех уровней архитектуры. Каждый из уровней имеет свои особенности, поэтому при разработке интернета вещей используют разные языки программирования. 

Какие языки программирования востребованы в IoT

Каждый год компания Eclipse Foundation организует опрос IoT-разработчиков из разных стран и публикует исследование о трендах интернета вещей. В нём есть блок про языки программирования.

По итогам 2022 года:

  • в топ-3 языков для программирования микроконтроллеров и встраиваемых устройств вошли C, C++ и Python;
  • самыми популярными языками для создания программного обеспечения облачной инфраструктуры стали Java, C, C++, Python и JavaScript;
  • Java, Python, JavaScript и C заняли первые места в топе языков для программирования шлюзов и пограничных узлов. 

Таким образом у нас наметился список из языков программирования, которые чаще всего используют для IoT. Рассмотрим каждый из них подробнее.

Java

Самый популярный язык программирования в сфере IoT. Причина проста — один раз написав код на Java, вы можете быть уверены, что он будет стабильно работать на любом другом устройстве (от смартфона до одноплатного микрокомпьютера).

Всё это возможно благодаря виртуальной машине Java (JVM), которая позволяет писать код, поддерживаемый любым чипом.

Не стоит забывать и о том, что Java — объектно-ориентированный язык, поэтому на нём можно создавать код для облачной инфраструктуры и пограничных узлов. Для Java создано большое количество библиотек и инструментов безопасности, он отличается высокой скоростью работы. 

При всех плюсах неудивительно, что на Java написан бэкенд нашего приложения для поддержания микроклимата «Цельсиум» и платформы MTS IoT HUB.

Python

Благодаря простому синтаксису и быстроте написания кода Python всё чаще используется в сфере IoT. Так как это интерпретируемый язык, он хорошо совместим с такими парадигмами, как объектно-ориентированное, структурное и функциональное программирование.

Кроме того, под Python создано множество библиотек для решения различных задач, например для машинного обучения и работы с данными. А для программирования микроконтроллеров есть специальный пакет MicroPython, который запускает Python непосредственно на «железе».

C

Может показаться удивительным, что один из старейших языков программирования используется в такой инновационной сфере, как IoT. 

Причины популярности заключаются как в большой кодовой базе на С, которую нельзя переписать на современных языках, так и в возможности работать напрямую с памятью и любым «железом».

Также важно, что С не нуждается в больших вычислительных мощностях и позволяет добиться высокого быстродействия системы даже на слабых устройствах.

C++

Этот язык часто используют для программирования одноплатных компьютеров. Он такой же быстрый, как С, но при этом написание кода на нём обычно занимает меньше времени.

Благодаря возможности создавать абстракции C++ отлично подходит для приложений Linux и программирования встраиваемых устройств.

Мы остановились на С++ для фронтенда приложения NB-IoT-тревожной кнопки Smart Click.

JavaScript

JavaScript — универсальный язык программирования, который можно использовать не только для создания фронтенда сайтов и веб-приложений. 

Благодаря программной платформе Node.js, расширяющей возможности JavaScript, он также подходит для программирования датчиков, серверов и шлюзов.

Языки программирования для узких задач в сфере IoT

Здесь поговорим о языках, которые не вошли в рейтинг Eclipse Foundation, но используются для решения конкретных задач, поэтому владение ими будет плюсом при поиске работы.

LUA

Довольно редкий язык программирования, который тем не менее часто используется в сфере IoT.

LUA — гибкий скриптовый язык, подходящий для создания приложений, ориентированных на портативность, экономию энергии и работу с большими объёмами данных. У него также есть фреймворк Node.lua, аналогичный Node.js.

Swift

Используется для разработки приложений под устройства на операционной системе iOS. Это простой в изучении язык, который отлично подходит для начинающих программистов, планирующих работать в сфере IoT.

Go

Golang, или Go, позволяет писать оптимизированный код, подходящий для устройств с низким энергопотреблением и небольшой памятью, поэтому набирает популярность в IoT.

Кроме того, Go позволяет легко маршрутизировать тысячи потоков данных и обрабатывать несколько асинхронных потоков одновременно.

Выводы

Нет сомнений, что IoT будет развиваться дальше, охватывая всё больше сфер нашей жизни.

Если вы уже программируете на Python, Java, C или C++, поищите вакансии в компаниях, разрабатывающих устройства для интернета вещей.

Если только планируете делать первые шаги в программировании, советуем освоить Python для решения большинства задач IoT или C/C++ для работы с «железом».

3953