mercredi 24 décembre 2008

Ruby 1.9

Ci-après une présentation de Ruby 1.9 par son créateur en personne... bon, cette vidéo date un peu (fin février 2008) mais je n'avais pas eu le temps de la regarder avant.

La présentation est relativement courte (une grosse demi-heure sans les questions) et va à l'essentiel. Ce que j'ai surtout retenu pour ma part, c'est que la version 1.8 est la dernière version stable assurant une compatilité ascendante avec les versions antérieures de Ruby alors que dans la 1.9, Yukihiro Mastumoto n'a pas hésité à casser ces compatibilités pour corriger ce qu'il considérait comme des erreurs de conception. Ce qui est important aussi avec la version 1.9 est le support d'Unicode (ce qui est un peu une des faiblesses de Ruby, si j'ai bien compris... mais bon je suis loin d'être un spécialiste en la matière) et une modification de la VM de Ruby qui semble apporter des améliorations de performance.

Le langage Factor

Ci-après, une présentation vidéo (un peu longue : un peu plus d'1h30) sur le langage Factor de Slava Pestov (qui est aussi le créateur de l'éditeur jEdit).

Factor est un langage de programmation dynamique concaténatif, dont les principales influences sont Joy, Forth, Lisp et Self.

Dans un langage concaténatif la composition de fonction est dénoté par juxtaposition contrairement à des langages applicatifs (traduction libre et probablement incorrecte de l'anglais "applicative language").

Dans un "applicative language" pour exprimer la composition de la fonction G de x par la fonction F vous serez amené à écrire quelque chose de la forme F(G(x)).
Dans un langage concaténatif comme Factor vous écrirez x G F.

Comme les autres langages concaténatifs et comme l'exemple ci-dessus le laisse entrapercevoir, Factor utilise une syntaxe postfixée, ce qui signifie que vous écrivez les arguments d'une fonction avant son nom. Ainsi pour afficher le fameux "hello world" vous écrirez en Factor la ligne suivante :
"Hello world" print

Pour ce qui concerne Factor, tout comme l'un de ces ancêtres - Forth - c'est un peu plus subtil : c'est un langage de pile ("stacked-based language"). Dans un langage de pile, vous n'appelez pas une fonction ou une procédure en lui passant des arguments, vous déposez des arguments sur la pile et la fonction (en Factor ou en Forth on parle de mot ("word") dépile le nombre d'arguments dont elle a besoin de cette pile. Ainsi dans l'exemple "Hello world" print, en fait le littéral "Hello world" est déposé sur la pile, le mot print le dépile et réalise un affichage.

La programmation avec Factor est donc particulièrement dépaysante si vous n'avez pas déjà tâter de Forth ou de la programmation sous les calculatrices scientifiques HP.

Si le coeur de Factor est clairement du Forth, il propose un système de macros proche de celui de Lisp. De plus, tout comme Smalltalk, Lisp ou Forth, c'est un véritable environnement de développement qui est mis à votre disposition, que chaque création de nouveau mot vient enrichir. Par contre, il n'y a pas à proprement parler d'IDE façon Eclipse ou Netbeans.

Néanmoins, si Factor est un langage original sur bien des points, son créateur a une visée pragmatique : le système est multiplateforme (Windows, Linux, Mac), il propose tout ce dont un développeur peut actuellement souhaiter (GUI, API réseau, API pour le développement Web, tests unitaires, expressions régulières, I/O, etc.). Bref, ce n'est pas juste un langage jouet dans lequel on ne fera que de petits programmes, mais bien un langage complet qui permet de tout faire.

Idéal pour les geeks qui ont envie d'apprendre un nouveau langage complètement différent et qui va bousculer leurs habitudes mais n'ont pas envie de se retrouver limité par les possibilités des bibliothèques. Si vous pensez comme Alan Perlis que "A language that doesn’t affect the way you think about programming is not worth knowing", alors il est clair que Factor vaut très certainement le temps que vous lui consacrerez.

Par contre pour apprendre Factor mieux vaut ne pas avoir de problème de compréhension avec l'anglais et si tutoriaux et autres documents pour apprendre le langage existe, on ne croule pas sous le nombre. Par contre l'existant, au moins pour démarrer est complet.



Quelques références :