Я б фактично сказав, що файли заголовків не дуже великі, оскільки вони замучують інтерфейс та реалізацію. Завданням програмування взагалі, особливо для OOP, є встановлення визначеного інтерфейсу та приховування деталей реалізації, але файл заголовка C ++ показує вам як методи, успадкування, так і публічні члени (інтерфейс), а також приватні методи та приватні члени (деяка частина реалізації). Не кажучи вже про те, що в деяких випадках ви вказуєте вбудований код або конструктори у файлі заголовка, а деякі бібліотеки містять шаблон шаблону в заголовках, що дійсно змішує реалізацію з інтерфейсом.
Первісний намір, я вважаю, полягав у тому, щоб кодом можна було використовувати інші бібліотеки, об'єкти тощо без імпорту всього вмісту сценарію. Все, що вам потрібно, це заголовок для складання та посилання. Це економить час і цикли таким чином. У цьому випадку це гідна ідея, але це лише один із способів вирішення цих питань.
Що стосується перегляду структури програми, то більшість IDE надають таку можливість, і є багато інструментів, які виганяють інтерфейси, роблять аналіз коду, декомпіляцію тощо, щоб ви могли бачити, що відбувається під кришками.
Що стосується того, чому інші мови не реалізують ту саму функцію? Що ж, тому що інші мови походять від інших людей, а ті дизайнери / творці мають інше бачення того, як все має працювати.
Найкраща відповідь - дотримуватися того, що виконує робота, яку вам потрібно зробити, і робить вас щасливими.