Шаблонное мета-программирование в современном C++ для задач космической баллистики (Леонид Меркин)
24 мая в Санкт-Петербурге состоялся первый System Level Meetup от компании YADRO. В рамках мероприятия спикер Леонид Меркин, доктор математических наук, выступил с докладом на тему "Шаблонное мета-программирование в современном C++ для задач космической баллистики". Он рассказал, как надежность mission-critical IT-решений в российской аэрокосмической индустрии растет благодаря программированию с развитыми системами типов, а именно на C++ стандартов 11–23. Для этой цели реализованы библиотеки C++ с открытым исходным кодом. SpaceBallistics включает type-safe-модели динамики ракет-носителей и космических аппаратов, методы дизайна и оптимизации траекторий. DimTypes реализует систему размерных типов на основе compile-time Z_p-арифметики. 00:16 - О докладе. 02:22 - Исторический контекст. 08:00 - Уровни зрелости IT процесса (a la CMMI)(Disclaimer: это просто статистическая закономерность!). 13:27 - Надежность ПО в широком смысле. 16:18 - IT в аэрокосмической индустрии. 22:51 - «Размерные типы» в С++. 27:54 - Библиотека DimTypes: Новая реализация размерныхтипов в С++. 31:05 - Макро для «высокоуровневого» объявления размерных типов (реализация — через Macro Map!). 32:54 - Пример: Правило вывода для умножения размерных величин. 33:50 - Примеры ошибок, выявляемых на этапе компиляции (GCC 15): Несовместимые размерности. 34:39 - Примеры ошибок, выявляемых на этапе компиляции (GCC 15): Несовместимые единицы измерения. 35:06 - Следующий уровень: библиотека SpaceBallistics. 37:26 - Примеры типов систем координат в SpaceBallistics. 39:28 - Связанная система координат РН «Союз-2.1б». 39:48 - Type-safe вектора в SpaceBallistics. 40:20 - Модель РН «Союз-2.1б» в библиотеке SpaceBallistics. 41:16 - Остающаяся проблема. 43:29 - Метод моделирования динамических параметров РН. 43:55 - Пример: X-координата центра масс 3-й ступени РН «Союз-2.1б» как функция полетного времени (FlightTime). 45:35 - Интеграция SpaceBallistics с математическими библиотеками. 47:10 - Применение библиотек DimTypes и SpaceBallistics. 48:44 - Вопросы участников. Подробности о докладах и анонсы следующих митапов вы найдете на нашем Хабре https://habr.com/ru/companies/yadro/articles/ 📚 Дополнительные материалы ✅ Статьи на Истовом инженере: ·Виноград, Фурье и немного наивности: 4 подхода к реализации сверток с простыми примерами https://engineer.yadro.com/article/4-podhoda-k-realizacii-svertok-s-prostymi-primerami/ · Три икса: новый уровень работы с большими свертками в PyTorch для обучения моделей https://engineer.yadro.com/article/kak-rasshirit-vozmozhnosti-pytorch-dlya-raboty-so-svertkami/ · Вирт, Кормен и диалекты Basic: что изучить про алгоритмы и структуры данных разработчикам на С++ https://engineer.yadro.com/article/algoritmy-i-struktury-dannyh-cpp/ · Обзор книги «С++ 20 в деталях»: доступно, но не для джунов https://engineer.yadro.com/article/c-get-the-details-book/ · Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++ https://engineer.yadro.com/article/ml-for-neural-networks/ ✅ Хабр: · Пишем свой кодек для JSON с фиксированной схемой: опыт разработчика и сравнение производительности https://habr.com/ru/companies/yadro/articles/972524/ · Используем паттерны C++ в ML: пишем тензор с factory, выделяем память и управляем динамическими типами https://habr.com/ru/companies/yadro/articles/994326/ · Динамический полиморфизм для свободных функций: еще одна практика из С++ для машинного обучения https://habr.com/ru/companies/yadro/articles/997006/ · Почему AI не может полноценно участвовать в разработке на С++ https://habr.com/ru/companies/yadro/articles/1003670/ · Девиртуализация в C++, компиляторах и вашей программе https://habr.com/ru/companies/yadro/articles/938694/ 🎧 Послушать: · Подкаст «Битовые маски» с Константином Владимировым. Компилятор для CPU и GPU. Часть 1. LLVM и GCC https://engineer.yadro.com/podcast/compiler-cpu-gpu-part-1/ · Подкаст «Битовые маски» с Константином Владимировым. Часть 2. LLVM в GPU компиляторах. Стандарты С++ https://engineer.yadro.com/podcast/compiler-cpu-gpu-part-2/
24 мая в Санкт-Петербурге состоялся первый System Level Meetup от компании YADRO. В рамках мероприятия спикер Леонид Меркин, доктор математических наук, выступил с докладом на тему "Шаблонное мета-программирование в современном C++ для задач космической баллистики". Он рассказал, как надежность mission-critical IT-решений в российской аэрокосмической индустрии растет благодаря программированию с развитыми системами типов, а именно на C++ стандартов 11–23. Для этой цели реализованы библиотеки C++ с открытым исходным кодом. SpaceBallistics включает type-safe-модели динамики ракет-носителей и космических аппаратов, методы дизайна и оптимизации траекторий. DimTypes реализует систему размерных типов на основе compile-time Z_p-арифметики. 00:16 - О докладе. 02:22 - Исторический контекст. 08:00 - Уровни зрелости IT процесса (a la CMMI)(Disclaimer: это просто статистическая закономерность!). 13:27 - Надежность ПО в широком смысле. 16:18 - IT в аэрокосмической индустрии. 22:51 - «Размерные типы» в С++. 27:54 - Библиотека DimTypes: Новая реализация размерныхтипов в С++. 31:05 - Макро для «высокоуровневого» объявления размерных типов (реализация — через Macro Map!). 32:54 - Пример: Правило вывода для умножения размерных величин. 33:50 - Примеры ошибок, выявляемых на этапе компиляции (GCC 15): Несовместимые размерности. 34:39 - Примеры ошибок, выявляемых на этапе компиляции (GCC 15): Несовместимые единицы измерения. 35:06 - Следующий уровень: библиотека SpaceBallistics. 37:26 - Примеры типов систем координат в SpaceBallistics. 39:28 - Связанная система координат РН «Союз-2.1б». 39:48 - Type-safe вектора в SpaceBallistics. 40:20 - Модель РН «Союз-2.1б» в библиотеке SpaceBallistics. 41:16 - Остающаяся проблема. 43:29 - Метод моделирования динамических параметров РН. 43:55 - Пример: X-координата центра масс 3-й ступени РН «Союз-2.1б» как функция полетного времени (FlightTime). 45:35 - Интеграция SpaceBallistics с математическими библиотеками. 47:10 - Применение библиотек DimTypes и SpaceBallistics. 48:44 - Вопросы участников. Подробности о докладах и анонсы следующих митапов вы найдете на нашем Хабре https://habr.com/ru/companies/yadro/articles/ 📚 Дополнительные материалы ✅ Статьи на Истовом инженере: ·Виноград, Фурье и немного наивности: 4 подхода к реализации сверток с простыми примерами https://engineer.yadro.com/article/4-podhoda-k-realizacii-svertok-s-prostymi-primerami/ · Три икса: новый уровень работы с большими свертками в PyTorch для обучения моделей https://engineer.yadro.com/article/kak-rasshirit-vozmozhnosti-pytorch-dlya-raboty-so-svertkami/ · Вирт, Кормен и диалекты Basic: что изучить про алгоритмы и структуры данных разработчикам на С++ https://engineer.yadro.com/article/algoritmy-i-struktury-dannyh-cpp/ · Обзор книги «С++ 20 в деталях»: доступно, но не для джунов https://engineer.yadro.com/article/c-get-the-details-book/ · Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++ https://engineer.yadro.com/article/ml-for-neural-networks/ ✅ Хабр: · Пишем свой кодек для JSON с фиксированной схемой: опыт разработчика и сравнение производительности https://habr.com/ru/companies/yadro/articles/972524/ · Используем паттерны C++ в ML: пишем тензор с factory, выделяем память и управляем динамическими типами https://habr.com/ru/companies/yadro/articles/994326/ · Динамический полиморфизм для свободных функций: еще одна практика из С++ для машинного обучения https://habr.com/ru/companies/yadro/articles/997006/ · Почему AI не может полноценно участвовать в разработке на С++ https://habr.com/ru/companies/yadro/articles/1003670/ · Девиртуализация в C++, компиляторах и вашей программе https://habr.com/ru/companies/yadro/articles/938694/ 🎧 Послушать: · Подкаст «Битовые маски» с Константином Владимировым. Компилятор для CPU и GPU. Часть 1. LLVM и GCC https://engineer.yadro.com/podcast/compiler-cpu-gpu-part-1/ · Подкаст «Битовые маски» с Константином Владимировым. Часть 2. LLVM в GPU компиляторах. Стандарты С++ https://engineer.yadro.com/podcast/compiler-cpu-gpu-part-2/




