Du bon et du mauvais dans cet article.
Je suis d’accord avec vous sur un point : Le manque de développeurs qualifiés nuit grandement à l’industrie informatique.
Mais ceci me donne envie de hurler :
"Si l’on codait aujourd’hui les applications, en C ou en Pascal, comme
on le faisait dans les années 80, nos ordinateurs donneraient une
impression de vitesse et de fluidité dont on n’a pas idée.«
Et bien non. Pourquoi ne codez vous plus en C ou Pascal ? Parce que les applications se sont complexifiées De l’interface graphique kikoolol (plus en noir et blanc) à des fonctionalités nouvelles comme la correction ortographique qui se fait au fur et à mesure que vous tapez, le ’smart art’ pour faire à la volée des dessins sans se prendre la tête, le lissage des polices, et ne l’oublions pas l’augmentation de la résolution de votre écran etc, etc, ...
Or, il y a une limite à ce que le cerveau humain peut encaisser en terme de complexité. Il y a donc deux solutions, soit se limiter en termes fonctionnels, soit faire évoluer nos langages et outils pour pouvoir travailler plus efficacement. L’évolution des langages correspond à ce besoin : Modulo une perte en performance (qui est réelle mais peut être maitrisée si le développeur est compétent), vous diminuez la complexité du code et donc vous pouvez écrire un code plus gros sans bugs.
Lorsque les premiers gestionnaires de mémoire virtuelle sont apparus (il y a fort longtemps), c’était un jouet couteux et certains informaticiens trouvaient que c’était inutile et qu’un vrai développeur pouvait tout à fait s’en passer. Or, aucun système multi-tache ne serait fiable sans cette évolution (qui reste couteuse). La même chose pour le C qui fut un truc pour les »tafioles" car les vrais hommes codaient en assembleur ;) Mais essayez d’écrire Microsoft Word en 100% Assembleur et vous allez voir le résultat.
Après les jérémiades sur les performances de l’objet et même de langages décriées pour leur perf comme le java sont une histoire de mauvais développeurs qui éssaient de coder en Java comme ils codent en C ce qui donne des performances merdiques. Un bon développeur java (c’est rare et cher) approche les perfos d’un bon développeur C++ à quelques pourcent près. Dans certains cas, il peut même les dépasser à cause des optimisations permises par le JIT (qu’un compilateur statique ne peut pas réaliser). Maintenant comme peu de devs ont appris à faire de l’orienté objet correct, forcément le résultat est merdique. Mais la solution n’est pas de ne pas utiliser l’objet, juste de former les devs aux technos qu’ils utilisent.
Beaucoup d’informaticiens conspuent ainsi les langages plus évolués que le C, ils ont tort. Non seulement ces langages sont rapides si on prend le temps de bien les utiliser (mais la le fait que beaucoup reprennent la syntaxe du C est délétaire car les gens croient qu’ils vont pouvoir coder pareil en C qu’en Java ou PHP), mais en plus c’est le fait d’avoir accès à un niveau d’abstraction supérieur qui fait la différence car cela vous permet d’écrire vite et bien des applis complexes. Les langages à objets qui supportent l’introspection par exemple permettent d’écrire très rapidements des codes élégants, et simple à maintenir. Et même si on y perd un peu en performance, dans la plupart des projets, le gain dépasse largement le coût : Des dizaines de jours hommes économisés d’un coté contre 300$ de hardware en plus ? Et vous choisissez quoi ?
Enfin avez vous tant besoin de vitesse lorsque vous utilisez un ordinateur ? Dans la plupart des cas votre CPU ne fout rien. Dans les quelques pouillémes de cas ou vous avez besoin de perfo, rien ne vous empéche d’écrire en C la routine importante (voir de retoucher le code ASM produit si vous savez comment marche le pipeline), mais pour du boulot général, cela n’a aucun intérêt.