mardi 23 septembre 2008

Une tortue avec Processing

J'ai découvert récemment Processing (parfois écrit Proce55ing), un langage de programmation/environnement pensé pour des réalisations "artistiques" : images, animations, sons et 'interactions'.

Basé sur le Java, la syntaxe semble assez proche du Javascript, assez concise et simple. Le typage est statique en revanche. Dans l'ensemble, c'est plutôt bien fait : la prise en main se fait en quelques petits essais... Par exemple :

Exemple (Le code)

Pour information, cet environnement est disponible sous toute plateforme, et en diverses implémentation (Javascript, Ruby...). Pour avoir un peu joué avec Shoes, je retrouve là une bonne partie de ce qui a inspiré _Why pour sa conception... L'un des côtés intéressant, outre l'environnement vraiment simplissime, c'est l'assez grand nombre de bibliothèques (3D, traitement du son et du signal, XML, Vidéo, PDF...) même si elles sont parfois un peu "orientée Mac" (QuickTime entre autre...). Notamment, Arduino et Wiring dans l'interfaçage physique, me paraissent particulièrement intéressants : avec un matos de base relativement abordable (à partir de 20€ pour les cartes), les possibilités sont très grandes... (Je vous laisse chercher.)

Allez, un petit code rigolo pour illustrer :

Turtle :

J'ai essayé de faire une petite version, assez simplifiée, du langage Logo (langage de programmation où l'on dessine avec une tortue).

Le "coeur" est implémenté dans un premier fichier "turtle_lib.pde".
La méthode setup(), comme son nom l'indique, est une méthode d'initialisation qui est systématiquement appelée (si existante) par Processing avant la méthode principale. Elle ne peut être rappelée par la suite. La fonction noLoop() indique à l'interpréteur que les instructions qui seront données par la suite n'auront pas à être répétées (par défaut, le contenu de la méthode draw() est exécuté de manière cyclique, notamment pour les animations et les captions diverses : souris, clic, etc... Ici, ceci est inutile et gênant).
Les méthodes suivantes sont les méthodes de base du Logo : move pour avancer le crayon d'un nombre donné de pixels, turn pour changer sa direction, changeColor pour changer sa couleur et son opacité, raisePen et putPen pour le lever le crayon (celui-ci n'écrit donc plus lorsqu'on le déplace) et le (re)poser, respectivement.

Voici un petit exemple d'utilisation : les instructions se trouvent dans la méthode draw() qui constitue la méthode "principale" de tout programme Processing.


Exemple de la tortue (turtle_ex.pde)

Non, ce n'est pas très joli... mais c'est de la faute à la tortue !

Références :

Dans le même genre...

Amusez-vous bien !

3 commentaires:

Lefty a dit…

donc, si je pige bien, adieu la souris, goodbye le mulot, exit le trackpad, et bienvenue à la tortue qui va remplacer ça.
bon
pour faire un clic, on appuie sur les yeux (beurk!)?

Anonyme a dit…

J'avoue que je vois assez mal l'intérêt d'un langage spécialisé dans le dessin.

Après tout, on pourrait au moins utiliser un DSL dans un des langages que tu cites (ou dans un autre).

Sobe a dit…

@ Lefty :

Pas besoin d'appuyer sur les yeux : tu ordonnes, et la tortue fut. Pas de "beurk" donc.

@ Poulet : Disons que l'un des intérêts est que c'est probablement plus accessible pour quelqu'un débutant en programmation. Par exemple, je doute que les élèves de l'école des arts d'Aix soient pour la plupart des gros hackeurs, mais la majorité devrait être capables de s'en sortir assez rapidement avec cet environnement.
J'avoue que pour ma part, le fait d'avoir ça dans un coin "séparé" le rend à la fois "futile" et agréable, ce qui me semble important pour ce genre d'appli.