C ++ jest hybrydą nie dlatego, że pozwala pisać kod w stylu C, ale dlatego, że obsługuje kilka paradygmatów programowania, takich jak proceduralne, obiektowe i ogólne. C ++ nie zmusza cię do jednego sposobu robienia rzeczy, i to jest jego siła, ponieważ różne problemy można łatwiej rozwiązać za pomocą różnych paradygmatów.
IMHO, byłoby lepiej, gdyby język / kompilator zmusił do pewnego stopnia programistów do napisania bardziej eleganckiego kodu.
Następnie musisz zdefiniować, co oznacza elegancki . Następnie musisz sprawdzić, czy twoja definicja elegancji jest odpowiednia dla wszystkich problematycznych domen i platform, dla których używany jest C ++. Styl kodowania, który jest elegancki do pisania edytora tekstu dla systemu Windows, może całkowicie nie nadawać się do pisania systemu osadzonego.
Rozważ napisanie kodu C ++ do działania na procesorze DSP. Po pierwsze, kompilator C ++ dla tego DSP może po prostu nie obsługiwać niektórych funkcji C ++, takich jak strumienie. Po drugie, jesteś poważnie ograniczony przez szybkość procesora i być może pamięć, więc niektóre funkcje C ++ mogą po prostu zabić twoją wydajność. Na przykład może być konieczne unikanie funkcji wirtualnych ze względu na szybkość. Takie rozważania radykalnie zmieniłyby twój styl programowania w porównaniu do tego, czego używałbyś na PC, a C ++ pozwala na to.
Podsumowując, C ++ to ogromny i skomplikowany język z wieloma funkcjami. Istnieje wiele powodów, dla których jakikolwiek podzbiór tych funkcji może nie mieć zastosowania do konkretnego projektu: szybkość, przenośność, obsługa kompilatora, a nawet doświadczenie i znajomość programisty. Z tego powodu wymuszanie przez programistę korzystania z niektórych funkcji w przeciwieństwie do innych do dowolnego zadania jest złym pomysłem. Pomyśl o Javie, gdzie język nakazuje, że każda funkcja musi być metodą klasy. Jest tak wiele przypadków, w których tworzenie klasy tylko do zawijania metody jest niewygodne i niepotrzebne, a jednak musisz to zrobić, ponieważ zmusza cię do tego język.