From Esolang
Jump to: navigation, search

Udage is an esoteric programming language primarily designed by User:Gs30ng, originally presenting what the author calls the "pattern programming paradigm."


The core concept of the language is that no specific word or character is assigned to represent an instruction, but rather a pattern of characters is: if there is a Udage program with, say, the character A and you replace all A's with B's, the source code will still do exactly same thing (unless, of course, B has already been used in the original code, which would result in a collision which may change the meaning of the code drastically). All kinds of characters (in implementation, probably just all Unicode characters) can be used to write the source code: even MIDI audio or digital images.

Language overview

Note: this language is still being specified. This section describes version 0.22 specification.

In the language there is a memory space called udage, consisting of all the symbols available and a tape.

The tape is a linear memory space with unbounded cells, each containing a bit value, 0 or 1. Udages are a sort of pointer which moves on the tape and reads/writes bit values, so each udage has a pointer value that represents which cell it is on currently. Initially all bit values and pointer values are 0.

In the beginning all udages point to cell 0, which is a special value meaning it points to itself. If there are 256 symbols, the udages initially point to 256 different cells, although they all have a pointer value of 0.

The term "udage" (pronounced yer-da-gee) is from Korean word "여닫이" (Yeodaji), which refers to a door with a hinge. This is inspired by the peculiarity of the variable: it can represent 0 or 1, analogous to a door being open or closed, and it can point to a cell on the tape (every door leads to somewhere else).


A changes bit value.
AABC changes pointer value.
AAAB...CCC executes repeatedly while condition is met.
AAAA...A inputs/outputs.

The whole specification translated in English is available on http://gs30ng.exca.net/udage/specification (dead link)

See also

There are also some languages that have been inspired by Udage:

External resources