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 matching Ook? Ook! if the value in the cell pointed at by the Memory
    Pointer is zero. Note that Ook! Ook? and Ook? 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 matching Ook! 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

Popular posts from this blog

ParseJSON using SSJSUsing AMPscript with SSJS ActivitiesHow to resubscribe a user in Marketing cloud using SSJS?Pulling Subscriber Status from Lists using SSJSRetrieving Emails using SSJSProblem in updating DE using SSJSUsing SSJS to send single email in Marketing CloudError adding EmailSendDefinition using SSJS

Кампала Садржај Географија Географија Историја Становништво Привреда Партнерски градови Референце Спољашње везе Мени за навигацију0°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.340°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.34МедијиПодациЗванични веб-сајту

19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу