Scheme programming language

From ArticleWorld


The Scheme programming language is a functional language and a popular LISP dialect developed in the 1970s. Its initial purpose was understanding the Actor model, which was what its developers, Guy Steele and Jay Sussman were interested in at that moment. Steele and Sussman later released a number of paper to Academic community, making Scheme the popular language that it is today.

Scheme implementations have some differences though, which means that the name Scheme itself is often used to denote a family of closely related languages.

Minimalism

Scheme takes a minimalistic, almost arcane philosophy over programming. Instead of having a lot of features, Scheme is designed so that there are very few constrains on the programmer and very few weaknesses that have to be worked around by "features". There are very few primitive notions provided by Scheme, and a full support for programming libraries and garbage collection. Like LISP, its standard data type is the list, but it also supports vectors.

Advantages

Scheme presents all the advantages of a functional programming language. Complete garbage collecting support is available, as well as anonymous function support. Since the complete structure of a program is based on nested parenthesis, it is impossible to introduce ambiguities in one's code.

Scheme is a good solution for parallel machines, as it encourages functional programming, a programming paradigm with no side effects. Since there are not too many features, it is also possible for one to embed Scheme to low-memory machines, much easier than it is with more complex LISP-like languages or LISP implementation.

It is also easy for a programmer to abstract the program's logic using higher-order functions, as Scheme functions are first-class objects.

Criticism

Scheme has had its share of criticism though. The most important one regards the large number of implementations. Since the Scheme standard is very minimalist, many of its implementations chose to add various features. However, this ended up fragmenting the community quite a lot, and there are still a lot of libraries that work on some implementations and don't work on others. SRI, the Scheme Requests for Implementation, did much to change this, but there is still a lot of work to be done in this area.

The Common LISP community also criticized Scheme's principle of declaring functions and variables in the same namespace, since this doesn't allow functions and variables to share the same name. The Scheme community considers this a great advantage, since it allows an easier usage of higher-order functions.