Comments 21
Вот смотрю я на это дело и думаю...куда-то не туда С++ идет.
С элегантного языка он превращается в какого-то монстра, 90% функционала которого будут использовать 2-4% разрабов. Остальные дальше С++11 и с++14 никуда не пойдут.
В геймдеве рефлексия зайдет как родная🙂
Очень ее жду.
А можете пояснить, в какой вот механике игрового процесса без рефлексии не обойтись?
В механике игрового процесса? Без понятия!
В процессе разработки кода, реализующего эту механику и активно использующего фреймворки и скриптовые языки? Очевидно!
интеграция полей класса с редактором движка
их сериализация для сохранения/загрузки и передачи по сети
интеграция плюсовых объектов в скриптовом языке, используемом в движке
что только сейчас не творится в движках, чтобы это обеспечить. вплоть до ввода своей предварительной стадии парсинга плюсовых сорцов, чтобы догенерировать метаданные, которыми потом будет пользоваться движок. рефлексия это все починит
так Qt для этого moc файлы придумали еще 20 лет назад. Я так понимаю, что сейчас вот это всё должно промежуточные компиляции убрать?
moc-компилятор из той же оперы, да. кути компенсировали отсутствие метаданных своим решением поверх плюсов, потому что плюсы не давали/дают этого из коробки
А теперь понял для чего (одну из причин) зачем это внедряется. Спасибо.
Осталось только теперь в движках переписать все это дело, чтобы снизить зависимости и велосипеды. Но что-то мне подсказывает, что не многие этим озадачатся. Только если новые движки кто-то писать будет с опорой на эти изменения
2-4% использует это чтобы написать библиотеки, которыми будут пользоваться 90%.
Если вам кажется что после C++14 нет ничего полезного для обычного юзера, то вы вероятно плохо знакомы с ними..
Мне вот тоже забавно всякий раз читать подобные эсхатологические реминисценции, мол раньше был язык супер, а сейчас превращается в монстра. Будто кто-то под дулом автомата велит использовать все нововведения.
в приципе,обвинения понятны. Потому что знать это не нужно каждому, чтобы код писать; а вот чтобы читать чей-то код - может требоваться особенно-глубое знание.
С другой стороны, многие случаи Undefined Behavior умерли и многие оптимизации (такие как RVO) приходят в стандарт, а значит код становится быстрее и надёжнее даже если не использовать каких-то особых специальных знаний, а просто перейти на более новый стандарт
Я не против нового стандарта. Просто все эти нововведение вносят усложнения для понимания кода. Про это, в первую очередь, я думаю.
а вы видели код Анриала? я смотрел чутка и код Анриала, и сам писал кубики и на С и на С++ и на простом так скажем языке и чуть поинтереснее с ООП, с наследованием, на каком языке например было бы проще писать игры? ну так для Сишарпа нужна зависимость очень обьёмная для вызова окна, вот не знаю на каком языке тогда происзодительно и просто и удобно по синтаксису. простите
Жуть.
Чем дальше в лес тем больше жути. Но если претендуешь называться "Разработчиком на С++" то вроде как надо знать:)
А вообще двойственное ощущение от всего этого. С одной стороны рефлексия - очень нужная и полезная вещь в любом языке и в любой более-менее сложной задаче. С другой, то куда катится С++ уже не выдерживает никакой критики. По сути программистов вынуждают дописывать внутренности компилятора на весьма кривом функциональном языке.
Самое забавное что довольно неплохая эмуляция рефлексии была возможна еще в Си, на макросах (и нет это не boost.preprocressor, всё проще). Например, если нужно в одном месте (во избежание рассогласования) определить нечто, что могло бы разворачиваться в структуру, перечисление, список строк, использоваться для сериализации и т.п., то делается запросто.
С другой, то куда катится С++ уже не выдерживает никакой критики
Катится он в правильном направлении. Только уж слишком медленно и все время через какую-то боль
макросы - это уродливый костыль, невозможно уродливый. Крайне сложный для написания без багов, невозможный для отладки.
Тривиальное перемещение и рефлексия: реализуем фичу из C++26 в библиотеке