В Москве прошла ежегодная встреча научно-технических партнеров Российского национального комитета (РНК) СИГРЭ.
Умные машины с AI-начинкой разработаны в Центре робототехники Сбербанка.
Современные устройства – давно уже не шесть реле в два ряда с тремя кнопками и парой светодиодов. Сегодня пользователи ждут захватывающего опыта взаимодействия с девайсами. Даже рабочему у станка хочется иметь надежное, совместимое, безопасное и удобное в использовании оборудование, не говоря уже об автомобилистах, пилотах и медиках с пациентами, которым «умные» устройства не только значительно облегчают работу, но зачастую буквально спасают жизнь.
Сердце любого «умного» устройства – встраиваемое программное обеспечение (ПО). Будучи неотъемлемой частью медицинского и промышленного оборудования, автомобилей и систем безопасности, именно встраиваемое ПО обеспечивает их бесперебойную и безотказную работу. Аурига знает об этом не понаслышке: по изначальной натуре своей и внутреннему укладу наша компания сильно отличается от других. Мы не такие как все – у нас «вьют гнезда» олдскульные программисты встраиваемого ПО.
С 1990 года разработка встраиваемых решений является одним из основных направлений деятельности Ауриги. Мы разрабатывали ПО для многих международных компаний, включая IBM, Dräger Medical и др. Причем не только то, которое выдает пользователю информацию о температуре и давлении пара на ЖК дисплее котла (подобного рода ПО даже не является встраиваемым в классическом смысле), а то, которое управляет компрессором, стравливает давление клапаном и измеряет параметры с помощью сенсоров.
Впрочем, и графические интерфейсы Аурига тоже пишет – современным устройствам без них никуда. Однако мы понимаем, что инженеры, разрабатывающие GUI, могут не знать многих ограничений и зависимостей в нашей работе, к примеру:
Именно поэтому и есть в Ауриге группа «посвященных», которая терпеливо обучает неофитов мудреной науке. Это не библиотека кривая, а нужно открыть исходники и смотреть, почему «падает». Если исходников нет, то есть дизассемблер – ибо ты программист или кто? Это не железо слабое, а необходимо оптимизировать алгоритм. Не надо использовать оголтело объектно-ориентированный подход, да и функциями увлекаться не стоит. И оператор goto – вполне себе хороший оператор, в условиях недостатка памяти – просто палочка-выручалочка.
Все это даже не цветочки – так, посев. «Цветочки» — это когда клиенту приходится объяснять на живых примерах и аргументированно доказывать, почему профессионал с опытом работы в нестандартных условиях стоит дороже обычного программиста. Существенная разница заключается в том, что у первых все отлично работает всегда и везде, тогда как у вторых все работает в течение 15 минут, а затем, наверное, железо перегревается.
За годы работы в отрасли мы сталкивались с самыми разными случаями. Простой для Ауриги случай – когда заказчик сам ошибся в выборе специалистов, сам зашел в центр лабиринта и молит нас о спасении. Что ж, приходим и спасаем. Однако нередко бывает и тяжелый случай: «Мы тут взяли новый pin-to-pin совместимый микроконтроллер, немножко изменили программу, собрали, а она не работает. Старые бинарники на новом микроконтроллере работают, но не так хорошо, как на старой версии. Вы сможете за пару деньков все поправить? А еще мы хотим, чтобы код под разные аппаратные платформы собирался, и очень желательно, чтобы работал».
В этом случае я, как Генеральный директор, вызываю пару инквизиторов и одного евангелиста, чтобы первые двое изгнали из программистов заказчика user-mode, а третий приобщил их к исконным знаниям и придал твердости духа. Не вдаваясь пока в такие термины, как ядро ОС, драйвер, BIOS, микрокод, мы «открываем букварь» и начинаем рассказывать:
Вместе с заказчиком мы начинаем изучать регистровую модель микроконтроллера и ассемблер, а также считать память и использовать макросы вместо функций для экономии оной и ускорения процессора. Мы упираемся от перехода на новый компилятор или библиотеку, ибо знаем, что все рухнет, а когда рухнет, открываем исходники (и, если надо, бинарники) и начинаем править там. Мы объясняем, почему тестировать надо в основном автоматически, и почему тесты должны быть только системные. Мы знаем по опыту, что тестировать нужно несколько миллионов раз, чтобы поймать эту одну сотую микросекунды race-conditions, и что ручное тестирование во встраиваемом ПО практически ничего, кроме функциональных багов, не выявляет – там хороши симуляторы.
Осилив «букварь», многие заказчики «прозревают» и говорят: «Эх, если бы мы знали!..» Надеюсь, теперь вы знаете и понимаете, как важно иметь дело с опытными программистами. Возникла проблема со встраиваемым ПО – обращайтесь к профильным специалистам, профессионалам своего дела. Да, это будет дороже, но зато это будет работать, а не висеть!
— Вячеслав Ванюлин, Генеральный директор, Аурига