Lingo est le langage de script qui accompagne le logiciel Macromedia Director.
L'auteur du Lingo est le développeur John Henry Thompson. La lingo a été enrichi par de nombreuses sociétés ayant développé des xtras, dont Intel, Ageia, Havok...
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).
Contrairement aux langages de niveau 4 les plus répandus (BASIC, JavaScript...), Lingo ne reproduit pas les concepts de la programmation à l'identique mais les remanie à sa façon en vue d'une application efficace et simple. Afin de marquer la distinction il utilise des termes différents, par exemple le "tableau" est renommé "list", une classe est appelée "parent script"...
Lingo utilise actuellement la syntaxe BASIC.
Lingo avait au départ une syntaxe verbose dérivé du langage HyperTalk utilisé dans le logiciel auteur HyperCard distribué sur les MacIntosh à partir de 1986. Il a été prévu au départ pour être le plus lisible possible pour les anglophones.
set mavariable to 10
go to frame 20
set word 4 of montexte to "bonjour"
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érenciation entre le "=" d'affectation 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 enfoncé), mouseup (clic relâché), etc.