J'évoquais dans mon précédent billet l'intérêt d'utiliser le même langage de programmation sur le client et le serveur. Un autre avantage dont je n'ai pas parlé est que cela diminue les pré-requis, les connaissances nécessaires pour commencer à bidouiller le Web. Il est pour moi essentiel que chacun ait des rudiments de programmation. Heureusement, j'y reviendrai, ces jours-ci de nombreux projets tendent à rendre l'apprentissage de la bidouille de Web de plus en plus accessible. Unifier les environnements entre le client et le serveur va également contribuer à rendre l'apprentissage plus aisé. Mais il reste une barrière difficile à franchir, celle du langage de programmation. Car JavaScript est un langage nettement plus complexe que les BASIC, HTML, ou PHP par lesquels nombre d'entre nous ont commencé à bidouiller. Pas sûr que cela soit à la portée des Michus [1]. Or la démocratisation du Web impose que cette sympathique petite famille puisse acquérir son autonomie, ne pas dépendre de leur turbulent petit neveu geek, qu'ils puissent eux aussi bidouiller le Web. Mais je me pose la question du choix du langage. Si me semble bonne l'idée d'utiliser le même à tous les niveaux, pages, serveur et navigateur, je ne suis pas sûr que JavaScript soit le meilleur candidat pour devenir ce langage universel du Web. Et pour préciser, je me demande si Python ne serait pas un meilleur choix.

L'idée n'est pas totalement stupide : certes JavaScript est hégémonique sur le Web, côté client du moins. Mais il souffre d'un certain nombre de problèmes qui rendent son apprentissage malaisé:

  • de grosses différences entre les différentes implémentations. Même si des normes existent, leur implémentation laisse encore parfois à désirer, et un code pourra fonctionner avec un moteur mais pas avec un autre, sans raison particulière. On peut donc difficilement se concentrer sur l'apprentissage du langage en faisant abstraction du contexte;
  • il n'existe pas de site de référence. La plupart des autres langages ont des sites Web où on trouve l'essentiel de la documentation et des didacticiels. Quelqu'un qui cherche des informations sur JavaScript n'a souvent d'autre alternative que d'utiliser un moteur de recherche. Et, conséquence du point précédent, les documentations sont souvent liées à une implémentation, comme par exemple dans le MDC;
  • son modèle objet n'est pas facile à appréhender : essayez par exemple de trouver sur le Web une explication simple du concept d'héritage par prototype;
  • peu de bibliothèques sont disponibles: hormis pour des fonctions nécessaires côté client (manipulation de documents HTML), on dispose de bien peu de bibliothèques : la manipulation de chaînes de caractères, les dates, les expressions régulières... c'est à peu près tout. Rien par exemple pour la communication avec un système de fichier, des bases de données... CommonJS s'est donné pour but de remédier à ce manque, mais le projet n'en est qu'à ses débuts;

De son côté, Python n'est pas totalement absent côté client. Il est notamment un langage de premier choix pour Mozilla: on le retrouve un peu partout sous le capot, et des développeurs comme Atul Varma, qui en sont fan, veillent régulièrement à ce qu'on puisse utiliser Python avec Ubiquity, Jetpack, etc. J'avais déjà évoqué cela il y a quelques mois. Des projets comme jsbridge tissent des ponts entre les deux langages. Et si JavaScript est pour l'instant hégémonique dans les pages Web, Python est lui très populaire dans l'éducation. De nombreuses ressources sont disponibles pour l'utiliser pour apprendre la programmation. Il me semble plus facile d'accès, plus pédagogique.

Bien sûr, il existe des dizaines d'autres environnements pour apprendre à coder. Mais je crois que Python est la seule alternative crédible à JavaScript, car il est très populaire, réellement utilisé aussi bien dans des projets industriels que pédagogiques, et a déjà un pied dans le navigateur.

Je pense qu'on est à un tournant, les mois à venir vont voir la popularisation à la fois d'outils pour bidouiller le Web en utilisant juste son navigateur, et de solutions globales effaçant les barrières entre le client, le serveur et le navigateur. JavaScript semble bien parti pour devenir le langage universel du Web, mais il n'est peut-être pas trop tard pour Python. Je ne connais pas du tout la communauté Python, mais ai peut-être l'honneur de compter un ou deux de ses membres parmi mes lecteurs. Pensez-vous que la communauté pourrait s'investir pour renforcer le support de Python dans le navigateur, dans des outils comme Ubiquity et JetPack ? Afin d'offrir une alternative crédible à JavaScript comme langue universelle du Web. Le choix de cette langue est très important, car il va avoir un impact sur la démocratisation de la bidouillabilité. J'espère de tout cœur que le débat aura lieu et permettra de choisir la meilleure technologie, puissante et accessible à tous et toutes.

Notes

[1] monsieur et madame Michu, utilisateurs types des générations d'avant les Y. En soutien aux camarades de WoMoz je m'engage désormais à ne plus stigmatiser uniquement Madame Michu;