Уроки эволюции С-кода и шаблоны архитектуры реального времени на основе проекта ioquake3


Уроки эволюции С-кода и шаблоны архитектуры реального времени на основе проекта ioquake3

Старолетов С.М. (АлтГТУ, Барнаул, Россия)

Аннотация

В современных компиляторах все сильнее действуют запреты на код, который может выполнять потенциально опасные действия. Опытные разработчики часто с улыбкой оглядываются на свой старый код, удивляясь его недостатками и тому, как он вообще функционировал, а на масштабных проектах такой взгляд назад может показать все недостатки подхода к программированию в прошлые эпохи. В этой статье рассматриваются проблемы компиляции и рефакторинга legacy (унаследованного) кода на примере игрового движка Quake III (1999). Будучи знаковым проектом ранней эры 3D-графических ускорителей, игровой движок, по сути, представляет собой систему реального времени, оптимизированную для ограниченного аппаратного обеспечения – сопоставимого с современными мобильными или встроенными устройствами. Его открытая кодовая база на C, выпущенная в виде ioquake3 проекта, теперь компилируемая для всех современных архитектур, предоставляет уникальную возможность для анализа улучшения качества кода, исходя из предупреждений компилятора. В этой статье мы изучаем различия между оригинальным исходным кодом Quake III и кодом современного проекта ioquake3, кластеризуя изменения в diff-файле между этими проектами. Мы также исследуем, как исходный код игры ведет себя под современным GCC со всеми включенными предупреждениями. Категоризируя предупреждения компилятора и уже сделанные разработчиками необходимые исправления, мы выделяем шаблоны небезопасных практик и демонстрируем необходимые шаги по рефакторингу. Результаты работы призваны связать исторические практики программирования с современными стандартами надежности, предоставляя практические выводы для преподавателей программирования на C, разработчиков, сопровождающих унаследованные системы и разработчиков, интересующихся качеством кода.

Ключевые слова

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

Издание

Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 53-68.

ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).

DOI: 10.15514/ISPRAS-2026-38(2)-4

Для цитирования

Старолетов С.М. Уроки эволюции С-кода и шаблоны архитектуры реального времени на основе проекта ioquake3. Труды Института системного программирования РАН, том 38, вып. 2, 2026, стр. 53-68. DOI: 10.15514/ISPRAS-2026-38(2)-4.

Полный текст статьи в формате pdf (на английском) Вернуться к содержанию тома