mercredi 16 janvier 2008

EPFL::Restaurant

Voici mon dernier gadget Perl, le module EPFL::Restaurant. Il permet d'accéder directement aux menus hebdomadaires sur http://restauration.epfl.ch. La doc POD explique sommairement son utilisation.

Dépendances: LWP, HTML::TableExtract

vendredi 11 janvier 2008

Sus aux "programmeurs d'entreprise" !

Suivant une discussion plus ou moins aléatoire sur #scala/Freenode, j'ai suivi par hasard ce rant, qui m'a conduit à cet autre rant, sans compter celui-là. Amusant, suivant de près ce dernier lancé il y a peu de temps sur Slashdot.

Je n'ai absolument aucune compétence en Scala, n'ayant jamais rien programmé d'utile avec. Je n'en ai pas encore eu l'opportunité. Je n'ai donc pas d'intérêts particuliers à défendre Scala.

En revanche, je trouve absolument effarant et dramatique l'avis de ces prétendus programmeurs
, et reste béat devant l'absurdité et l'incohérence de leur discours. Par ou commencer ?

Le plus incroyable reste certainement celui qui prétend que les évolutions sophistiquées du langage Java le condamnent, que les génériques étaient une erreur monumentale, les casts étant un mécanisme bien plus naturel, et qu'il est hors de question d'y ajouter des fermetures, encore moins des horreurs fonctionnelles; que ces solutions sont bonnes uniquement pour des chercheurs isolés dans leur tour d'ivoire, mais que les "vrais programmeurs" qui travaillent sur des applications "business" n'en ont pas besoin.

Mais quelle sorte de programmeur prendrait donc une telle position ?? Ces gens seraient nés quelques dizaines d'années plus tôt, ils auraient été du lot qui défendait fermement le COBOL contre tous ces langages modernes bizarres et sans intérêts comme le C ou le Pascal... la récursion ? la programmation structurée ? baaah, ca sert a rien, c'est inutile, et le Lisp on en parle même pas..

Mon premier langage de programmation fut le Basic. Avec mes premiers pas d'autodidacte, j'ai produit quantité de code bancal et inélégant. Et au fur et a mesure que ce code expérimental boiteux s'accumulait, je commençais à identifier des problèmes récurrents.

J'ai découvert le Pascal, et la programmation structurée. Me suis-je dit "beeeeh, c'est compliqué, les gosub ca suffit, et la récursion ca s'émule avec des boucles quoi qu'on dise" ? certes non! Enfin, l'assurance d'un scope restreint, la fin de l'erreur de typo a la ligne 1642 qui plante le programme à la ligne 492...

J'ai découvert les pointeurs en C. Me suis-je dit: "beeeeh, c'est compliqué, c'est dur a comprendre, de toutes façons je peux tout faire avec des tableaux et des indices" ? certes non! enfin des noms cohérents pour des alternatives hétérogènes !

J'ai découvert Perl, premier contact avec les fermetures. Je ne savais même pas ce qu'était une fermeture. Pourtant, c'est grâce aux fermetures qu'une bonne partie du code perl faisant appel à des subs anonymes fonctionne correctement après un premier jet...

J'ai découvert Java. Après avoir travaillé sur plusieurs programmes relativement sophistiqués, j'ai mordu la poussière sur des erreurs de typage dynamique, je haïssais le système de types de Java et en particulier la technique hideuse du cast systèmatique pour utiliser une collection. Avec Java 5, j'ai découvert les génériques. Me suis-je dit: "beeeeh, les casts sont bien plus faciles, de toutes facons ces types sont juste un encombrement inutile ?" certes non ! les génériques me donnaient la garantie de l'absence d'erreurs de type dans mon programme, au prix de quelques modifications très intuitives.

J'ai découvert Haskell, le premier langage fonctionnel que j'ai utilisé sérieusement. Me suis-je dit: "baaah, les fonctions d'ordre supérieur, c'est inutile, c'est un passe-temps d'académique inutile dans la vraie vie ?" certes non ! j'abusais déja des map, grep et sort en Perl, et quel plaisir de pouvoir utiliser des callbacks sans définir une centaine de classes internes de 3 lignes, comme il est nécessaire de faire en java !

Que dire maintenant, des deux dirigeants d'AdaCore, qui se plaignent que l'enseignement de Java comme langage primaire dans les universités a été une terrible décision. Java "encouragerait les programmeurs a chercher des solutions toutes faites dans des librairies pré-existantes, plutôt que de développer ses propres routines plus performantes."

HELLOOO ? il me semble que l'immense majorité de la communauté s'accorde à dire que la performance était le problème de la dernière décennie; la loi de Moore n'a de loin pas l'air de s'essoufler, et les évolutions récentes des langages de programmation se font toutes dans la même direction: améliorer la ré-usabilité du code. Quel idiot choisirait de pénaliser un programmeur qui préfère chercher une solution standard, éprouvée, répandue, et optimisée par sélection naturelle, plutôt que de réinventer une roue octogonale chaque fois que l'occasion le permet ?

Ces gens m'énervent. ça m'énerve. Rhaaaah