- Lingo (programming language)
The name Lingo has been used by several unrelated programming languages. Its most common version is a
scripting languagedeveloped by John H. Thompsonfor use in Macromedia Director. HyperTalkis likely to have been one of the inspirations for Lingo.
yntax of Macromedia Lingo
When Macromedia Lingo was created, the syntax was designed to mimic spoken language, so it would be easy for beginners to get started. You could write whole HyperTalk-like sentences like:
if sprite 5 is visible then go to the frame
Note that in "go to" statements the "to" is optional. Also note that unlike other programming languages, "go" statements reference frames in Director's Score, not particular lines of code.
Although it is still possible to use the old syntax, the latest version of the language fully supports
The equivalent in new scripting style would be:
if sprite(5).visible then _movie.go(_movie.frame)
This format uses elements of the
Document Object Model, introduced in Director MX 2004. The syntax in prior versions would be like:
if sprite(5).visible then go the frame
Usage of Macromedia Lingo
Macromedia Lingo is embedded into Macromedia Director, leaving to Director the low-level details of graphics and OS interaction.
Object-oriented programming(OOP) is encouraged by both the language and the Director community. However, OOP is not the only way; this offers Director programmers speed and flexibility in development as they work in both a timeline and a programming structure.
There are 3 types of scripts in Macromedia Lingo:
*behavior scripts are attached to a sprite to control that sprite's properties and movement. They make it easy to program in an object-oriented way, as you can directly see the relationship between the programming and the item they are attached to. They can also control or interact with other sprites, making them a true object.
*movie scripts are not attached to sprites nor can they be instantiated as Objects. They are available throughout the program (movie) and are especially useful for holding global handlers and initializing global variables at the start or end of the movie.
*parent scripts are used to "birth" (create instances of) an Object into a Variable using the "new" command. These objects can control sprites and other media remotely, without being attached to any one sprite, may be used to control data or other non-displayed items, and are useful for recursion routines such as pathfinding. A Parent script can be used to create or destroy an object at anytime, freeing them from the confines of the score that a Behavior is limited to.Behavior and parent scripts encourage good object-oriented programming. Movie scripts are not as OOP-oriented; however, they can still be used to make "black-box" handlers, where other objects can input raw data and receive answers back, without knowing the inner workings of the box. Using the strengths and ease-of-use of Director's programming methodology, with the advantages of OOP makes for a powerful and fast programming environment.
Lingo supports object inheritance by a slightly idiosyncratic system: a script can have an
ancestorproperty which references another object (usually also a script, although other objects such as cast members can also be ancestors). Properties and methods of the ancestor are inherited by the parent. Behavior scripts are also a kind of ancestor of the sprites to which they are attached, since properties and methods of the behavior can be accessed by reference to the sprite itself. In this case, we have a kind of multiple inheritance, as one sprite may have several behaviors.
Imaging in Macromedia Lingo
A very powerful part of the language is Imaging Lingo. It was introduced when Director version 8.0 arrived. It gives the user the power of image manipulation with simple commands. There are some similarities to functions of image applications (like
Photoshop), that make it easy to create visual effects. Since then imaging has also been added to Adobe Flash's ActionScriptlanguage with the Flash BitmapData object. As this included more sophisticated commands, Director was also updated to allow conversion between the BitmapData object and its own Image objects.
3D in Macromedia Lingo
In Director 8.5, a full 3D engine was included for the first time. Lingo was updated substantially to support the new 3D objects and now includes a well-featured (if by now slightly out of date) set of 3D commands. An Xtra was also created to enable use of the Havok 3D Physics engine.
Other languages called Lingo
* A language called [http://www.lingolanguage.i12.com/ Lingo] was released for software development under Windows. This version was designed as a compilable high level programming language.
* A programming language based on
Smalltalkwas developed for the Rekursivprocessor developed by Linn Smart Computing in Scotland, UK. This language was called [http://www.erg.abdn.ac.uk/research/projects/lingo.html Lingo] and is significant because the manufacturers successfully obtained a trade mark in the UK.
* Lingo is also a programming language for solving linear, nonlinear and integer optimization problems, first developed in 1988 by [http://www.lindo.com/products/lingo/lingom.html Lindo Systems Inc.] This language is still in production.
These other languages are perhaps not as well known as the Macromedia language. However, a legal anomaly remains in that the legal trademark of the word 'Lingo' in the UK is not held by Macromedia, but by Linn.
* [http://www.jmckell.com/ Animation Math in Lingo] - Great tutorials for beginners and experts.
* [http://www.deansdirectortutorials.com/ Dean's Director Tutorials] - Tutorials ranging from the basics of Director to advanced programming with Lingo.
* [http://www.directorforum.com Directorforum - Director User Group]
* [http://director-online.com/ Director Online] - Articles and forums on various Director topics.
* [http://www.mcli.dist.maricopa.edu/director/ DirectorWeb] - One of the oldest Director resource sites. Exists in archive mode now.
* [http://www.lingoworkshop.com/ Lingoworkshop] - Multiple demos with source code available.
* [http://www.mediamacros.com/ MediaMacros] - Hundreds of free scripts, opens source games, and a database of Xtras (Plugins).
* [http://listserv.uark.edu/archives/direct-l.html Direct-L] is the biggest Lingo mailing list
Wikimedia Foundation. 2010.