J'aime bien troller sur les différences entre les langages, mais j'avoue manquer un peu de temps, alors j'ai triché, je viens de chercher sur Google "java bad programmers", et j'ai trouvé ça qui résume une partie de ce que je voulais dire:
In general, Java's restrictions (when compared to C++) make it a little harder for bad programmers to write bad programs at the expense of making it somewhat harder for good programmers to write good programs. I suppose that whether you consider this a good thing depends on how many bad programmers you have to deal with [...]
Bien sûr, ce n'est qu'une partie du problème, et je ne suis pas sûr que la comparaison avec le C++ soit la meilleure chose à faire...
ou alors il faut voir ce que tu appelles bon programmeur
Un bon programmeur, c'est quelqu'un qui sait quand il est opportun d'utiliser une fonctionnalité avancée d'un langage, parce que ça rend le code plus élégant et plus facile à maintenir. Un mauvais programmeur, c'est quelqu'un qui n'a pas une idée très claire de ce qu'il fait, et qui choisit donc la manière de le faire un peu au hasard parmis toutes celles qu'il connait ou trouve sur le net.
Conséquence de cette définition, il vaut mieux limiter les possibilités du mauvais programmeur. Si tu lui donnes la possibilité de faire de l'héritage multiple, de surcharger les opérateurs ou, pire, de faire de la métaprogrammation, il risque de s'en servir à tort et à travers et de produire du code difficile à maintenir (et faux).
[^] # Re: Java
Posté par Yusei (Mastodon) . En réponse au journal Python et les décideurs. Évalué à 3.
http://home.pacbell.net/s-max/scott/re-java.html
Avec en particulier la conclusion:
Bien sûr, ce n'est qu'une partie du problème, et je ne suis pas sûr que la comparaison avec le C++ soit la meilleure chose à faire...
Un bon programmeur, c'est quelqu'un qui sait quand il est opportun d'utiliser une fonctionnalité avancée d'un langage, parce que ça rend le code plus élégant et plus facile à maintenir. Un mauvais programmeur, c'est quelqu'un qui n'a pas une idée très claire de ce qu'il fait, et qui choisit donc la manière de le faire un peu au hasard parmis toutes celles qu'il connait ou trouve sur le net.
Conséquence de cette définition, il vaut mieux limiter les possibilités du mauvais programmeur. Si tu lui donnes la possibilité de faire de l'héritage multiple, de surcharger les opérateurs ou, pire, de faire de la métaprogrammation, il risque de s'en servir à tort et à travers et de produire du code difficile à maintenir (et faux).