and Haskell. Logic programming languages such as Prolog. General-purpose macro processor such as m4. Declarative languages such as XSLT. VHDL and other hardware description languages. TeX, a typesetting system. Esoteric programming languages, a form of mathematical recreation in which programmers work out how to achieve basic programming constructs in an extremely difficult but mathematically Turing-equivalent language. Some rewrite systems are Turing-complete. Turing completeness is an abstract statement of ability, rather than a prescription of specific language features used to implement that ability. The features used to achieve Turing completeness can be quite different; Fortran systems would use loop constructs or possibly even goto statements to achieve repetition; Haskell and Prolog, lacking looping almost entirely, would use recursion. Most programming languages are describing computations on von Neumann architectures, which have memory (RAM and register) and a control unit. These two elements make this architecture Turing-complete. Even pure functional languages are Turing-complete. Turing completeness in declarative SQL is implemented through recursive common table expressions. Unsurprisingly, procedural extensions to SQL (PLSQL, etc.) are also Turing-complete. This illustrates one reason why relatively powerful non-Turing-complete languages are rare: the more powerful the language is initially, the more complex are the tasks to which it is applied and the sooner its lack of completeness becomes perceived as a drawback, encouraging its extension until it is Turing-complete. The untyped lambda calculus is Turing-complete, but many typed lambda calculi, including System F, are not. The value of typed systems is based in their ability to represent most typical computer programs while detecting more errors. Rule 110 and Conway's Game of Life, both cellular automata, are Turing-complete. Unintentional Turing completeness Some games and other software are Turing-complete by accident, i.e. not by design. Software: Microsoft Excel Video games: Dwarf Fortress Cities: Skylines Opus Magnum Minecraft Social media: Habbo Hotel Computational languages: C++ templates printf format string TypeScript's type system Computer hardware: x86 MOV instruction Biology: Chemical reaction networks and enzyme-based DNA computers have been shown to be Turing-equivalent Non-Turing-complete languages Many computational languages exist that are not Turing-complete. One such example is the set of regular languages, which are generated by regular expressions and which are recognized by finite automata. A more powerful but still not Turing-complete extension of finite automata is the category of pushdown automata and context-free grammars, which are commonly used to generate parse trees in an initial stage of program compiling. Further examples include some