|This article does not cite any references or sources. (July 2010)|
A toy language is a term for a computer programming language that is not considered to fulfill the robustness or completeness requirement of a computer programming language. As such it is not considered a suitable language for creating solid and reliable programs for use in production environments. Which programs to categorize as toy languages is difficult, however. Languages such as Brainfuck and Whitespace are both considered esoteric programming languages. They are Turing complete, which means they are able to compute any computable function, i.e. mathematically they have the same capabilities as languages such as Java, C, C++ and Common Lisp. Logo is another example of a toy language. Its goal was originally to create a math land where children could play with words and sentences. For a long time GCC was shipped with a Toy programming language called Treelang which was essentially C without the advanced concepts such as pointers, arrays and records.
A toy language is usually limited in one or several ways. That is it has major limitations in the number of programming constructs or concepts supported. The language might be mathematically complete. Another typical limitation of toy languages is that they do not necessarily have a set of support libraries that are considered a requirement for creating production quality programs.
The main use of a toy language is in computer languages research. Some uses are as frameworks for researching new programming constructs or as a prototype for new language concepts or paradigms. Other notable uses are as a learning or demonstration tool, e.g. in universities, for programming constructs and techniques not available in mainstream languages and as an exercise in building a language from scratch.
Scheme as a toy language
Some people[who?] would argue today that Scheme is a toy language, as it is mostly used in academia. A view that many[who?] share is that even though it is complete in its own right, it has limited capability in real life projects. As such, other languages with similar properties but extended capabilities are preferred[by whom?], such as Common Lisp. Another, somewhat similar example, is Lava, which is purely experimental.