I. AL▲
AL est un langage éducatif conçu pour les plus jeunes (à partir de 10 ans), mais s'adressant plus généralement à tout débutant désireux d'apprendre la programmation.
AL est conçu comme un langage d'introduction aux langages professionnels. Il simplifie certains aspects et syntaxes. AL est au C / Java / Python ce que Logo est au Lisp.
Il donne également la possibilité d'explorer un large panel de mécanismes, donnant l'opportunité aux développeurs chevronnés d'explorer des terrains qui ne sont pas forcément disponibles dans tous les langages.
Ses IDE, Algoid et AlgoIDE, ont été conçus pour être simples à installer et à utiliser ; ils incluent en un seul logiciel : l'IDE, le langage, le debugger, le stepper, les librairies de haut niveau dont celle permettant de créer ses premiers jeux vidéo.
Algoid est également l'environnement parfait pour faire ses premiers pas. Tout y est sécurisé, les accès aux ressources de l'ordinateur ont été limités afin que le système ne puisse pas être endommagé.
I-A. Principe▲
AL est fondé sur un constat simple. Il existe aujourd'hui un très grand nombre de langages de programmation destinés à l'apprentissage, mais :
- soit ils sont simples, mais se cantonnent à un seul paradigme (comme le SmallBasic ou le très célèbre Logo) ;
- soit ils sont très complets, mais leur installation, leur syntaxe, leurs idiomes et leur mise en place sont difficiles à acquérir et à comprendre.
AL tente de réconcilier ces deux opposés en proposant une syntaxe simple (20 mots clés) tout en étant multiparadigme.
L'organisation des paradigmes est pensée pour être aussi progressive que possible ; d'abord par les structures impératives, puis l'utilisation des fonctions et du fonctionnel. AL introduit ensuite l'objet et grâce à la MOP, des notions d'orienté aspect.
De plus AL est un langage de haut niveau. Toutes les considérations, telles que le typage, les pointeurs, le garbage collector, sont à la charge du langage.
I-B. Syntaxe▲
La syntaxe AL a été imaginée pour être la plus proche possible des standards utilisés par les professionnels. C'est-à-dire les langages issus du C.
- Parce qu'apprendre une nouvelle syntaxe prend du temps, autant en apprendre une qui soit la plus proche de ce qui est utilisé dans l'industrie.
- Parce que cette syntaxe est concise, moins de mots à taper sur de petits écrans, comme les smartphones.
On pourrait reprocher à la syntaxe C d'être rebutante et difficile à appréhender par les plus jeunes. Mais il n'est pas certain que de remplacer des accolades par des mots clés comme begin / end facilite réellement l'apprentissage d'un langage. Ce sont les mécanismes du langage et les aspects de bas niveau qui représentent une vraie difficulté.
Pour faciliter cette approche, AL dispose de différentes simplifications.
- La structure de contrôle Loop a été rajoutée à l'ensemble disponible en C. Cette structure permet d'introduire les boucles sans nécessairement connaître les conditions et l'incrémentation comme l'oblige la structure for :
loop (
10
)
{
// répète 10 fois
}
- La syntaxe est conçue pour être mnémotechnique ; toutes les structures se déclarent de la même façon et ont la même logique, seuls les mots clés changent :
set
n =
0
;
set
f =
function
()
{}
;
set
o =
object
()
{}
;
set
a =
array
{}
;
- Toutes les structures sont anonymes de façon à simplifier leur imbrication et leur utilisation.
set
o =
object
()
{
set
p =
object
()
{
set
f =
function
()
{}
;
}
;
}
;
o.
p.
f()
;
- L'exemple ci-dessus montre une autre simplification du langage. En AL, les classes ne sont pas définies, mais ce sont les objets qui le sont. Chaque objet référence son prototype, ce qui lui permet d'être cloné n'importe où dans un programme.
set
q =
new
o ;
- Le point-virgule, bien que conseillé, est rendu optionnel.
- Le typage est implicite, mais les opérateurs déterminent le transtypage local, limitant ainsi les ambiguïtés (comme c'est le cas du + en JavaScript) :
set
a =
"7"
+
"7"
// = 14
set
s =
7
..
7
// = "77"
I-C. Concepts avancés▲
Pour les plus chevronnés, voici l'idiome clé du langage AL.
AL est régi par l'idiome suivant :
- en AL, tout est expression, même array, function et object ;
- or, en AL, toute expression est un objet ;
- donc AL dispose de : meta-array, meta-function et meta-object (MOP).
AL offre donc la possibilité de modifier toute structure déjà définie.
Bref, AL est un langage d'apprentissage qui n'est pas réservé aux plus jeunes. Il peut accompagner l'apprentissage d'algorithmes complexes.
II. Intérêt d'Algoid▲
II-A. Multiplate-forme▲
Deux IDE sont disponibles pour apprendre à programmer en AL : Algoid sur plate-forme Android et AlgoIDE sur desktops (Windows, MacOS, Linux et Raspberry Pi).
Ils sont conçus comme le langage AL, simples, mais complets.
II-B. Fonctionnalités▲
Ces deux IDE mettent à disposition un éditeur avec coloration syntaxique, autocomplétion et code-snippets.
Ils offrent également un débogueur, un explorateur de portée et un mode d'exécution pas à pas. Ces derniers sont des outils indispensables à la compréhension du cheminement d'un programme au travers du code source.
AlgoIDE débogueur et explorateur de portée
II-C. Fun▲
Algoid s'inspire du projet Logo. Il permet aux débutants, à partir de fonctions simples et d'un référentiel relatif, de mouvoir la petite tortue.
Une fois les notions de base acquises, comme les boucles, les branchements, les fonctions et les objets, il est possible de masquer la petite tortue et de programmer ses premiers jeux vidéo.
Algoid met à disposition une librairie graphique 2D simplifiée :
Note : une librairie axée sur les sprites et permettant la gestion des animations et du son est en cours de réalisation.
II-D. Installation▲
Algoid et AlgoIDE sont des applications écrites en Java et donc très simples à installer et portables.
II-D-1. Android▲
Algoid est une apk Android. Pour la télécharger, il suffit de se rendre sur le play store à l'adresse suivante.
II-D-2. Windows / MacOS / Linux▲
AlgoIDE est le portage de l'app android sur PC. Il est exécutable comme applet directement depuis un navigateur web à l'adresse suivante (rien à installer autre que Java).
Pour une utilisation offline, algoIDE est également disponible sous forme de jnlp Java WebStart à l'adresse suivante. Il suffit de double-cliquer pour la lancer, comme toute application standard. Les applications WebStart ont pour avantage de toujours maintenir à jour la version du logiciel si l'ordinateur est connecté à Internet.
II-D-3. Raspberry Pi▲
Une version optimisée d'AlgoIDE est maintenant disponible sur le Pi Store à l'adresse suivante.
Le programme d'installation se charge de tout.
II-D-3-a. Soft-Float▲
Si vous possédez une distribution Soft-Float de Raspbian, l'installation nécessitera celle de l'openJDK :
sudo apt-get install openjdk-7
-jre
Une fois le JRE ou le JDK installés, il vous suffit de télécharger le jar ici, puis de le lancer avec la commande suivante :
java -jar AlgoIDE-release.jar
II-E. Portabilité▲
Seul l'IDE et l'environnement d'exécution ont été réécrits entre les plates-formes Android, desktop et Raspberry Pi, ce qui signifie que les programmes ont le même comportement d'une plate-forme à l'autre. Seuls les événements dus aux périphériques sont différents. Lors du portage d'un script entre Algoid et algoIDE, il faut veiller à modifier les événements.
Par exemple, algo.onTouch devient algo.onDrag sur PC, algo.onTap devient algo.onClick, etc.
II-F. Performances▲
AL a pour but d'être ludique et quoi de plus ludique que de créer ses propres jeux vidéo ? Les jeux sont des programmes gourmands en calculs et bien que développé dans le langage Java, AL a été optimisé pour afficher des performances similaires aux autres langages interprétés.
Le benchmark suivant a été réalisé en comparaison à JavaScript et à Python sur un Mac :
Note : afin d'améliorer davantage les performances, un analyseur sémantique est à l'étude.
Ces performances permettent d'imaginer toute sorte de programmes dont le calcul est central, tel un mini-moteur 3D, par exemple :
III. Matériels pédagogiques▲
III-A. Communautaire▲
À l'heure où tout l'Internet s'invite dans nos foyers, sur nos ordinateurs, nos tablettes et notre smartphone, il serait dommage qu'un logiciel éducatif ne tire pas parti de cette abondante connectivité.
Algoid met en place différents outils communautaires pour faciliter les échanges entre les participants : un forum, accessible depuis l'application, permet d'échanger du code source entre l'IDE et les pages en un seul clic. Le forum est accessible à cette adresse.
Des outils de partage par mail, Facebook ou Google+ sont également disponibles via la plate-forme de partage Android.
Un blog sur Google+ permet également de suivre l'évolution du logiciel. Àcette adresse-ci.
III-B. Tutoriels▲
AL dispose aussi d'une documentation complète en français et en anglais ici.
Des tutoriels sont également disponibles ici.
Ces tutoriels et exercices ont été inspirés par les travaux de Docteur Stéphane Ducasse, auteur de nombreux livres dont Squeak: Learn programming with Robots.
Ils font l'objet d'une traduction et d'une mise en page pour le site developpez.com qu'il n'est pas nécessaire de présenter ici.
En voici la liste (mise à jour régulièrement).
III-B-1. Partie I : Apprendre la programmation avec la tortue▲
III-B-2. Partie II : Programmation structurée▲
En cours de rédaction.
Pour accélérer la documentation, le projet Algoid recrute. Alors si vous avez un peu de temps à consacrer à de la rédaction, correction ou traduction, n'hésitez pas à me contacter sur CyaNn74 (at) gmail (dot) com
IV. Remerciements▲
Je tiens à remercier toute ma petite famille qui ferme les yeux sur ma geek attitude et me pardonne mon manque de présence… Du moins parfois.
Tout particulièrement mon fiston Tony de 12 ans qui m'a inspiré cette belle aventure le jour où il m'a posé la question suivante : « Papa, c'est quoi la programmation ? »
Je tiens également à remercier M. Stéphane Ducasse de m'avoir autorisé à m'inspirer de ses travaux et de ses exemples extrêmement bien choisis.
Un grand merci au Dr. Didier Besset et à Jérôme Layat, qui ont été d'un grand soutien durant ce long projet.
Merci également à toute l'équipe du forum developpez.com pour leurs lectures patientes, leurs corrections (plus que patientes) et leurs encouragements très appréciés. Tout particulièrement Feanorin et Thierry Leriche Dessirier pour leur relecture technique avisée et f-leb pour ses promptes corrections orthographiques.
Vos retours nous aident à améliorer nos publications. N'hésitez donc pas à commenter cet article sur le forum : Commentez
V. Annexes▲
Voici certains des codes sources des illustrations de ce tutoriel.
La rosace :
set
poly =
function
(
size,
n)
{
loop (
n)
{
algo
.
go (
size);
algo
.
turnLeft (
360
/
n);
}
};
ui
.
showAlgo();
loop(
20
)
{
poly (
70
,
10
);
algo
.
turnLeft (
360
/
20
);
}
Note : les codes sources ci-dessous sont assez longs, c'est pourquoi ils sont masqués. Pour les voir, cliquez sur la petite double flèche à droite de la zone de code.
Le jeu Breakout :
Le jeu Space invaders :
Celui du moteur 3D spline :
Tous ces codes d'exemples sont directement accessibles depuis l'application. Les algorithmes présentés s'étendent des plus simples aux plus complexes (comme les jeux présentés ici).