Lingo (programming language)

From Wikipedia, the free encyclopedia

The name Lingo has been used by several unrelated programming languages. Its most common version is a scripting language developed by John H. Thompson for use in Macromedia Director. HyperTalk is likely to have been one of the inspirations for Lingo.

Contents

[edit] Syntax 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 dot syntax, so that the code looks more like standard programming languages such as JavaScript or C++.

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

[edit] 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 ancestor property 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.

[edit] 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 ActionScript language 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.

[edit] 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.

[edit] Other languages called Lingo

  • A language called Lingo was released for software development under Windows. This version was designed as a compilable high level programming language.
  • Lingo is also a programming language for solving linear, nonlinear and integer optimization problems, first developed in 1988 by 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.

[edit] External links

[edit] Useful resources

[edit] Mailing lists

  • Direct-L is the biggest Lingo mailing list