C ++ є гібридом не тому, що дозволяє писати код у стилі С, а тому, що він підтримує декілька парадигм програмування, таких як процедурна, об’єктно-орієнтована та загальна. C ++ не змушує вас робити один спосіб робити речі, і це його сила, тому що різні проблеми можна вирішити легше, використовуючи різні парадигми.
IMHO, було б краще, якби мова / компілятор змусили певною мірою програмістів написати більш елегантний код.
Тоді спочатку потрібно визначити, що означає елегантний . Тоді вам доведеться перевірити, чи відповідає ваше визначення елегантного всім проблемним областям і платформам, для яких використовується C ++. Стиль кодування, який є елегантним для написання текстового процесора для Windows, може бути абсолютно непридатним для написання вбудованої системи.
Розгляньте можливість написання коду C ++ для запуску на DSP. По-перше, компілятор C ++ для цього DSP може просто не підтримувати певні функції C ++, як-от потоки. По-друге, ви сильно обмежені швидкістю процесора та, можливо, пам'яттю, тому деякі функції C ++ можуть просто вбити вашу ефективність. Наприклад, вам, можливо, доведеться уникати віртуальних функцій заради швидкості. Такі міркування кардинально змінить ваш стиль програмування порівняно з тим, що ви використовуєте на ПК, і C ++ це дозволяє.
Підводячи підсумок, C ++ - це величезна і складна мова з безліччю функцій. Існує багато причин, через які будь-який підмножина цих функцій може не застосовуватись до конкретного проекту: швидкість, портативність, підтримка компілятора або навіть досвід та знайомство з програмістом. З цієї причини, що мова змушує розробника використовувати певні функції на відміну від інших для будь-якого завдання, це погана ідея. Подумайте про Java, де мова передбачає, що кожна функція повинна бути методом класу. Існує так багато випадків, коли створювати клас просто, щоб перетворити метод, незручно і непотрібно, і все ж вам доведеться це робити, тому що мова вас змушує.