Slava Pestov fait partie des "personnalités" que j'apprécie beaucoup dans le monde de l'open-source (avec Steve Dekorte et Chris Lattner), j'aime notamment beaucoup lire ses petits commentaires concernant Java (c'est un langage qu'il connaît bien, et au vu de la qualité du code de JEdit, on peut dire qu'il sait de quoi il parle). Ce qui me plaît aussi c'est le côté "low key" : ce n'est pas quelqu'un qui va se "faire mousser", mais la qualité de son travail est manifeste.

J'étais donc tout à fait ravi d'avoir l'occasion de le rencontrer à Montréal, et je n'ai pas été déçu. Slava nous a présenté Factor, en commençant par les aspects très simples (5 minutes pour expliquer la syntaxe), jusqu'au aspects plus avancés (polymorphisme, concurrence, interface graphique).

Au départ un peu dubitatif, j'ai rapidement été séduit par l'expressivité du code de Factor : il faut un peu de temps pour s'habituer à la syntaxe un peu "allemande" (l'opérateur est toujours à la fin), mais une fois passé ce cap (et intégré la notion de pile, très facile avec l'environnement interactif), on voit très vite la capacité d'abstraction du langage (et de sa librairie).

J'aimerais bien entrer dans les détails de la syntaxe, mais pour ne pas faire trop long, je vais m'attacher aux traits du langage (ce qui est finalement plus important ;) :

On rajoute à ceci une gestion de la concurrence (micro-threads), un système distribué (inspiré d'Erlang), et on a un quelque chose de vraiment "bleeding edge".

Mais le meilleur est pour la fin : l'intégralité de l'interface graphique de Factor est réalisée en OpenGL, et le modèle sous-jacent est basé sur le "Functional Reactive Programming" (provenant de Haskell), qui est à mon avis la prochaine étape dans l'interface graphique (j'y reviendrais).

Ah, oui, ça me fait penser : Haskell a beaucoup influencé certaines parties de Factor. Décidémment, même si je me dis que ce n'est pas demain la veille que je vais m'y mettre, il y a au moins une richesse énorme au niveau théorique...

Enfin, je dois mentionner que Slava n'a que 22 ans, et que ça m'a fait chaud au coeur de voir quelqu'un d'aussi passionné, avec un veritable goût pour la recherche et l'expérimentation, en dehors de tout contexte de mode ou de tendance. Bref, c'est le genre de rencontre qui motive et qui (re)donne beaucoup d'espoir !

Bon, finalement je ne peux clore cet article sans mentionner ce petit échange avec Slava : je lui demandais "mais alors, qu'est-ce qui est le plus important dans Factor, sa syntaxe, ou bien sa sémantique ?" (le genre de questions que j'aime bien, pour ceux qui me connaissent). Il m'a répondu ceci "la syntaxe de Factor est très simple, sa sémantique aussi, d'ailleurs -- mais ce qui fait vraiment l'intérêt de Factor, c'est sa librairie".

Cette réponse m'a énormément plu. Et puis pour finir (vraiment), Slava disait également qu'en utilisant Factor il a de plus en plus été poussé à "factoriser" son code, en écrivant des morceaux de code très simples, mais extrêment réutilisables. J'ai beaucoup apprécié ce lien à posteriori entre le nom de Factor et son effet sur notre "style".

Bref, même si ce n'est pas pour faire un projet concret, je pense que faire un peu de Factor juste pour s'aérer l'esprit serait un très bon exercice.... j'attends vos "hello world" ;)