• [^] # Re: Namespace bits ?

    Posté par . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 10.

    Bah, techniquement, c'est quand même faux. Les syntaxes hyper-complexes du C++ moderne permettent la méta-programmation, avec derrière l'idée de remplacer le polymorphisme (qui a un coût à l'exécution) par la programmation générique (qui calcule tout à la compilation).

    Apparemment, pour certains développeurs, ce changement de paradigme, pour des raisons théoriques (calculer le maximum de choses à la compilation) et pratiques (gains de performance), justifie l'usinagazisation du C++ et l'imbittabilitabilisation du code. Ces développeurs sont assez influents pour infléchir la modification du standard dans ce sens, ce qui veut aussi dire que les gros acteurs économiques du développement C++ vont aussi dans ce sens. Parmi les éléments moteurs, il y a par exemple les développeurs des compilateurs, et les développeurs de bibliothèques (stl, boost...).

    Reste que j'ai parfois l'impression d'utiliser C++ dans un contexte tellement différent de ceux qui font de la méta-programmation qu'on n'a pas l'impression d'utiliser le même langage. Une grosse partie du C++17 permet de créer un méta-langage, issu d'une sorte de mélange entre le pré-compilateur C et du C++ perché, qui n'est pas destiné au commun des mortels. D'ailleurs, et ça ne date pas du C++17, de nombreux logiciels imposent l'utilisation d'un C++ allégé (sans templates, sans héritage multiple, sans pointeurs nus...) à leur développeurs, et vu la tronche du C++ 17, c'est pas près de changer. Le risque, c'est évidemment que les concepteurs du C++ se coupent de la base. D'un côté, on peut très bien dire que les dialectes simplifiés du C++ sont viables, et qu'on peut très bien décider d'ignorer complètement les templates variadiques et les constexpr. Mais il existe aussi un risque qu'on décide aussi de se passer du C++ tout court, histoire par exemple de pouvoir relire le code qu'un dev un peu trop spécialiste a pondu.

    Pour l'utilisation que j'en ai, par exemple, la programmation générique n'a que peu d'intérêt (en dehors de l'utilisation des bibliothèques qui les utilisent) ; la perte de la relation logique d'héritage me semble même rédibitoire. La tendance à utiliser les constexpr systématiquement me fait aussi froid dans le dos, avec en filigrane le retour des magic-values déguisées en constexpr dans le code plutôt que la lecture de l'ensemble dans paramètres dans un fichier (ainsi que l'instantiation des arrays à la compilation, etc). Au delà de la syntaxe ésotérique, il y a donc aussi le problème qu'à force d'être multiparadigme, C++ s'étale tellement qu'on peut légitimement se demander si c'est encore un langage de programmation.