Image Based Language

An image-based language is a language in which the primary means of development consists of programmers modifying an (usually in-memory) image of the runtime environment. Typically, the image includes a set of facilities (browsers, editors, at the minimum an interactive shell or ReadEvalPrintLoop) for communication with the programmer; and the programmer can modify/extend these to his heart's content.

Some image-based languages allow the language facilities themselves to be modified; others do not. In many such languages, the line between "language implementation" and "application" is blurred. In many cases, the preferred method of saving one's work is to save the entire image; as opposed to saving a collection of text files containing source code which represent the program.

The canonical example of an ImageBasedLanguage is SmalltalkLanguage. Another example was LambdaMoo.

Advantages and disadvantages of this approach:


Can SQL be considered an "image-based" language? The "image" would be the database. The database can contain code, such as stored procedures, triggers, and views, as well as data. Admittedly, you can't redefine the database's primitives; for example you cannot view or redefine the implementation of the SELECT statement. A database can be used by multiple developers and users at the same time.

SQL is certainly an ImageBasedLanguage.

In some ways a Docker container (see https://www.docker.com/) also "feels" like an image. You can run a shell inside a Docker container, modify the container directly, and save the container as a new image, but the preferred method of developing a Docker container is to write a Dockerfile script which describes how to build the image from "scratch" (typically a pre-existing public image with a Linux system inside, but there is a real image called "scratch" which is genuinely empty).


EditText of this page (last edited December 15, 2014) or FindPage with title or text search