Ook! IntroductionDesign PrinciplesLanguage ConceptsSyntax ElementsResources
Ook!
Introduction
Ook! is a programming language designed for orang-utans. Ook! is essentially isomorphic to the well-known esoteric language
BrainF***, but has even fewer syntax elements.
Design Principles
- A programming language should be writable and readable by orang-utans.
- To this end, the syntax should be simple, easy to remember, and not mention the word "monkey".
- Bananas are good.
Language Concepts
If you are familiar with BrainF*** you can skip straight to
the syntax elements section. Note that since Ook! is trivially isomorphic to BrainF***, it is well-established that Ook!
is a Turing-complete programming language.
Memory Array and Pointer
Ook! uses a large array of integers as storage space, all initially set to zero. A Memory Pointer begins pointing at the
first array cell.
Comments
Since the word "ook" can convey entire ideas, emotions, and abstract thoughts depending on the nuances of inflection, Ook! has
no need of comments. The code itself serves perfectly well to describe in detail what it does and how it does it. Provided
you are an orang-utan.
Syntax Elements
Ook! has only three distinct syntax elements:
Ook.
Ook?
Ook!
These are combined into groups of two, and the various pair combinations specify commands. Programs must thus contain an
even number of "Ook"s. Line breaks are ignored.
Commands
Ook. Ook?
Move the Memory Pointer to the next array cell.Ook? Ook.
Move the Memory Pointer to the previous array cell.Ook. Ook.
Increment the array cell pointed at by the Memory Pointer.Ook! Ook!
Decrement the array cell pointed at by the Memory Pointer.Ook. Ook!
Read a character from STDIN and put its ASCII value into the cell pointed at by the Memory Pointer.Ook! Ook.
Print the character with ASCII value equal to the value in the cell pointed at by the Memory Pointer.Ook! Ook?
Move to the command following the matchingOok? Ook!
if the value in the cell pointed at by the Memory
Pointer is zero. Note thatOok! Ook?
andOok? Ook!
commands nest like pairs of
parentheses, and matching
pairs are defined in the same way as for parentheses.Ook? Ook!
Move to the command following the matchingOok! Ook?
if the value in the cell pointed at by the Memory Pointer
is non-zero.
Um, that's it. That's the whole language. What do you expect for something usable by orang-utans?
Resources
Java Ook!-to-BrainF*** and BrainF***-to-Ook! converter. Automatically detects which language your source file is written in and converts it to the other.- Chad Fowler has written an Ook! interpreter in Ruby.
- Øyvind Grønnesby has written an Ook! interpreter in Python.
- Lawrence Pit has written an Ook! compiler in .Net, called Ook#.
Jarkko Hietaniemi has written an Ook! perl intepreter module.- Rudolf Seitz has written an Ook! IDE for Palm-OS.
- Just in case you wanted to compile your Ook! source code into BIT to take advantage of that language's features, Ben Lubar has written a compiler to do just that!
- Joe-ds has written an Ook!-BrainF*** convertor which runs in your web browser.
Home | Esoteric Programming Languages
Last updated: Friday, 23 November, 2018; 14:20:51 PST.
Copyright © 1990-2019, David Morgan-Mar. dmm@dangermouse.net
Hosted by: DreamHost