# Processing

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, 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).

## Philosophie

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

On peut écrire le traditionnel Hello world de cette manière :
et même ainsi, sans la moindre déclaration préliminaire :
Cependant, la méthode suivante est sans doute plus typique du fonctionnement de Processing :
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 :
et une boucle se construit de cette façon :

## Proce55ing

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.

## Extensions et projets alternatifs

Le projet Arduino, qui se base sur la philosophie de l'interface de Processing, comme son « ancêtre », Wiring, 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

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, 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

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.