Про історію житомирського вундеркінда, для якого світове визнання — не перша нагорода, розповідає dev.ua.
Вже не школяр
Денису Пирогову 19 років. Зараз він студент першого курсу Житомирського політеху. Правда, хлопець вирішив вступити на заочне відділення, щоб більше часу займатися своєю розробкою — віртуальною машиною, яка оптимізує роботу комп’ютера.
«Навчання має бути не тільки за програмою, а й з особистого досвіду. Заочна форма дозволяє мати більш гнучкий графік», — аргументує Денис.
Хлопець розповідає, що захопився комп’ютерами й програмуванням років з дев’яти.
«Коли саме я навчився кодити — не знаю. Це формувалося поступово, з інтересу до комп’ютерів, років з дев’яти і по сьогоднішній день», — говорить він.
Дениса, за його словами, спочатку цікавило створення ігор.
«У 14 років я написав 2D гру, схожу за сеттингом з Half-Life Deathmatch, незабаром прийшов до „дорослого“ кодингу — роботі з мережами, операційними системами, мікроконтролерами, графікою», — розповідає хлопець.
До кінця 2020 року у Пирогова з’явився, як він сам каже, незвичайний інтерес до внутрішнього пристрою процесорів, дизайну ISA (а особливо RISC-V).
«Я написав на той момент емулятор, що використовувався „у вузьких колах заради науки“, але незабаром знайшов кілька контрибуторів, тестерів», — розповідає хлопець.
Що таке RISC-V
Проєкт, за словами Дениса, програмно емулює роботу реального комп’ютера, сумісного з архітектурою RISC-V, і дозволяє використовувати його для тестування і використання програм в ізольованому і переносному середовищі.
RISC-V — це новий, відкритий стандарт процесорної архітектури, багато в чому схожий з ARM (ARM на цей момент застосовується в переважній більшості телефонів, планшетів, інших невеликих пристроїв). Однак, як розповідає Денис, RISC-V має деякі технологічні переваги: він значно простіший у реалізації й розумінні, дозволяє досягти більшої енергоефективності.
«Крім того, стандарт RISC-V не є надбанням окремо взятої компанії, а доступний кожному для реалізації, вивчення й поліпшення — не потрібно платити за патент, підписувати NDA, або в якомусь іншому вигляді зобов’язуватися перед іншою юрособою», — говорить Пирогов.
Це, за словами хлопця, спрощує життя невеликим компаніям, інженерам-самоучкам, підвищує рівень світових технологій.
Аналогічні розробці Дениса проєкти у світі існують.
«Але вони явно переслідують дещо інші цілі. Наприклад, проєкт QEMU націлений на емуляцію цілого переліку історичних та актуальних архітектур, утім, не йде за принципом „роби одне, але роби добре“, має великі накладні витрати, у тому числі через більш роздутий транслятор TCG/TCI (безліч рівнів абстракції між віртуальною машиною і середовищем виконання)», — наводить приклад хлопець.
Розроблені конкурентні проєкти, за словами розробника, не до кінця проходять офіційні тести від RISC-V Foundation. Крім того, немає якісного аналога Machine API, що дозволяє вбудовувати віртуальні машини в будь-який додаток», — зазначає хлопець.
Ентузіасти в дії
Зараз над проєктом працює невелика команда ентузіастів. Денис розповідає, що завдяки своїй розробці познайомився з програмістом, який зайнявся роботою віртуальної периферії (пристрої введення, жорсткі диски, мережа). А напрацювання Дениса крутяться навколо симуляції процесора, підсистеми пам’яті, продуктивності, інфраструктури проєкту.
«Ми робимо майже всю велику роботу, але ще пара десятків людей займаються тестуванням, періодично надсилають невеликі доопрацювання і замітки», — зізнається хлопець.
Грошей у свій проєкт Пирогов не залучав.
«В основному розробка ведеться на ентузіазмі, але з підтримкою (в тому числі ресурсами та ідеями) з боку спільноти та однодумців на зразок: «Хлопці, я вам нові патчі й доопрацювання відправив», «Ось вам залізяка для тестів», — пояснює Денис.
Де корисний the RISC-V Virtual Machine
За допомогою розробки житомирянина можна сильно спростити роботу з комп’ютером.
Зокрема, за словами Дениса, його проєкт корисний при:
- симуляції повноцінних систем на основі Linux, Android, FreeBSD і використанні їх в практичних або навчальних цілях, в повній ізоляції заради безпеки, і маючи необмежену владу над віртуальною системою;
- розробці та налагодженні драйверів, ядра операційних систем та іншого ПЗ;
- у розважальних цілях — можлива інтеграція реалістичних комп’ютерів в ігровий світ, що створює якусь інженерну пісочницю з кодовими дверима на мікроконтролерах, роботами, комп’ютерами;
- в освітніх цілях.
Інструмент можна використовувати всім безоплатно.
«Використання в особистих цілях вільне з можливістю вивчати внутрішній устрій в академічних або практичних цілях, але ліцензія GPL також зобов’язує робити доступними будь-які модифікації для їх можливого прийняття в проєкт і підтримки свободи — в цьому вся філософія», — говорить Денис.
Також, за словами хлопця, можливе ліцензування проєкту і для вбудовування в комерційні проєкти, або реалізація необхідного vendor-specific функціоналу на платній основі.
«Вартість, як правило, залежить від складності реалізації», — говорить він.
Світове визнання
У листопаді 2021 року проєкт Дениса вийшов у світовий фінал Міжнародного конкурсу комп’ютерних проєктів Infomatrix і взяв «срібну» медаль.
«Будемо сподіватися що це тільки початок цікавих змагань», — натхненно каже хлопець.
Його керівник Житомирський вчитель Микола Тарасюк розповідає, що код в цьому проєкті був ідеальним, і чому у хлопця не «золото», йому незрозуміло.
Сам Денис ставиться до цього філософськи.
«З приводу „ідеального коду“ — проєкт регулярно аналізується різними інструментами для пошуку можливих багів і вразливостей, стабільно тримає планку якості за мірками Valgrind, GCC Sanitizer, Clang-Analyze, PVS Studio, Looks Good to Me, Control Flag. Кожна зміна проходить уважне ревю й документується. Емульована система проходить формальну верифікацію відповідності стандарту RISC-V, а я є сертифікованим фахівцем», — розповідає хлопець.
«Срібло» на Infomatrix — не єдина нагорода Пирогова. Його проєкти займали призові місця й на інших конкурсах. Зокрема, в активі Дениса перше місце по Україні в конкурсі iTalent, призове місце в регіональному конкурсі GoldenByte влітку 2019 року з проєктом мережевої бібліотеки для ігор і комунікацій.
«На сьогодні той самий проєкт використовується для декількох онлайн ігор, як альтернатива інструментарію в фреймворках love2D і Clickteam Fusion», — розповідає він.
Що далі?
На питання про те, ким Денис хоче стати, коли виросте, він віджартовується: «А хіба я вже не виріс?».
«Розроблений інструмент відмінно стане в нагоді в сфері embedded розробки та іншому хитро-залізячному світі, а саме таку роботу мені б і хотілося мати», — зізнається житомирський вундеркінд.
Але і плани у хлопця амбітні.
«З ідей — в майбутньому, використовуючи отримані знання, можна реалізувати транслятор x86 додатків для платформ ARM і RISC-V, близький за продуктивністю до Rosetta, або приєднатися до перспективного проєкту box86 і розширити його можливості», — зізнається Денис.