Dis

From Esolang
Jump to navigation Jump to search

Dis is an esoteric programming language designed by Ben Olmstead to walk the line between humanly impossible to program in and just extremely painful. While it is not quite as fearsome as Malbolge, Dis is still pretty bad.

Differences from Malbolge

Dis is very similar to Malbolge in many respects. Here's a summary of the differences:

  • The need for decryption of the instruction prior to decoding is eliminated.
  • Instructions are not encrypted after execution.
  • The crazy operator is replaced by a tritwise subtract without borrow.
  • The opcodes are remapped: ji*p/<vo become *^>|}{!_ respectively.
  • The output instruction can end the program immediately when a 2222222222 ternary is written.
  • Comments may be used, enclosed in parentheses. They can't be nested.
  • Unused memory is zero-padded.

Sample programs

There are not many examples of Dis code. This cat program comes from the author:

(Unix 'cat' in Dis.  This is the language test; I shall be working on a)
('Hello, world' program presently.  In the meantime, here's cat with   )
(explanation:                                                          )

    * (Set the data pointer to 42--from the ASCII code of '*')
    ^ (Jump to label 1, below, via the ! at the new data pointer.)

||||||||||||||||||||||||||||||||
      (Placeholders.)

      (label 1:)
   }{ (Read a character, write, automatically die on EOF.)
    * (Set data pointer back to 42.)
    ^ (Read character, write character, repeat.)
||||| (More placeholders.)
 !||* (Data for jump and data pointer instructions which are used
       elsewhere.)

hello world program, by User:Pro465:

('Hello, world!' program in Dis.)

    * (Set the data pointer to 42--from the ASCII code of '*')
    |{
    |||{
    |{{
    |||{
    |{
    |||{
    ||{
    |||{
    |||{
    |||{
    |{
    ||{
    ! (Halt the program.)
    ||
      (Placeholders.)

    $|QQ7|J||QQW|j|QQ]|Qf|QQb|QQW|QQW|&|QL|
      (Data.)

See also

External resources