Lingo
| Image manquante Langage_progr.png image:Langage_progr.png |
| Cet article fait partie de la série Langages de programmation |
| Langages à objets |
| Ada 95 - C++ - C# Common Lisp Delphi - Eiffel - Java Nice - Oz - Python Simula - Smalltalk Visual Basic |
| Langages impératifs |
| APL - ASP - Assembleur BASIC - C - COBOL Forth - FORTRAN - Logo Pascal - Perl - PHP |
| Langages fonctionnels |
| Erlang - Haskell ML/OCaml - Oz Lisp/Common Lisp Scheme |
| Langages déclaratifs |
| Clips - Oz - Prolog |
| Langages concurrents |
| Ada 95 - Erlang Java - Oz |
| Langages balisés |
| HTML - SGML - XML Dialectes XML S-expressions |
| Voir aussi |
| Conception - Codage Tests - Optimisations |
Lingo est le langage de programmation qui accompagne le logiciel Macromedia Director.
| Sommaire |
Origine du nom
Le mot Lingo signifie en anglais argot, au sens de langage vernaculaire, langue spécialisée appartenant à un groupe précis (ex. l'argot des typographes).
Caractéristiques du langage
La syntaxe du Lingo est très simple et très lisible, elle rappelle (de loin) le Basic ou le Pascal.
Syntaxe
Voici un exemple de fonction :
on multiplie(a,b)
return a*b
end multiplie
Les fonctions commencent en effet toutes par on [nom de fonction][(arguments)] et se terminent par end [nom de fonction]. Lingo est un langage très laxiste, on est par exemple autorisé à ne pas mettre les parenthèses après le nom de la fonction (on multiplie a, b).
À noter, les variables sont typées dynamiquement et il n'existe pas de différencitaion entre le "=" d'afectation et le "=" de comparaison.
if a=1 then
b=2
else
if a="une chaîne" then
b=3
end if
end if
Après des années d'évolution syntaxique, Lingo est devenu un langage "pointé" assez classique et, donc, très lisible.
Director est un logiciel dédié à l'interactivité. Par conséquent Lingo permet l'interception facile d'un grand nombre d'évènements tels que : preparemovie (avant l'affichage), startmovie (au moment de l'affichage), mousedown (clic maintenu), mouseup (clic relâché), etc. Certains scripts intercepteurs évènements concernent l'ensemble du programme, d'autres peuvent ne s'appliquer qu'à des objets précis, comme les sprites (occurrence d'un objet - par exemple graphique - sur la scène).
on mouseup
-- lorsque l'on clique sur l'objet auquel s'applique ce scipt''
if the mouseh<320 then
-- si la position horizontale de la souris est inférieure à 320
puppetsound(1, "bing")
-- on déclenche le son nommé "bing" sur la piste 1.
end if
end
Quelques éléments de syntaxe :
- les noms des variables peuvent contenir des lettres, des chiffres, ou le signe underscore. Elles ne peuvent pas commencer par un chiffre.
- on peut créer des symboles avec le signe dièze (#). Un symbole n'est pas une variable.
- par exemple dans maCouleur = #rouge, le mot #rouge ne signifie rien pour Lingo en revanche il permet un code lisible pour le programmeur.
- l'affectation se fait avec le signe =
- la comparaison se fait ainsi :
- = (égalité)
- < (inférieur)
- > (supérieur)
- <= (inférieur ou égal)
- >= (supérieur ou égal)
- les opérateurs sont les mêmes qu'il faille comparer des entiers, des chaînes, ou quoi que ce soit d'autre.
- les tableaux (listes) se creent ainsi
- monTableau = [] ou monTableau = [1,2"a",0,"b"]
- les tableaux peuvent contenir des tableaux
- monTableau = [[1,2],[1,5]]
- les tableaux peuvent être associatifs
- monTableau = [#age:24, #sexe:"masculin", #taille: 1.80]
- les commentaires sont précédés de deux tirets : --
Points, rectangles, quads
Lingo permet de manipuler des variables de coordonnées telles que les points, les rects et les quads.
- un point se note ainsi : point(10,10)
- un rectangle se note ainsi : rect(10,10,30,40) -- rectangle de 20pix de large et 30 de haut commençant au point 10,10
- un quad est une liste de 4 points. En manipulant les quads on peut déformer des rectangles.
- ex : [[[point(10,10),point(10,30),point(30,40), point(10,40)]]].
l'intérêt de ce genre de variables est que Lingo propose des fonctions prédéfinies permettant par exemple de savoir si un point donné est inclus dans un rectangle donné. Par ailleurs, on peut appliquer des opérations arithmétiques à ces variables. Exemple : point(10,10)+point(5,5) donnera : point(15,15)
Types de scripts
Il existe en fait trois types de scripts en Lingo (et c'est une source potentielle d'erreurs), qui prédéterminent l'utilisation qui pourra être faite desdits scripts :
- Les scripts dits "comportement", qui sont attachés à des objets précis tels qu'un Sprite (objet posé sur la scène) ou une Frame (une image, au sens de images/seconde, donc une unité de temps). On peut appliquer à ces scripts des fonctions prédéfinies ou non.
- Les scripts dits d'"animation", qui sont attachés à l'animation entière et qui peuvent par exemple stocker des fonctions auxquelles l'ensemble des objets doit avoir accès.
- Les scripts dits "parents" qui permettent de stocker des objets.
- un exemple de script parent :
property pNombre -- déclaration d'une variable interne à l'objet on new me, n pNombre = n return me end on incremente me pNombre = pNombre +1 end
Si ce script se nomme "nombre", on l'instanciera par exemple de cette manière :
monNouveauNombre = new(script "nombre", 10)
et on invoquera sa fonction "incremente" de cette manière :
monNouveauNombre.incremente()
- un 4e type de script existe : les scripts dits d'acteur, qui ne s'appliquent qu'aux objets stockés dans la bibliothèque et ont beaucoup de défauts, à commencer par celui qu'il est laborieux de retrouver les scripts d'acteur que l'on a crées.
Implémentations
Le Lingo est un langage propriétaire, il n'en existe donc qu'une seule implantation.
Avenir
Dans sa version MX2004, le logiciel Director accepte l'usage de deux langages différents : le Lingo, et une implémentation de Javascript/ECMAScript adaptée. On peut imaginer, à terme, que Lingo disparaîtra.
