Dialects, Variants, Versions and Implementations


Computer languages evolve, and are related to one another in rather complex ways. Almost every language can be regarded as an improved version of something else. Sometimes it's hard to know where to draw the line and say, "This is a separate language".

LISP is a prime example. What started out as a single language has evolved into a large family of languages with complex relationships.

Fine Distinctions

Generally, we can distinguish:

Dialects, such as Scheme and Common LISP.
 
Dialects have major differences, and are certainly considered by their users to be distinct languages.

 

Variants, such as Kyoto Common LISP and Allegro CL.

Variants are intended to be the same, but have certain features which make them incompatible. Variants are often the result of commercial products offered by different vendors.

Versions, such as the Scheme revisions RRS, R2RS, R3RS and R4RS.

Versions arise as a language matures. A series of revisions will be issued, causing small changes in the language.

Implementations

Implementations are designed to run on particular machines or operating systems, and will usually have special features added to take advantage of their environment.
As an extreme, it has been suggested that if command line options are present, each choice of options could be considered a distinct language.

By Any Other Name

A language's name is not always an accurate guide to its identity.

What's In, And What's Out?

It may also be debatable what features are to be included in the definition of a language and what are to be regarded as external features.

Brand Names

You might wonder why we do include in this list a number of commercial products such as Visual C++. Usually these items offer non-standard extensions to the base language. This was particularly true in the varieties of BASIC and Prolog. One could argue that in a strict sense Microsoft C and Borland C for example are distinct languages.
Another reason for including entries of this type is that many languages are proprietary, appearing only in a certain product. Such languages may be distinctive and interesting, and deserve to be here. On the other hand we don't want the list to become a catalog of commercial programming products.