Defense Tech: C++ і нова роль програмістів в українській армії | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Defense Tech: Як війна змінила роль програмістів та чому C++ знов у центрі уваги

Defense Tech: Як війна змінила роль програмістів та чому C++ знов у центрі уваги

Про найперспективнішу нішу в українському ІТ

DefTech — це таке собі переосмислення того, що означає бути розробником. Війни завжди були найпотужнішим драйвером технологій, і зараз ця історія пишеться на наших очах. В ході протистояння повномасштабній агресії росії українська оборонна індустрія росте небаченими темпами. 

За даними AIN, з початку 2024 року в українську deftech-індустрію вже інвестували понад $12 млн. Окрім інженерів, пілотів та експертів з робототехніки, індустрія кровно потребує айтівців. 

У цій статті розбираємо, що таке defense tech індустрія, з чого почати свій шлях у ній та як С++ став найважливішою мовою програмування в цій ніші.

Що таке DefTech і чому це зараз важливо

Якщо класичний ВПК — це багаторічні контракти й бюрократія, то defense tech — це agile-команди, open source-компоненти й продукти, які тестують не в лабораторіях, а в реальному бою. Чим же ще DefTech відрізняється від класичного IT?

  • Від A/B-тестів — до польових випробувань під вогнем 

У звичайному стартапі ти тестуєш, чи краще конвертує та чи інша функція. У deftech твій код перевіряють на полігоні, а інколи й в зоні бойових дій. Фідбек приходить не від продуктового менеджера, а від оператора, який щойно щось збив. Такий фідбек, вочевидь, набагато красномовніший.

  • Від move fast and break things — до break nothing, move faster

Важливо розуміти, що баги у defense tech системах — недопустимі, адже за ними стоять людські життя. Парадоксально, DefTech рухається швидше за класичний ВПК. Від ідеї до повноцінного виробництва можуть проходити місяці, а не роки.

  • Від user feedback до combat feedback loops

Класичний цикл в ІТ: розробка → реліз → аналітика → ітерація. У DefTech він видозмінений: розробка → тестування → deployment на фронт → телеметрія з поля бою → оновлення проблем → нова версія. Цикли ітерацій частіше рахуються в днях, а не кварталах.

Чому саме C++?

C++ у defense tech — це прагматизм. Жорсткі обмеження сильно звужують вибір мови. Python, Java або JavaScript фізично не запустяться — їм потрібні мегабайти пам'яті лише для runtime. 

C++ дає хороший баланс між продуктивністю і зручностями високорівневої мови. RAII автоматично закриває ресурси, шаблони дозволяють писати type-safe код без runtime overhead, а STL (Standard Template Library) можна адаптувати під embedded. 

Чому не чистий C? 

Коли проєкт росте до 50 000+ рядків коду, відсутність класів, namespaces та modern tooling стає болем. C++ дає структуру, не жертвуючи контролем. 

Чому не Rust? 

Коли вам треба інтегруватися з MAVLink, PX4, ArduPilot — всі вони на C++. Переписувати колесо, коли на фронті чекають дрони, — розкіш, яку індустрія не може собі дозволити.

В реальності, C++ — це lingua franca в embedded світі. Всі open-source проєкти (Betaflight, ArduPilot, PX4) на C++, всі драйвери від виробників чипів — теж C++. Можна воювати з цим і писати на Rust або Go, але тоді ви витратите місяці на інфраструктуру замість функціонала. 

Анатомія DefTech-продукту: чому тут потрібен інший підхід

1. На прикладі дрона

Типовий FPV-дрон — це 32-бітний мікроконтролер за $5, камера, відеопередавач, GPS-модуль та батарея. Звучить просто, але в реальності код має керувати чотирма моторами з частотою оновлення 8 кГц, обробляти дані з IMU (гіроскоп + акселерометр) 1000 разів на секунду, підтримувати відеотрансляцію та приймати команди оператора. Маючи всього 192 КБ оперативної пам'яті.

Чому Python тут не варіант? 

Інтерпретатор Python сам по собі займає мегабайти пам'яті (а їх у вас лише 192 КБ). Garbage collector може спрацювати в будь-який момент, заморозивши виконання на кілька мілісекунд — дрон за цей час встигне втратити стабілізацію та впасти. А ще Python у 50–100 разів повільніший за компільований C++. 

С++ код, у цьому контексті, має робити багато:

  • PID-контролер читає кути нахилу з IMU, обчислює корекцію та змінює швидкість обертання моторів — 8000 разів на секунду.
  • Надсилає оператору GPS-координати, рівень батареї, швидкість руху кожні 100 мс.
  • Якщо зв'язок втрачено, дрон має за 100 мс вирішити: повернутися додому, зависнути або здійснити контрольовану посадку.

2. На прикладі РЕБ-системи

Система радіоелектронної боротьби сканує радіоефір, шукаючи ворожі дрони на діапазоні частот, і глушить їхній сигнал. Вона обробляє мільйони семплів радіосигналу щосекунди, виконує Fast Fourier Transform (FFT) для виявлення патернів, класифікує сигнал та підбираєш частоту для придушення. За частки секунди.

Уявіть, що ворожий дрон рухається зі швидкістю 80–100 км/год. Якщо система виявляє його на відстані 1 км, у вас є ~36 секунд до контакту. З них 30 секунд іде на виявлення та класифікацію сигналу, 5 секунд — на активацію jamming, 1 секунда — резерв. Затримка обробки на 2–3 секунди може означати, що вже пізно.

Цифрова обробка сигналів — це математика: згортки, фільтри, FFT. Для цього C++ дає абстракції (класи, шаблони), але при цьому zero-overhead — компілятор перетворює код у такий самий машинний код, який ви написали б на C або асемблері.

Технічний стек у defense tech індустрії

Щоб краще зрозуміти, що входить у цей технічний стек, варто розібратись, як воно все працює за рівнями (спрощено, звісно). Для наочності уявімо, що говоримо про дрон.

  • Рівень 1: Bare Metal

Bare metal — це коли код запускається безпосередньо на процесорі, без операційної системи. Ви самі керуєте кожним регістром, кожним перериванням, кожним бітом пам'яті. Навіщо? Абсолютний контроль та мінімальна латентність.

Уявімо, що якийсь елемент має відпрацювати за 10 мікросекунд. Якщо у вас є ОС, вона додасть overhead, сповільнюючи процес, щоб його обробити. А Bare metal — це ви, залізо і нічого зайвого. Використовується в найпростіших дронах, де код займає 30–50 КБ.

  • Рівень 2: RTOS — операційна система реального часу

Коли проєкт росте, bare metal стає неконтрольованим. RTOS (FreeRTOS, Zephyr) — це мінімалістична ОС, яка дає task scheduling, пріоритизацію та синхронізацію. FreeRTOS займає ~10 КБ пам'яті. Вона все ще дуже проста, але ви вже отримуєте структуру і передбачуваність.

  • Рівень 3: комунікації й те, як дрон розмовляє зі світом

Він це робить за допомогою MAVLink — стандартного бінарного протоколу для передачі телеметрії, команд, місій. Також використовуються кастомні протоколи та mesh networking (для зв'язку в умовах, коли немає інфраструктури).

Тут C++ працює з сокетами, serial ports, CAN bus — але на набагато нижчому рівні, ніж у web-розробці.

  • Рівень 4: CV та AI

Навіть ML у DefTech особливий. До прикладу, дрон з камерою виявляє цілі в реальному часі. Нейромережа обробляє кадр 320×240 пікселів, виконує 5–10 млн операцій та видає результат за 100–200 мс. Це вимагає розуміння не лише ML, але й того, як працює DMA (Direct Memory Access), як кешувати дані, як розпаралелити обчислення.

Що вас відділяє від defense tech: Roadmap для світчерів

Якщо ви вже працюєте в ІТ, є великий шанс, що ви маєте кілька важливих навичок.

  • Якщо ви з web/mobile:

Можна перенести розуміння архітектури (модульність, design patterns — вони працюють і в embedded), навички дебагінгу (GDB замість Chrome DevTools, але логіка та сама), git/CI/CD.

Треба вивчити C/C++ (не TypeScript або Swift), знати електроніку принаймні базово (як під’єднати датчик, що таке pull-up резистор), вміти читати datasheet (100-сторінковий PDF про мікроконтролер).

  • Якщо ви з backend/systems:

Можна перенести розуміння concurrency (threads, locks, race conditions), менеджмент памʼяті (malloc/free, memory leaks), network-протоколи (TCP/IP, UDP). Це 50% роботи в embedded.

Треба вивчити структуру апаратури (як CPU взаємодіє з периферією), real-time constraints (коли «достатньо швидко» означає конкретні мікросекунди), відмовитись від звичних бібліотек та звикати до обмежень (192 КБ RAM замість 16 ГБ).

  • Якщо ви data scientist / ML:

Можна перенести знання математики (лінійна алгебра, оптимізація), signal processing (згортки, фільтри, FFT), нейромережі (як вони працюють під капотом).

Треба вивчити, як деплоїти моделі на залізі (TensorFlow Lite Micro, ONNX Runtime), quantization (перехід з float32 на int8 без втрати точності), pruning (видалення непотрібних нейронів) і розуміти, що твоя модель має бути не точною, а швидкою. 95% accuracy за 500 мс гірше, ніж 90% за 50 мс.

На завершення

DefTech — це інженерія з жорсткими обмеженнями, які, власне, й роблять цю роботу цікавою. Кожен байт має значення. Кожна інструкція важлива. І саме цей виклик — повернення до фундаментальних основ Computer Science — приваблює в DefTech найкращих інженерів.

Ще статті
Порівнюємо швидкість, якість і відповідальність за результат