Bon, on est vendredi, c’est bientôt le WE, on peut se lâcher un peu, non ?
(billet un brin technique, je m’en excuse auprès de mes lecteurs non programmeurs)
Maintenant, le sujet n’est pas si loin que ça des sujets habituels de ce blog, puisque mon idée, c’est de parler langage de programmation.
Donc, quand on veut programmer sur Internet, on a le choix, pour faire simple, entre deux options :
- Soit vous utilisez PHP, ou un autre langage de script.
- Soit vous utilisez Java, ou autre .NET
Il y a bien sûr tout un tas d’autres solutions, le propos de ce billet n’est surement pas de faire un dictionnaire des langages de programmations.
A mon avis, tout ça est loin d’être abouti.
Les langages de type script permettent de développer rapidement un service, mais l’idée même de ne pas être compilé et faiblement typé, fait que le risque de découvrir des erreurs « en ligne » est important.
De l’autre côté, les langages de type « java » débouchent bien souvent sur des systèmes lourds, complexes à mettre au point et à maintenir.
Tout cela n’est pas très satisfaisant.
Alors, si on devait refaire « ce monde là », on ferait quoi ?
Voici ma « shopping list » pour un langage idéal pour le web « de demain » :
De bons fondamentaux
A mon sens, un bon langage devra être :
- Objet
- Fortement typé
- Compilé
Donc, à ce stade, c’est plus Java que PHP ;).
Gestion native des sessions
L’une des caractéristique du Web, c’est la double contrainte, entre la nécessité de gérer de véritables applications en ligne, et un protocole « state less » : le serveur répond à une requête, et ne fait pas nativement le lien entre deux appels d’un même client (affichages de deux pages successives d’un même service, deux étapes du processus achat par exemple).
Ce point, hyper basique, n’est pas traité nativement par les langages. On se « débrouille » avec des couches applicatives, qui permettent de mettre en oeuvre des notions de sessions.
Mais le résultat ne simplifie pas les choses. A chaque appel, pour chaque page, le programmeur doit aller chercher les éléments de contexte, pour servir les bonnes informations au client. C’est compliqué, et c’est bien dommage de devoir repartir de si bas…
A mon sens, ce problème devrait être complètement « encapsulé » dans le langage.
Gestion native de la persistance des données
Bon, puisqu’on refait le monde, on peut bien bousculer le paradigme de la base de données.
La séparation entre le langage de programmation et la base de données est, à mon sens, complètement artificiel.
Et cette séparation pose des problèmes, de modèle (les langages sont objets, et la base de données est relationnelle), et de performance : la communication entre le langage de programmation et la base passe par des interfaces textes :
On transmet des ordres SQL en format texte à la base, et on récupère des chaînes de caractères en sortie. Tout cela est très peu performant.
Donc, la vrai bonne solution serait d’intégrer les deux.
Orienté Web, pour de vrai de vrai
C’est bien ce qu’à fait le PHP, qui, à la base, permet juste d’insérer quelques éléments dynamique dans du HTML.
Mais là encore, je ne suis pas convaincu par cette approche, qui consiste à considérer que le Web, c’est du texte HTML.
Pour moi, le Web, c’est plutôt un arbre (DOM). De loin, ça peut sembler être la même chose, mais en fait, en prenant un peu plus de hauteur, cela permet de manipuler des choses beaucoup plus intelligentes. Puisqu’on est au niveau des concepts, on peut avoir une manipulation intelligente de ces concepts, alors que le texte, il n’y a aucune chance de faire quelque chose d’intelligent !
Le langage manipulerait donc des arbres, et bien sûr, au moment de sortir la page, on génèrerait bien le texte HTML.
Traitement des erreurs multi vues
Si vous avez déjà programmé, vous savez qu’un programme, c’est 10% pour traiter les cas normaux, et 90% pour traiter les erreurs.
Et en plus, les erreurs, il y en a de tous types.
Mon idée, que je n’ai réellement vue nul part, c’est de permettre de programmer « en couche » (qui a dit culotte ?).
Intuitivement, l’idée, c’est de programmer comme on faisait un dessin annimé : on dessine le fond, puis, sur chaque calque, on rajoute des informations. On rajouterait donc un calque par type de traitement d’erreurs.
Quelle avenir pour une telle idée ?
Probablement aucun…
Mais je trouve ça sympa, de remuer les concepts, ça permet de « sortir du cadre » et de se poser tout un tas de questions passionnantes !