"On ne fait que rajouter des gadgets, on pare de mots ronflants
(raffinement graduel, objets, réutilisation, fonctionnel, ...) des
pratiques que les bons programmeurs ont d’instinct.«
Le progrès est justement d’avoir pris une technique de développement existante qui était fait avec les petites mains du développeur tant bien que mal et de l’avoir inclus dans un langage de sorte que leur mise en oeuvre devient facile.
Oui on peut faire de l’objet avec un langage impératif. Avec un bon usage des pointeurs sur fonction, tu peux même simuler de l’héritage. Mais quel inconfort d’utilisation ! Personne ou presque n’utiliserait l’objet s’il fallait encore faire comme cela.
De même tu peux faire des fonctions d’ordre supérieur en C plutôt que d’utiliser un langage fonctionnel, mais si tu as besoin de fonctions d’ordre supérieur, il sera surement plus agréable d’écrire le code en ML.
Et quid du typage ? Trouves tu que le C et le Pascal ont une sécurité de typage satisfaisante ? (Même en compilant en -Wall sur gcc ?). En théorie bien sur, un bon développeur ne fera jamais d’erreur de typage. Sauf que tout homme est étourdi. Quand tu as des crash sur un projet de 6 millions de ligne de code qui occasionnent des indisponibilités tout ca parce qu’un mec a casté un pointeur en integer (vécu), crois moi tu regrettes que le langage n’ai pas empéché cette action et bloqué la compilation. Après oui le développeur n’avait pas à caster en int sont pointeur mais c’est un autre problème. L’empécher de faire cette connerie est déja un progrès.
Pour la gestion mémoire aussi, tu aimes les buffers overflows avec le C ? Bien sur, tu es un bon développeur et n’en fait jamais sans doute ? Ou plutôt tu es comme tout le monde et tu as passé parfois un peu de temps avec un debugger mémoire à trouver que tu avais écrasés certaines structures de données utilisées par malloc() en interne. Surement que l’on peut s’e satisfaire, mais l’empécher est un progrès.
»Par exemple, le « cloud computing » s’appelait « time-sharing » il y a une trentaine d’années.
Simplement,
les progrès du matériel, permettent de mettre effectivement en œuvre
des techniques existantes, mais il n’y a pas vraiment de progrès
conceptuels.«
Si le cloud »fonctionne« et si des plateformes PaaS voient effectivement le jour et sont satisfaisante cela sera déja un progrès. Rien que le fait de fonctionner avec un cluster de commodity servers est un progrès. Et nécéssite un travail important pour que cela marche à la fin.
Quand aux progrès conceptuels, allez voir dans les labos. Allez voir par exemple ce qu’est le model checking. Mais il faudra encore beaucoup de temps avant que tout cela ne soit intégré à nos outils. De même que des choses comme le garbage collector ont mis du temps à être intégré à nos environnements (de maniére efficace).
»Lorsque je regarde certains code source, je partage totalement votre
avis quant à la médiocrité voire la nullité de certains développeurs. "
Ah ca oui par contre. Et j’ajouterai que l’utilisation de la syntaxe du C dans d’autres langages est un désastre. Combien de gens formés correctement au C codent de la même façon en Java et ont des perfs de merde ? Dans ce cas le langage n’y est pour rien. Si Java avait une autre syntaxe au moins les gens seraient conscient du fait qu’ils ne savent pas coder dans ce langage et peut être apprendraient il à le faire (ou à utiliser un autre langage).