Processing

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Processing.js)

Processing
Logo.
Image illustrative de l’article Processing

Date de première version 2001
Auteurs Ben Fry et Casey Reas
Dernière version 4.3 ()[1]Voir et modifier les données sur Wikidata
Influencé par Design By Numbers (en)
PostScript
Logo
Java
CVoir et modifier les données sur Wikidata
A influencé Arduino, OpenFrameWorks
Écrit en JavaVoir et modifier les données sur Wikidata
Système d'exploitation Multi-plateforme
Licence Licence publique générale limitée GNU et licence publique générale GNU version 2Voir et modifier les données sur Wikidata
Site web processing.orgVoir et modifier les données sur Wikidata
Extensions de fichiers .pde

Processing (autrefois typographié Proce55ing) est un environnement de développement libre (sous licence GNU GPL), créé par Benjamin Fry et Casey Reas, deux artistes américains. Processing est le prolongement « multimédia » de Design by numbers, l'environnement de programmation graphique et d'apprentissage du code créatif développé par leur enseignant John Maeda au Media Lab du Massachusetts Institute of Technology.

Processing est tout particulièrement adapté à la création plastique et graphique interactive et au graphisme de données, mais sa simplicité d'utilisation en fait aussi un bon support pour l'apprentissage de la logique de la programmation pour les non-programmeurs. Le logiciel fonctionne sur Macintosh, Windows, Linux, BSD et Android. Il est basé sur la plate-forme Java — il permet d'ailleurs de programmer directement en langage Java.

Plusieurs langages peuvent désormais être utilisés au sein de l'environnement Processing : Javascript, avec Processing.js, et p5.js[2], exécutables dans un environnement HTML 5 ou via node.js., REPL, Python ou encore R.

Les programmes réalisés avec Processing en mode Java peuvent être exportés sous forme d'applications indépendantes pour Windows, Linux ou Mac OS X (en réalité n'importe quelle machine disposant d'une machine virtuelle Java).

L'environnement de développement Processing.

Philosophie[modifier | modifier le code]

Le principe majeur de Processing est de simplifier au maximum la mise en œuvre des programmes. Le langage Processing, bien que très proche de langages tels que Java ou C++, se veut lui aussi assez simple. Adapté à la création graphique, Processing réclame moins d'efforts que Java pour effectuer des tâches simples telles que la modification d'une animation à intervalle régulier (qui permet des créations animées). Ses fonctionnalités sont limitées aux besoins des créateurs d'images 2D et 3D générées par programmation mais peuvent être étendues, par le biais de modules externes, à la capture d'un flux vidéo, à la génération et à la manipulation de son, à l'interfaçage des ports d'entrées-sorties, etc.

Processing s'adresse aux artistes en « arts numériques » et aux graphistes, notamment dans le domaine du graphisme d'information et dans celui du graphisme génératif.

Syntaxe[modifier | modifier le code]

On peut écrire le traditionnel Hello world de cette manière :

void setup()
{
    println("Hello World!");
}

et même ainsi, sans la moindre déclaration préliminaire :

println("Hello World!");

Cependant, la méthode suivante est sans doute plus typique du fonctionnement de Processing :

void setup()
{
    size(300, 300);
    background(0);
}

void draw()
{
    text("Hello world !", width / 2, height / 2);
}

Les gestionnaires setup() et draw() sont deux fonctions prédéfinies très importantes dans Processing. La première, setup(), est exécutée une seule fois au lancement du programme. La seconde, draw() est lancée à intervalle régulier, par défaut 60 fois par seconde.

Processing emploie un typage rigoureux et est sensible à la casse. La structure de ses fonctions de base (comparaisons, conditions, boucles, etc.) est familière pour les utilisateurs du C++ ou de Java.

Par exemple, une condition s'évalue ainsi :

if (a == 1)
{
    print("ok");
}

et une boucle se construit de cette façon :

for (int i = 0; i < 255; i++)
{
    print(i);
}

Proce55ing[modifier | modifier le code]

L'ancien nom de Processing, « Proce55ing », a été forgé ainsi car le nom de domaine Processing.org était pris et le site officiel a d'abord dû exister à l'adresse Proce55ing.org. À présent, les auteurs de Processing disposent du nom de domaine Processing.org, ils n'utilisent plus l'ancienne forme du nom et en déconseillent l'usage. Cependant, de nombreuses personnes abrègent le nom en p5[3].

Extensions et projets alternatifs[modifier | modifier le code]

Le projet Arduino, qui se base sur la philosophie de l'interface de Processing, comme son « ancêtre », Wiring[4], permet la manipulation de circuits électroniques extérieurs pour interfacer des capteurs ou des appareils électroniques divers (servomoteurs, leds…). Un autre environnement logiciel, Fritzing, a été conçu pour aider les utilisateurs au prototypage de matériel destiné à être utilisé avec Arduino et Processing.

Modes[modifier | modifier le code]

En plus du mode d'origine, nommé "mode Java" qui s'exécute à l'aide de la machine virtuelle Java, Processing peut optionnellement fonctionner avec d'autres langages et environnements :

  • le mode Android (depuis la version 1.5.1 de Processing) qui permet de produire des applications pour plate-forme Android et accéder aux capteurs spécifiques aux dispositifs mobiles (accéléromètre, GPS, etc.)
  • le mode P5.js[5], qui permet permet d'implémenter les fonctions de Processing à dans un contexte HTML5/Javascript et de maîtriser le DOM. Le langage utilisé ressemble à la fois à Processing (les fonctions ont les mêmes noms) mais les variables ne sont pas typées et les fonctions commencent par le mot-clé function et non par le type d'objet retourné par la fonction. La communauté de P5.js est très dynamique et produit des extensions spécifiques, par exemple dans le domaine de l'intelligence artificielle.
  • le mode Python, qui permet d'utiliser toutes les fonctions de Processing avec la syntaxe du langage Python.
  • Le mode R
  • Le mode Shader, qui permet de programmer des shaders en langage GLSL.

bibliothèques externes[modifier | modifier le code]

De nombreuses bibliothèques externes peuvent être ajoutées à Processing pour accéder à des ressources telles que la vidéo, le son (synthèse, contrôle, analyse), la reconnaissance faciale, la caméra Kinect, les moteurs physiques, etc.

Bibliographie[modifier | modifier le code]

  • Processing : S'initier à la programmation créative, par Jean Michel Géridan et Jean-Noël Lafargue, Éditions Dunod, 2016 (ISBN 9782100737840)
  • Processing : le code informatique comme outil de création, par Jean-Michel Géridan et Jean-Noël Lafargue, éd. Pearson 2011 (ISBN 978-2744024535)
  • Design génératif - Concevoir, programmer, visualiser, par Julia Laub, Hartmut Bohnacker, Benedikt Grob et Claudius Lazzeroni. éd. Pyramid. (ISBN 978-2350172156)
  • Processing, ouvrage collectif libre en français / Flossmanuals
  • Programming Interactivity, par Joshua Noble, O'Reilly, 2009
  • Algorithms for Visual Design Using the Processing Language, par Kostas Terzidis, Wiley, 2009
  • Pixels, Patterns, and Processing, par Daniel Shiffman, Morgan Kaufmann, 2008
  • Processing: A Programming Handbook for Visual Designers and Artists, par Casey Reas et Ben Fry, MIT Press, 2007
  • Visualizing Data, par Ben Fry, O'Reilly, 2007
  • Processing: Creative Coding and Computational Art, par Ira Greenberg, Friends of Ed, 2007
  • (en) Casey Reas et Ben Fry, « A Modern prometheus », sur Fondation Processing, — l'Histoire de Processing, racontée par ses auteurs.

Notes et références[modifier | modifier le code]

  1. a et b « Processing is open source and is available for macOS, Windows, and Linux. », (consulté le )
  2. (en) « p5.js | home », sur p5js.org (consulté le )
  3. « REAS C. Processing – Wiki – FAQ – Why Is it Called Processing? [en ligne] », sur GitHub (consulté le )
  4. Wiring, est un environnement de programmation et de prototypage de cartes électroniques pour des sketches artistiques ou autres
  5. « site officiel du projet P5.js »

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]