Udage
From Esolang
Udage is an esoteric programming language primarily designed by Gs30ng, originally presenting what the author calls the "pattern programming paradigm."
Contents |
[edit] Abstract
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.
[edit] 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).
[edit] Instructions
| Syntax | WHAT IT DOES |
|---|---|
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
[edit] See also
There are also some languages that have been inspired by Udage:
[edit] External resources
- Udage website
- Udage spec: Version 0.22 and older specifications in English.
- Udage implementations: List of several implementations such as interpreter in C, Python, etc.
Categories: Languages | Cell-based | Turing tarpits | Implemented | CJK | Pattern-based | 2005

