Settings

Theme

Ask HN: What is the smallest possible language?

8 points by sethhovestol 12 years ago · 10 comments · 1 min read


I've been thinking about languages recently, and I'm wondering what the most simple Turing complete language needs. By this I mean flow control (if/else) and recursion or loops (or the beloved Y combinator). What would be a list of these features?

valarauca1 12 years ago

The mov operator in x86 assembly is technically Turning Complete onto itself [1]. I believe you'd be hard pressed to get smaller then that.

[1] http://www.cl.cam.ac.uk/~sd601/papers/mov.pdf

  • sethhovestolOP 12 years ago

    I'm impressed. What I'm thinking more of is what types of functions and specific functions do you need? So also add, subtract...

    • bmm6o 12 years ago

      Nothing about Turing completeness requires the presence of functions. You're probably looking for a useful language, but you'll have trouble making that criterion rigorous.

    • ggchappell 12 years ago

      All you need is mov (and, technically, a single unconditional branch in each program). You can implement add, subtract, etc. using that.

      Perhaps the question you want an answer to is not actually the one you asked? In any case, a programming language does not have to look like ALGOL. Most of the very simple ones do not.

tsuyoshi 12 years ago

This type of language is called a Turing Tarpit: http://esolangs.org/wiki/Turing_tarpit

ggchappell 12 years ago

A fair amount of research has gone into this question. A number of very simple Turing-complete languages are known.

valarautical mentioned x86 mov. Another is an assembly-ish language with two instructions: (1) decrement and (2) branch if <= 0. Another is the Lambda Calculus. The only thing it has is lambda (and variables and function application, if you want to consider those to be things). Lisp with only QUOTE, ATOM, EQ, CAR, CDR, CONS, and COND is another example (and perhaps even that list is not minimal; I'm a little vague on this).

dbieber 12 years ago

Are you familiar with Brainfuck? http://en.wikipedia.org/wiki/Brainfuck It has just 8 symbols and looks like gibberish when you actually write it. I think you'll find it to be an amusing example of a very small Turing complete language.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection