OTOH

OTOH (standing for On The Other Hand and pronounced like "Hoth" without the "H") is a simple programming language designed to combine the technical advantages of assembly with the simplicity of a Turing machine. Suggestions, comments etc. are all welcome. (OTOH was created by User:Hiant, Fading Entity on 2010-09-04)
==Language Overview==
OTOH uses a Tape and a swap-space of two memory cells referred to as "hands" (16 bit RAM with 1 bit id's).
"hand" values are initialized and default to 0.
It has several very simple operators. These are:
 ~ The flip operator, it switches the current "hand" to the other(default "hand" is 0 at execution)
 > Increment memory pointer
 < Decrement memory pointer
 ^ Store contents of current memory cell in current "hand" (this zeros the memory cell)
 _ Store contents of current "hand" into current memory cell (this zeros the "hand")
 " Adds (current hand) to (other hand) stores the result in current hand (destructive)
 ' Same as +, but subtracts (other hand) from (current hand)
 : Same as +, but multiplies
 % Same as +, but current hand modulo other hand
 [ If current cell is >0, continue, else skip to matching "]"
 ] If current cell is 0, end loop, else skip to matching "["
 ? Stores current "hand" id (0 or 1) to current memory cell
 , ASCII Input
 . ASCII Output
 ! Clone current hand into other (non-destructive)
 # Switch between ASCII and Numerical mode (initialized as ASCII)
===Language Standards===
*Cells may not wrap-around
*Cells may contain any number. (signed and unsigned)
*EOF must be 0
*The tape cannot wrap-around, but is considered infinite to the right
==Computational Class==
OTOH can easily be proven Turing complete through reduction from brainfuck.
==Basic Structure==
===(Dec/Inc)rementing===
Noticeably, OTOH lacks two very important BF commands, + and -. Instead, for the sake of obtuse-ification, creative use of the ? command is required. 
Both + and - can be simulated using this:
 ^?[_~^]~?^~@_
Where @ is either ' for - or " for +.
===Not===
The ? command can also function as a logical NOT.
 ^?[_~^]_~[~]?
===And===
The : command provides a numerical equivalent to AND.
===Or===
The " command provides a numerical equivalent to OR.
===Hand Clear===
Two multiplications (ex: (2,2):->(4,0):->(0,0))
 ::
===Cell Clear===
For current hand = 0
 ?
For currant hand = 1
 ~?
==Examples==
===Hello World!===
Hello World, but cheating using BF reduction for now.
 ^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^
 [_~^?]~?^~"_^?[_~^?]~?^~"_[>^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?
 [_~^?]~?^~"_>^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?
 [_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_>^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_>^?[_~^?]~?^~"_<<<<^?[_~^?]~?^~'_]>^?
 [_~^?]~?^~"_^?[_~^?]~?^~"_.>^?[_~^?]~?^~"_.^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?
 [_~^?]~?^~"_^?[_~^?]~?^~"_..^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_.>^?[_~^?]~?^~"_^?[_~^?]~?^~"_.<<^?[_~^?]~?^~"_^?
 [_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?
 [_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_.>.^?[_~^?]~?^~"_^?[_~^?]~?^~"_^?[_~^?]~?^~"_.^?
 [_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_.^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?
 [_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_^?[_~^?]~?^~'_.>^?[_~^?]~?^~"_.>.
After optimization:
 ~?^?~^~"?~^~"?~^~"?~^~"_>?~^~"?~^~"~<^~:_[>^?~^~"?~^~"
 ?~^~"?~^~"?~^~"?~^~"?~^~"_>^?~^~"?~^~"?~^~"?~^~"?~^~"
 ?~^~"?~^~"?~^~"?~^~"?~^~"_>^?~^~"?~^~"?~^~"_>^?~^~"_
 <<<<^?~^~'_]>^?~^~"?~^~"_.>^?~^~"_.^?~^~"?~^~"?~^~"?~^
 ~"?~^~"?~^~"?~^~"_..^?~^~"?~^~"?~^~"_.>^?~^~"?~^~"_.<<^
 ?~^~"?~^~"?~^~"?~^~"?~^~"?~^~"?~^~"?~^~"?~^~"?~^~"
 ?~^~"?~^~"?~^~"?~^~"?~^~"_.>.^?~^~"?~^~"?~^~"_.
 ^?~^~'?~^~'?~^~'?~^~'?~^~'?~^~'_.^?~^~'?~^~'?~^~'?~^~'?~
 ^~'?~^~'?~^~'?~^~'_.>^?~^~".>.
A reduction by a factor of 2!
===Cat===
Simple:
 ,[.,]
===taC===
Reverse Cat:
 ~>?[,^?~^~'?~^~'?~^~'?~^~'?~^~'
 ?~^~'?~^~'?~^~'?~^~'?~^~'_
 [ ^?~^~"?~^~"?~^~"?~^~"?~^~"
 ?~^~"?~^~"?~^~"?~^~"?~^~"_
 >,
 ^?~^~'?~^~'?~^~'?~^~'?~^~'
 ?~^~'?~^~'?~^~'?~^~'?~^~'_
 ] ^?~^~"?~^~"?~^~"?~^~"?~^~"
 ?~^~"?~^~"?~^~"?~^~"?~^~"_
 <[.<]>]
Not so simple.
==External resources==
===Compiler===
A to-ruby compiler exists. Download it from sprunge. 
Category:2010
Category:Languages
Category:Cell-based
Category:brainfuck derivatives
Category:Turing complete
Category:Implemented