Science  People  Locations  Timeline
Index: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Home > Scheme programming language


 Contents
The Scheme programming language is a functional programming language and a dialect of Lisp. It was developed by Guy L. Steele and Gerald Jay Sussman in the 1970s and introduced to the academic world via a series of papers now referred to as Sussman and Steele's Lambda Papers.

Scheme's philosophy is unashamedly minimalist. Its goal is not to pile feature upon feature, but to remove weaknesses and restrictions that make new features appear necessary. Therefore, Scheme provides as few primitive notions as possible, and lets everything else be implemented on top of them. For example, the main mechanism for governing control flow is tail recursion.

Scheme was the first variety of Lisp to use lexical variable scoping (aka. static scoping, as opposed to dynamic variable scoping) exclusively. It was also one of the first programming languages to support explicit continuations. Scheme supports garbage collection of unreferenced data.

It uses lists as the primary data structure, but also has good support for arrays. Owing to the minimalist specification, there is no standard syntax for creating structures with named fields, or for doing object oriented programming, but many individual implementations have such features.

Scheme was originally called "Schemer", in the tradition of the languages Planner and Conniver . The current name resulted from the authors' use of the ITS operating systemITS the Incompatible Timesharing System was an early, revolutionary, and influential MIT time-sharing operating system; it was developed principally by the Artificial Intelligence Laboratory at MIT, with some help from Project MAC. ITS development was ini, which limited filenames to 6 characters.

1 Advantages of Scheme

Scheme, as all Lisp dialects, has very little syntax compared to many other programming languages. It has no operator precedence rules because there are essentially no operators— prefix notation is used for all function calls.

Scheme's macroMacro (meaning "large" or "wide") is also applied to macroeconomics, and macroscopic or "macro" lenses. Macro (meaning a kind of close-up photography) is found at Macro photography. A macro is an abstraction, whereby a certain textual pattern is replaced facilities allow it to be adapted to any problem domain. They can be used to add support for object-oriented programmingObject-oriented programming (OOP is a computer programming paradigm that emphasizes the following aspects: Objects packaging data and functionality together into units within a running computer program; objects are the basis of modularity and structure in. Scheme provides a hygienic macro system which, while not quite as powerful as Common Lisp'sCommon Lisp commonly abbreviated CL (not to be confused with Combinatory logic which is also abbreviated CL), is a dialect of Lisp, standardised by ANSI X3. Developed to standardize the divergent variants of Lisp which predated it, it is not an implementa macro system, is much safer and often easier to work with. The advantage of a hygienic macro system (as found in Scheme and other languages such as DylanDylan is a dynamic programming language created by a group led by Apple Computer. It was originally intended for use with Apple's Newton computer, but their implementation did not reach sufficient maturity in time, and they instead developed NewtonScript) is that any name clashes in the macro and surrounding code will be automatically avoided. The disadvantage is that the macro may not introduce any new symbols.

Scheme encourages functional programming. Purely functional programs need no global variables and don't have side-effects, and are therefore automatically thread-safe and considerably easier to verify than imperative programs.

In Scheme, functions are first-class objects. This allows for higher-order functions which can further abstract program logic. Functions can also be created anonymously.

Scheme has a minimalistic standard. While this can be seen as a disadvantage, it can also be valuable. For example, writing a conforming Scheme compiler is easier (since there are fewer features to implement) than a Common Lisp one; embedding Lisp in low-memory hardware may also be more feasible with Scheme than Common Lisp. Schemers find it amusing to note that the Scheme standard is smaller than the index to Guy Steele's Common Lisp: The Language (that is, about 50 pages).



Read more »

Non User