Philosophie d´anyflo
Anyflo est un système que je
développe depuis 1985, je le considère comme ma palette d’artiste. En
continuelle modification il n’est ni stable ni exempt de bugs, mais il
intègre les concepts les plus récents de la synthèse.
Je décline toute responsabilité quant aux dysfonctionnements du logiciel. Il
est protégé par l’A.P.P. (Agence pour la protection des programmes) sous le
numéro :
APP IDDN.FR.001.090005.004.S.P.1986.000.10000
Son téléchargement est libre, son utilisation
est gratuite, tous les fichiers sources sont accessibles. Des applications
construites par les utilisateurs, envoyées à anyflo.mail@gmail.com, vérifiées
et testées seront remises en ligne et disponibles gratuitement.
Composition
Anyflo n´est pas un système graphique dédié mais un langage permettant de développer très
rapidement des applications graphiques.
Il se compose:
D´un interpréteur du langage interne (proche du C).
D´un module graphique.
Éventuellement d´applications développées par l´utilisateur.
Comme ancien enseignant dans la filière "Art et Technologie de l´Image" (A.T.I.) de
l´Université Paris 8, dont l´un des principes de base est la "double compétence"
(artistique et technique), je fais l´hypothèse que les utilisateurs sont intelligents
et qu´ils préfèrent construire eux-même leurs propres applications (le système anyflo
a d´ailleurs largement contribué à la formation des premiers étudiants d´A.T.I. dans
les années 1985-1990).
Une connaissance élémentaire de la programmation, une compréhension des principaux
algorithmes de la synthèse d´images et de l´interactivité sont souhaitables mais ne sont pas
indispensables (l´utilisation de ce système peut même contribuer à leur acquisition).
Il est prévu que, lors de l´évolution du logiciel, de plus en plus de fichiers *.c
soient disponibles dans le dossier anyflo, afin d´en faire un produit open sources.
Accès
La version standard, en anglais, et une version française sont disponibles.
Des versions spécifiques à une langue particulière peuvent être obtenues par une
traduction partiellement automatique des fichiers env/*.h et des helps env/*.htm
avec l´utilitaire translate.func.
Il sera nécessaire de traduire les textes des fichiers *.htm (les mots du langage ainsi que toutes
les références par des liens sont automatiquement traduits).
Une version "parlant" plusieurs langues simultanément (à l´exclusion de la documentation)
s´obtient très simplement en sur définissant les noms de certaines commandes dans les fichiers
koma.h et komb.h.
La seule contrainte est que tous les mots du langages soient différents.
La commande generate message("ttt") permet de traduire ttt
dans une seconde langue L2 définie par voc2=L2 dans enva.h.
Une fois téléchargée la dernière version d´anyflo est
gratuitement et intégralement utilisable à plusieurs niveaux:
La compilation du code source en langage anyflo génére un pseudo assembleur directement
interprétable en C, et donc indépendant du système et de la machine. Ce code source
peut être:
directement tapé après le prompt ? et suivi d´un ENTER
ou être l´invocation d´une fonction f(p1,p2,...). Celle-ci peu être:
présente en mémoire, par lecture d´un fichier
f.func la contenant (écrit sous n´importe quel éditeur ne codant pas le texte),
ou par son écriture dans l´éditeur d´anyflo.
ou comme 1ère fonction d´un fichier portant le même nom f.func.
Niveaux
Des expressions composées de commandes multiples et obéissant
à la syntaxe du langage peuvent constituer des programmes.
Au niveau le plus élémentaire une telle expression tapée après le ?
de l´interpréteur et suivie d´un ENTER est directement interprétée
et exécutée.
À un niveau plus évolué un ensemble de telles expressions peuvent constituer des
fonctions qui seront exécutés par invocation de leur nom, soit directement dans
l´interpréteur,
soit dans le corps d´autres fonctions.
À un niveau plus évolué des fonctions peuvent être réunies dans
plusieurs fichiers .func et former des programmes de complexités arbitraires
(en utilisant des directives include).
À un niveau encore plus évolué certaines fonctions (écrites en langage anyflo) peuvent être
traduites en C et introduites dans l´interface soft utilb.c.
Les objets
Les objets d´anyflo peuvent être dynamiquement construits,
modifiés ou détruits permettant par exemple la programmation évolutive
(avec des algorithmes génétiques)
et/ou adaptative
(avec des réseaux neuronaux adaptatifs)
des animations, ce qui permet la réalisation d´installations interactives ayant ces propriétés.
La création d´un objet de type obj et
d´identificateur id s´écrit très simplement:
obj(id);
La définition d´une propriété propr et de paramètres p sur un tel objet s´écrit:
propr obj(id)=p;
propr obj(id);
retourne p.
Elle peut aussi être précisée à la création de l´´objet:
obj(id)propr(p);
N´importe quel utilisateur, quelles que soient ses compétences, peut travailler de façon transparente
à partir d´une application xxx fournie ou développée par un programmeur. Il lui suffit pour cela de lancer
le fichier java script xxx.js.
Un utilisateur n´ayant qu´une connaissance élémentaire du langage C peut développer
lui-même, en langage anyflo, ses propres applications en s´aidant des
helps,
des démos
et des exemples fournis.
Un ensemble de programmes écrits en langage anyflo peuvent constituer un système auquel
on donne un nom et qui sera lancé par l´évocation de ce nom dans un fichier java script.
Toutes les démos ont été construites sur ce modèle.
Un utilisateur ayant de bonnes connaissances en programmation C peut traduire ses
applications en C et les linker au logiciel (
en modifiant le fichier utilb.c et/ou en ajoutant de nouveaux
fichiers C dans le dossier anyflo), puis en recompilant les fichiers modifiés
et en relikant l´ensemble des objets et des librairies dans VisualC++), ce qui se traduit
par un gain en performance de l´ordre de 5.
Pour participer au développement d´anyflo il faut pouvoir disposer des sources, suivre les
protocoles standards, documenter les changements et les soumettre à des tests de validation.
En cas de succès ces changements seront définitivement intégrés à la version téléchargeable.