Fission

Fission, the programming language that defies the laws of conservation of mass and energy.

Language Description
Fission is a 2-dimensional esoteric programming language. The program is comprised of atoms moving around. Each atom has a mass and an energy level. When an atom is first created, it has a mass of 1 unit and 0 energy. It moves in a straight line either up, down, left or right. It can change direction through various means such as bouncing off of mirrors.

Atom lifetime
Atoms will continue moving around until a component destroys it. All atoms move once per tick, simultaneously. Multiple atoms can share the same position. When they hit the edge of the grid, they are wrapped around to the other side. If an atom's mass ever goes negative, it is destroyed. When there are no more atoms left on the grid, the program exits with status 0 (except when the  component is hit).

Components
Reserved for future use:. These currently have no effect, but will eventually be implemented.

All other characters are ignored completely, and atoms will pass through them without changing.

Examples
Simplest hello world (almost looks like a normal language):

R&quot;Hello, world!&quot;N; This program is functionally the same:

;N&quot;!dlrow ,olleH&quot;L As is this one:

D &quot; H e l l o , w o r l d ! &quot; N Slightly more complex hello world:

[......V  ! Start. .  w         \. .  !          |  .      +   o  !l!d!N; V. /...^...\!r R../ .comment. . block. !l!e!h\      \...Y.../o! .***********.  !        .*Comments *. '       .* can go  *. ....../*anywhere!*\...... Reverses stdin:

Z~]Z?L K A / \!/; Equivalent pseudocode:

while not eof: c = getchar stack.push(c)

while not stack.empty: c = stack.pop putchar(c)

Language Implementation
Fission is created by C0deH4cker, and the original interpreter written in C++ is located on GitHub.