Je pense que je ne suis pas le seul à imaginer régulièrement comment créer un nouveau langage ou modifier les existants à ma convenance. Sans aller jusque là, en croisant ce qui se fait dans les différents langages, on trouve toujours des point intéressants qu’on aimerait voir copiés.
Voilà donc quelques unes de mes frustrations, parce que les exprimer permet de s’en débarrasser un peu et de se concentrer sur l’important : ce qu’on fait avec le langage.
Persistance du code en PHP
Chaque requête web recharge entièrement l’applicatif PHP. APC apporte une béquille indispensable mais ça reste au niveau de la béquille. Toute l’initialisation est à refaire à chaque fois. Ça fonctionne, mais j’aimerai vraiment un mode de PHP ou un framework web PHP qui permette de commencer directement au traitement des requêtes sans avoir à tout refaire de zéro.
Accesseurs en PHP
Toujours côté PHP j’attends depuis bien longtemps l’apparition d’accesseurs transparents pour les attributs des objets. Ruby, Python et Javascript ont chacun leur façon de faire. Là il ne s’agit pas de repiquer une syntaxe au langage voisin mais bien de combler un manque.
Sérieusement, je n’en peux plus de ces getX() et setX(). C’est encore plus pénible à l’utilisation qu’à la création.
Espaces de noms
Fut un temps je râlais beaucoup contre PHP mais ce dernier une bonne partie du retard qu’il avait. Mieux : Arrivé en dernier il s’est permis de parfois faire les choses plus intelligemment.
Dites, pourquoi n’ai-je pas d’espaces de nom en Javascript ?
Les « use » de PHP me manquent aussi en Ruby. Ils présentent une solution élégante et pour donner des noms courts en local à des classes qui viennent d’autres espaces de noms, mais ils permettent aussi les alias pour changer facilement une implémentation par une autre sans impacter le code.
Pendant qu’on y est, pourquoi pas d’auto-chargement en Ruby ? Si je charge X::Y::Z, j’aimerai bien que le langage se charge tout seul d’aller chercher le fichier X/Y/Z.rb. Ça fonctionne dans quasiment tous les autres langages mais Ruby continue de faire du spaghetti d’inclusion manuelle de fichiers.
Blocs et fermetures lexicales
Les blocs sont *la* fonctionnalité qui me fait utiliser Ruby. On peut certes faire beaucoup de choses similaires avec des fonctions anonymes en Javascript ou en PHP mais c’est juste moins élégant (et ça compte beaucoup pour se sentir à l’aise).
Par contre, sérieusement, la réception des paramètres dans les blocs est vraiment peu lisible. Le choix de la barre verticale comme délimiteur est juste illisible.
Le pire arrive avec les fermetures lexicales. Ruby laisse bien trop facilement utiliser par erreur une variable venant de la portée parente. La syntaxe pour forcer une variable comme locale ajoute encore plus au côté non lisible. |x, y=3; z| ? sérieusement ?
À côté de ça PHP et Python proposent des variables en lecture seule, ce qui limite la casse. PHP impose même de déclarer explicitement les variables à importer de la portée parente au lieu de déclarer les variables locales. Difficile à imaginer en monde Ruby mais assez confortable au final.
Et vous ? qu’est-ce que vous changeriez en premier ?
Laisser un commentaire