Openframeworks . Introduction

2008.10.11

Douglas Edric Stanley

OpenFrameworks est un environnement de création algorithmique, conçu pour et par des artistes pour faciliter la création de dispositifs interactifs et génératifs. Il s'inspire de la philosophie de Processing, et partage un certain nombre de ces fonctions : si vous vous sentez à l'aise avec les fonction de base de Processing vous serez prêt à passer le cap vers OpenFrameworks. (Il s'agit même, pour la petite histoire, de la continuation d'une bibliothèque que Ben Fry, un des concepteurs de Processing, a crée lorsqu'il était au Aesthetics+Computation Group au MIT media Lab, et qui a été utilisé par Golan Levin, aussi du ACG, qui a fini par la passer à Zachary Lieberman, son étudiant à l'époque.)

Avantages

Pourquoi un deuxième environnement de travail, alors ?

Tout d'abord pour des questions de vitesse et de qualité d'affichage et d'exécution. Processing est basé sur Java, alors qu'OpenFrameworks est basé sur C++, un langage beaucoup plus rapide, mais aussi un peu plus difficile à apprendre, surtout pour ceux qui n'ont jamais touché une ligne de code. En contrepartie de ce supplément d'apprentissage, le langage C++ vous permettra de travailler à la vitesse maximale de votre machine, et de faire certaines choses que vous ne pourriez jamais faire en Java, comme accéder aux ressources et interfaces natives de la machine ou du système d'exploitation. En gros, il vous permet d'être à la dernière couche de la machine, juste avant le système d'exploitation lui-même; autrement dit, vous allez créer des logiciels comme n'importe quel autre éditeur de logiciel ou de jeux.

Deuxièmement, le langage C++ est très proche de Java et lui ressemble énormément. De cette façon, OpenFrameworks a été conçu pour permettre aux personnes expérimentés de passer de l'un à l'autre dans leur apprentissage, ou en façon des besoins de chaque projet (chaque environnement a ses avantages et désavantages).

Enfin, OpenFrameworks vous donnera accès à des fonctionnalités -- par exemple la lecture vidéo -- qui sont difficilement accessible à l'intérieur de Processing ou n'ont pas été optimisés pour celui-ci.

Désavantages

Premier désavantage: OpenFrameworks ne marchera pas dans un navigateur, contrairement à Processing qui peut marcher soit en tant qu'application, soit en tant qu'" applet " à l'intérieur de votre navigateur web. OpenFrameworks ne marchera pas de cette façon (à moins que quelqu'un de la communauté décide de le faire, ce qui est parfaitement possible), pour la simple raison que les programmes que vous allez créer seront " compilés " uniquement pour le type de machine sur laquelle vous travaillez. Internet est profondément agnostique vis-à-vis la plate-forme de lecture (mac, Windows, Linux, peu importe), alors que les application " compilées " sont profondément spécifiques vis-à-vis la plate-forme de diffusion. Si vous voulez un programme pour mac et pour Windows, il va falloir copier le code du premier vers le deuxième (ou vice-versa) et " recompiler ", c'est-à-dire rtransformer votre code lisible par les humains en un nouveau code lisible par les machines ; cette transformation de votre code doit être fait en fonction de la machine destiné. Si vous voulez que votre programme marche sur des mac, il faut le compiler à partir d'un mac, et à partir de Linux pour des utilisateurs Linux, et ainsi de suite.

Deuxième désavantage: le langage C++ est un langage qu'on peut qualifier de " dangereux " dans la mesure que celui-ci permet un accès directe à certaines ressources de la machine, sans protection. Si vous avez une liste de 10 éléments, et vous demandez d'écrire à la onzième place, l'ordinateur ne vous empêchera pas de le faire, et finira par écraser le prochain variable qui avait la malheureuse chance de se trouver juste après votre liste de 10 éléments. Depuis quelques années les systèmes d'exploitation ont rajouté des protections entre les applications : vous ne pouvez plus déborder votre propre espace de mémoire pour aller écrire dans l'espace de mémoire des programmes voisins. mais à l'intérieur de votre propre programme, rien ne vous empêchera d'écrire accidentellement en dehors d'une liste et polluer votre propre programme. Il existe des moyens pour contourner ces risques, et des " bonnes pratiques " qui permettent dans la plupart des cas de facilement éviter ce genre de situation, mais il est important de savoir que le langage C++ a décidé d'enlever les garde-fou pour avoir à sa place des programmes qui exécuteront avec un maximum d'économie des ressources de calcul.

Je verrais également une troisième désavantage dans la philosophie même du langage C++ et de la façon dont celui-ci a été conçu. Évidement, pour un langage parmi les plus populaires au monde, beaucoup ne seraient pas d'accord avec mon opinion là-dessus. mais après avoir travaillé avec des langages et environnements comme Java ou Cocoa/Objective-C, j'ai franchement des doutes sur la bien fondé de certains choix du concepteur de ce langage. mais avec les gains de vitesse, et la possibilité de travailler sur les trois plate-formes principales (Linux/Windows/mac), couplé avec le fait que la plupart des applications sont elles-mêmes écrites dans ce langage, il peut être quand-même pratique de connaître ce langage et d'avoir accès aux milliers d'autres programmes et bibliothèques de la communauté open-source pour les intégrer dans nos propres projets.

Demo

made with openFrameworks from openFrameworks on Vimeo.

Références bibliographiques

(+) livres disponibles au centre de documentation de l'école