4470Fermer4472
WarptenLe 28/05/2020 à 23:02
Godzil (./4468) :
J’ai quand même du mal. Pourquoi Java et C++ arrivent toujours à faire plus compliqué que les autres pour.. absolument aucune bonne raisons?

Entre devoir faire du polymorphisme et me retrouver avec 400 fonctions virtuelles (donc avec un niveau d'indirection en plus) qui seront probablement des no-op dans les types de base, et avoir des templates qui me permettent de spécialiser une partie de mon code sans avoir de coût sur les performances (merci de ne pas me ressortir les vieux arguments, on est plus en 1980), le choix est vite fait. Le seul coût des template c'est le temps de compilation. Sauf que quand t'es sur un gros projet qui met environ 10 minutes à compiler **de base**, tu t'en fous d'avoir un ou deux template en plus. De façon réaliste, le temps de compilation, c'est pratique en devel, mais sur une release, on en a rien à cirer

En revanche la syntaxe des template est atroce je suis d'accord, en particulier avec tous les type_traits, heureusement que les concepts permettent d'améliorer un peu les choses (mais c'est du c++20)

Composition > Héritage

Quand au Java, pour les raisons très bien expliquées par Uther je considère les génériques dans ce language comme un énorme mensonge. C'est génial quand tu dois utiliser une vieille lib pour dette technique, qui renvoie `java.util.List<Object>`, mais elle pourrait renvoyer un List<T>, sauf que c'est pas fourni. Ducoup:

List<Object> libresult = ...;
List<T> container = (List<T>)(List)libresut;

x_x