Дом, который запрограммировал Джек
IoT – это не просто модная концепция, это неизбежное будущее. Датчики, сенсоры, устройства, объединённые Wi-Fi – всё это стремительно становится частью наших домов и офисов. Тяжело ли стать создателем сетей IoT и какие языки стоит сперва выучить хотя бы на прикладном уровне? Об этом далее.
Датчики и контроллеры: С, язык ассемблера
Как к вопросу IoT не подходи, а начать придётся с примитивного уровня, а именно с контроллеров и датчиков. Именно благодаря им языки C и ассемблера остаются одними из самых популярных языков программирования в мире. При этом для новичка это самая лёгкая часть для быстрого освоения, так как, во-первых, целевые устройства почти всегда имеют подробную инструкцию и библиотеки, не требующие хорошего знания языка (он скорее нужен для понимания), а во-вторых, функциональность использования подкупает своей простотой. То есть для того, чтобы, например, получить с датчика температуры текущее значение, вам надо просто в соответствии с инструкцией (интерфейсом) отправить пакет данных и получить ответ. Всё. Никаких графических оболочек, никаких лишних действий по выуживанию и защите данных, а в случае таких систем, как Arduino, вам даже настраивать ничего не придётся.
ПО для одноплатных устройств: C++, Java
Взаимодействие не с элементарными датчиками, а чуть более сложными микроконтроллерами, потребуют от вас языка C++. С точки зрения IoT то ещё не высокий уровень, а пригодный скорее для настройки отдельных компонентов с нуля: организации записи и доступа к памяти, внутреннего арбитража, проверки целостности пакетов и подобных несложных операций. Здесь вновь придут на помощь готовые библиотеки, но вот без знания языка уже далеко не уедешь: на уровне «С++ для чайников» освоить придётся.
Если же речь идёт о полноценных одноплатных компьютерах, вроде Raspberry Pi, то здесь знание Java может помочь с созданием удобной оболочки для получения и обработки данных со всех окружающих устройств и дальнейшего использования на удалённой платформе. Конечно, данный функционал можно создать и с помощью C++ или переложить на устройства конечного доступа, но на деле этот путь совсем не легче.
Мобильные устройства Android: Java
Теперь переходим к повсеместно любимому занятию – созданию приложений для каждодневного взаимодействия, то есть интерфейса для мобильного телефона. Начнём с Android и соответственно Java. Ключевым здесь является вопрос глубины требуемых познаний. Если требуется организация простого взаимодействия с визуализацией данных, получаемых с центрального ПК или непосредственно датчиков, то вполне хватит хорошего знания интерфейсов и посредственного Java. Если же вы задумаете создать что-то посерьёзнее, чем приложение для себя и друзей, то естественно за книжками придётся провести значительно больше времени. И не только по Java.
Мобильные устройства iOS: Swift
Аналогичная ситуация и с нашими любимыми «яблочными» устройствами: симпатичное функциональное приложение без необходимости обрабатывать данные и распределять ресурсы может быть сделано уже после вводного курса в Swift, но для создания полноценного удалённого и распределённого доступа к системе придётся серьёзно обложиться литературой.
ПО для рабочих ПК: С#
Когда требуются большие объёмы памяти (запись камер видеонаблюдения или big data), то конечно без использования сервера или хотя бы рядового компьютера вам не обойтись. Понятно, что создать приложение для компьютера можно практически на любом языке, но если брать за отсчёт распространённость ОС Windows, то язык безусловно должен быть C#.
Интерфейсы прямого взаимодействия: HTML, JavaScript, PHP, Ruby
Как правило готовые системы или частично готовые (например, RaZberry) предлагают пользователю взаимодействовать с IoT через встроенный браузер любого подручного гаджета. Естественно, что здесь, в простейшем случае, необходимо знать PHP и JS, в чуть более продвинутом случае – Ruby. Подобный подход очень удобен для детальной настройки системы, поэтому важно не просто создать некий интерфейс, но и всерьёз задуматься о безопасности доступа. А это потребует от создателя максимальных знаний отдельных компонентов, протоколов, интерфейсов и конечно же языков.
Итог
Для того, чтобы сделать из своего жилища простую замкнутую «умную» систему, вам в большей степени потребуются энтузиазм и деньги, нежели недели и месяцы, проведённые за книгами по программированию и схемотехнике. Но в случае, если вы решите всерьёз заняться IoT, то и целой жизни покажется мало для освоения всех дисциплин на профессиональном уровне.
Освоить востребованную профессию в Аналитике больших данных можно всего за полтора года на курсах GeekBrains.