Projet Moonscript, le (dépot de) bilan

Le post-mortem du projet Moonscript.


Pour les nouveaux et pour ceux qui n'auraient pas suivi (on les comprend), le projet Moonscript est un projet personnel de type tabula rasa en matière de paradigme de programmation. L'idée de base était bien de rejeter en bloc tout ce qui existe en langages de programmation puis de tout refonder (reconstruire) à partir d'un seul outil puissant et bien fondé: la théorie des catégories bicartésiennes fermées. Il s'agissait d'un projet fou uniquement compréhensible pour quelques informathématiciens passionnés. La version actuelle Moonscript 0.6 est sans doute la dernière version du projet. 

Comment rendre compte de l'expérience de quelque chose d'une abstraction aussi stratosphérique ?

D'abord il faut le vivre, pour éprouver l'excitation d'être à l'aube de quelque chose d'entièrement nouveau, une telle sensation on ne peut la rencontrer plusieurs fois dans une vie. Je peux dire que je l'ai vécue une fois et que j'en suis heureux. Moonscript, comme son nom l'indique, était dans la Lune et n'avait pas les pieds sur Terre. À mon avis je devais le faire car la vie professionnelle n'offre pas d'opportunités aussi détachées des réalités.

Ce qui a bien marché c'est l'implantation des structures habituelles (entiers, tableaux indexés, listes, queues, ensembles, dictionnaires, tas et files de priorités). Grâce à l'élégance toute mathématique de la théorie sous-jacente au code, toutes ces structures sont modélisées avec une concision et une sûreté inégalées. À ce stade là je n'utilisais que les notions (assez) bien maîtrisées de catamorphisme et de paramorphisme.

Ce qui n'a pas du tout marché en revanche c'est l'ajout du TAD (Type Abstrait de Données) graphe.
J'avais déjà tout ce que je désirais dans ma librarie de TADs, il ne me manquait plus que les graphes. Je voulais absolument avoir les graphes et les algorithmes associés, car c'est typiquement ce qui n'est pas fourni par les autres langages, et donc ça devenait comme un plus-produit, une raison d'être et d'exister pour mon langage. J'anticipais que d'éventuels utilisateurs seraient avant tout atirés par un confort inégalé pour manipuler les graphes et les concepts associés (transposé, connexité, dualité, clique, isomorphisme,...).

Et c'est là qu'est réapparu le fantôme d'une scission fondamentale que je croyais avoir enterrée d'un seul grand coup de marteau-pilon. N'importe quelle introduction sur les graphes vous le dira, il n'y a que deux façons d'implémenter un graphe :

  • soit à l'aide d'une liste d'adjacence
  • soit à l'aide d'une matrice

J'ai choisi la liste d'adjacence dans le style de Martin Erwig.

Le problème: je n'obtiens pas un TAD graphe mais seulement l'implémentation de ce TAD. Moonscript ne fait pas la distinction classique entre interface et implémentation. Cette distinction interface / implémentation est une idiosyncrasie de la programmation modulaire et de la programmation par objets, or Moonscript n'est ni un langage modulaire ni un langage de programmation par objets. Du coup j'ai une implantation mais je ne peux pas l'utiliser car aucune interface n'est disponible.

La solution: elle réside forcément dans la théorie des catégories bicartésiennes fermées. Puisque c'est mon seul et unique paradigme. Après mûre réflexion je suis arrivé à me convaincre que les métamorphismes offrent le type de transformation que je recherche. Ils font la conversion interface-implantation et vice-versa. Malheureusement j'ai beau googliser je ne trouve qu'une seule publication sur les métamorphismes. Assez pour me convaincre que je suis sur la bonne voie mais trop peu pour que je m'y engage. Une seule publication cela veut dire que la notion est sans doute encore très récente, pas assez étudiée, en tout cas pas assez pour être implantée dans un langage de programmation. Avant de lire cet article je ne savais même pas ce qu'est un métamorphisme. Autant dire que je dois abandonner. Pourtant je ne suis pas si loin du but. Dommage. J'y reviendrai peut-être un jour.

Pour ceux qui s'en souviennent je m'étais vanté d'une promesse de suivi/commentaires par un logicien reconnu. Il n'en a rien été. Aucun contact en 1 année.

Laissez un commentaire

5 Commentaires

  • Je n'ai rien compris au contenu mathématique de ce post, mais je me joins à toi pour dire que c'est dommage. Peut-être t'es-tu lancé dans une aventure trop grande pour toi ? Et comme tu dis, rien ne t'empêche d'y revenir plus tard. smile

  • Sans doute quelque chose de trop grand pour moi. Ça n'est probablement qu'une question de temps avant que quelqu'un d'autre le fasse à ma place. C'est souvent comme ça dans l'informatique: par exemple qui aujourd'hui se souvient de NetScape Navigator ?

    C'était une bonne école, ça m'a bien endurci. Maintenant je vais faire quelque chose de plus terre-à-terre, histoire d'avoir (enfin) des utilisateurs et une expérience professionnalisante. Dans l'idéal ce serait la rencontre entre OCaml, un langage atypique, et Aerie's Guard, une communauté pleines de personnalités attirées par la littérature, l'informatique de loisir, les gameplays innovants, les jeux de rôles et leurs univers étranges.

    Ce sera toujours SpiceGuid, mais (enfin ouf ) descendu de sa tour d'ivoire.

  • L'histoire de l'homme qui rêvait de créer la pâtisserie parfaite en regardant une vitrine de boulangerie, et qui fut arrêté lorsqu'il comprit qu'il devait faire intervenir la fusion froide pour synthétiser la crème. smile

    Pour ma part, j'ai déjà essayé de me planter dans "ton" Mooscript, et du haut de mon niveau insuffisant en mathématique (largement insuffisant), je n'ai pas saisit un copec.

    Du moins, je télécharge et je conserve. On verra ça dans dix ans. razz

  • Je ne sais sur quelles sites tu as présenté le projets, mais as-tu pensé à créer des applications permettant de montrer les capacités de MoonScript sans trop noyer les personnes dans la théorie, car j'ai l'impression que pour beaucoup de personnes, programmeurs ou pas, tout cela nous semble bien abstrait.

    Autre chose, vu que la version 0.6 est la version « final » n'a-tu jamais penser à proposer des paquets RPM ou DEB pour les distributions GNU/Linux ? Cela permettrait sans doute d'avoir quelques retour suite à sa diffusion par ce biais. Idem pour Windows, donner un procédure permettant de savoir comment l'installer serait utile.

    Et ne désespère pas, même s'il n'a pas de succès immédiatement, cela peut venir plus tard. smile

  • Merci à Sainte Rita, la patronne des causes désespérées.

    Tu n'as pas du bien saisir mon approche du projet. Le but n'est pas de créer des applications, le but est d'explorer de nouveaux espaces paradigmatiques. C'est du "défrichage", au stade ou j'en suis on ne peut rien créer de concret, et même pour créer quelque chose d'abstrait c'est difficile (même avec le bagage adéquat).

    En gros c'est une technologie de Xel'Naga. Ça n'est pas la peine d'essayer de démocratiser la chose. Dès le départ je savais que je serai l'unique "utilisateur". C'était un projet pour gonfler mon ego, pas pour aider l'humanité.

    Un dernier mot: Merci à Zeami, la patronne des tartines de confiture.

Laissez un commentaire

Vous devez être connecté pour commenter sur le Refuge. Identifiez-vous maintenant ou inscrivez-vous !