Это чтоб жизнь скучной не казалась
Нет, просто ставились такие амбиционзные цели, как (1) совместимость с языком Си; (2) zero overhead. И то и другое, как по мне, далось дорогой ценой. Совместимость с языко Си привела к тому, что отсутствуют модули, а присутствуют include, которые всё-таки родились больше из-за того, что первые Си программы жили рука об руку с ассемблером, и нам надо было описать, что же написано на ассемблере. Ну и быстро сделать. zero overhead... ООП вообще не оптимальная техника написания софта с точки зрения перфоманса, особенно с учётом хешей, ... Поэтому экономия на инициализации переменных даёт дофига проблем, где-то вылазит в обработке исключений в конструкторе (и деструкторе), но... какого-то профита почти не даёт