Pour la suite je ne parle pas particulièrement de toi.
Quand je vois la teneur des reproches (car je sens plus de la colère qu'autre chose, et on voit les notes dès que l'on soutient le C++), je pense que c'est surtout idéologique.
En gros on reproche :
des trucs trop compliqués à utiliser, et que l'on se force à utiliser
des trucs pas nécessaires et qu'on a pas à utiliser, et que l'on se force à utiliser
le fait d'avoir à utiliser des librairies (on verra dans quelques temps les « Go, Rust, Swift, Elixir, Nim » quand ils commenceront à avoir des librairies à gauche et à droite, qu'il y aura les problèmes de versionement, etc ; pensez à python, javascript qui étaient vachement mieux que tout).
c'est lent à compiler ; les entêtes pré-compilés ?
les templates : ok, on sait, tout le monde le sait, le dit, le pense
Le C++ est le seul langage que je connaisse avec des parties « partiellement dépréciés par usage », c'est à dire qu'il y a des parties du standard que les développeurs considèrent qu'il ne faut plus utiliser (sauf dans certains cas ou si on est suffisamment bon). Bref l'usage veut que l'on affine le langage pour son projet à fin de le rendre exploitable.
Le problème c'est que je n'ai jamais vu ces bonnes pratiques décrites de manière un minimum formelle et qu'il faut composer avec l'existant. Si ton logiciel commence son développement en 2018 pas de problème pour faire du C++17 avec un compilateur qui implémente à peu près tout le standard, mais globalement je pense que beaucoup de monde joue avec des sources qui sont en C++03, donc au revoir les smart-pointers.
C'est assez dommageable à un langage qui tente de se simplifier, mais qui le fait uniquement en ajoutant des couches de simples par dessus des couches complexes. On a accès aussi facilement à n'importe quelle façon et il faut avoir un bon niveau pour connaître la bonne méthode (il faut être bien à jour sur sa connaissance du standard).
le fait d'avoir à utiliser des librairies (on verra dans quelques temps les « Go, Rust, Swift, Elixir, Nim » quand ils commenceront à avoir des librairies à gauche et à droite, qu'il y aura les problèmes de versionement, etc ; pensez à python, javascript qui étaient vachement mieux que tout).
Non c'est un peu plus compliqué que ça. La définition de ce qui est ou non dans une bibliothèque standard est un problème via comme la programmation et il y a plusieurs démarches possibles qui sont aussi liées aux propriétés du langages (par exemple en fonction de son typage). Ici ce qu'il est reproché c'est d'être très poussé pour des usages pointues et d'avoir des lacunes pour des usages très généraliste. Si je crée mon langage BarmicML avec tous les algo machine learning dans la bibliothèque standard, mais absolument rien pour faire des tableaux, listes, map, dictionnaires, set ou autres collections ça serait bizarre, non ?
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Donc pour résumer...
Posté par barmic . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 3.
Le C++ est le seul langage que je connaisse avec des parties « partiellement dépréciés par usage », c'est à dire qu'il y a des parties du standard que les développeurs considèrent qu'il ne faut plus utiliser (sauf dans certains cas ou si on est suffisamment bon). Bref l'usage veut que l'on affine le langage pour son projet à fin de le rendre exploitable.
Le problème c'est que je n'ai jamais vu ces bonnes pratiques décrites de manière un minimum formelle et qu'il faut composer avec l'existant. Si ton logiciel commence son développement en 2018 pas de problème pour faire du C++17 avec un compilateur qui implémente à peu près tout le standard, mais globalement je pense que beaucoup de monde joue avec des sources qui sont en C++03, donc au revoir les smart-pointers.
C'est assez dommageable à un langage qui tente de se simplifier, mais qui le fait uniquement en ajoutant des couches de simples par dessus des couches complexes. On a accès aussi facilement à n'importe quelle façon et il faut avoir un bon niveau pour connaître la bonne méthode (il faut être bien à jour sur sa connaissance du standard).
Non c'est un peu plus compliqué que ça. La définition de ce qui est ou non dans une bibliothèque standard est un problème via comme la programmation et il y a plusieurs démarches possibles qui sont aussi liées aux propriétés du langages (par exemple en fonction de son typage). Ici ce qu'il est reproché c'est d'être très poussé pour des usages pointues et d'avoir des lacunes pour des usages très généraliste. Si je crée mon langage BarmicML avec tous les algo machine learning dans la bibliothèque standard, mais absolument rien pour faire des tableaux, listes, map, dictionnaires, set ou autres collections ça serait bizarre, non ?
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)