Expressing algorithms[edit]
Algorithms can be expressed in many kinds of notation, including natural
languages, pseudocode, flowcharts, drakon-charts, programming languages or control
tables(processed by interpreters). Natural language expressions of algorithms tend to be verbose
and ambiguous, and are rarely used for complex or technical algorithms. Pseudocode,
flowcharts, drakon-charts and control tables are structured ways to express algorithms that avoid
many of the ambiguities common in natural language statements. Programming languages are
primarily intended for expressing algorithms in a form that can be executed by a computer, but are
often used as a way to define or document algorithms.
There is a wide variety of representations possible and one can express a given Turing
machine program as a sequence of machine tables (see more at finite state machine,state transition
table and control table), as flowcharts and drakon-charts (see more at state diagram), or as a form of
rudimentary machine code or assembly code called "sets of quadruples" (see more at Turing
machine).
Representations of algorithms can be classed into three accepted levels of Turing machine
description:[21]
1 High-level description
"...prose to describe an algorithm, ignoring the implementation details. At this level we do not
need to mention how the machine manages its tape or head."
2 Implementation description
"...prose used to define the way the Turing machine uses its head and the way that it stores
data on its tape. At this level we do not give details of states or transition function."
3 Formal description
Most detailed, "lowest level", gives the Turing machine's "state table".