Content deleted Content added
Added Bigloo to the list of Scheme implementations. |
Random tweaking |
||
Line 3:
The '''Scheme programming language''' is a [[functional programming language|functional]] [[programming language]] which is 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 [[minimalism|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 let everything else be implemented on top of them. For
It was the first variety of Lisp to feature [[lexical variable scoping]] rather than [[dynamic variable scoping]]. Like Lisp, Scheme supports [[computer memory garbage collection|garbage collection]] of unreferenced data. It uses lists as primary data structure, and list operations such as cdr and car.▼
▲
▲Scheme's philosophy is unashamedly [[minimalism|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 let everything else be implemented on top of them. For instance, the main mechanism for governing control flow is [[tail recursion]].
Why the curious name? Well, it was originally called "Schemer", in the tradition of the languages [[Planner programming language|Planner]] and [[Conniver programming language|Conniver]], but its authors used the [[ITS operating system]] which didn't allow filenames longer than 6 characters.
Line 11:
== Advantages of Scheme ==
Scheme has very little syntax compared to many other programming languages. It has no operator precedence rules because
Thanks to its [[macro]] facilities, Scheme can be adapted to any problem ___domain. They
Scheme encourages [[functional programming]]. Pure functional programs need no global variables and don't have side-effects, and are therefore automatically [[thread-safe]], automatically verifyable and have more of these nice properties. However, Scheme
In Scheme, functions are first class citizens. This means they can be passed as arguments to another function or stored in a variable and manipulated. This allows higher order functions that can further abstract program logic. Functions can also be created anonymously.
|