Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/technohippy/gorispace

Programming Language for Gorilla
https://github.com/technohippy/gorispace

Last synced: 4 months ago
JSON representation

Programming Language for Gorilla

Awesome Lists containing this project

README

        

ゴリラ用プログラミング言語 ゴリスペース
=======================================

目的
----

霊長類の中でもオランウータン・チンパンジー・ボノボ・ゴリラは特に知能が高く、人間の5才児程度の知能を持ち、ある程度は抽象的な思考もこなせることが分かっています。言葉に関しても手話を操るチンパンジーやゴリラの話は有名でしょう。

特にゴリラに関しては実際に人間とゴリラが言葉でやり取りをすることすら可能で、京都大学の[山極寿一](http://ja.wikipedia.org/wiki/%E5%B1%B1%E6%A5%B5%E5%AF%BF%E4%B8%80)教授は10種類ほどのゴリラ語を話すことができるといいます。そう考えると彼ら用のプログラミング言語があってもおかしくありません。いや、むしろ無いことの方がおかしいと言えるでしょう。

そこで私はゴリラ用プログラミング言語「ゴリスペース」を開発しました。

Hello World!
------------

サンプルコード

> ウホホホホウホホホ、ウホホ。ウッホホ。ウホホホホウホウッホホホホ。ウホホホホ、ウホホウホウホホーイウッホウホホホーイ。ウホホホホウホウホホホホ、ウホホウホホホホ。ウッホホウッホホホ、ウホホホウホホ。ウッホウホウッホホ、ウホホホーイウッホホ。ウホホーイウホホホ、ウホ、ウホホホホ。ウホホホホ。ウホウッホホウッホホホウホホホウッホホホホ、ウッホホ。ウホホホウホホホウホホホーイ。ウッホホホ。ウホホホホーイウホ、ウホホホウホホホホ、ウホホウホホホウッホホホホウッホホホホウホホホホウッホホホホウッホ、ウホホホ。ウホホホウホホホホーイ。ウッホウホーイウホホホホウホウホホホホウホホホホウホホホウッホホウッホホウホホホウッホホ、ウッホホウッホホウッホホウホホホーイウッホホホ、ウホーイウホホホウホホホウホホホホ、ウホホホ、ウホホホ。ウッホホホホウホホ、ウホホホホ、ウホ。ウホホホ、ウホ。ウホホホホーイ。ウッホホホホ、ウホホホーイ。ウホホウホウホホホウホホホ、ウホウッホホホホ、ウホウッホ、ウホホホウッホホホ。ウッホホホウッホホホ、ウホホホホーイ。ウッホ。ウホホホーイウホホウホホホ。ウホウホホホホ。ウホウッホウッホホホウホ。ウッホホウッホホホ。ウッホホホホウッホホウホホホホーイウッホホホホウホホーイウホホホホウホホホホ、ウホ。ウホホホホ。ウホホホ、ウッホ、ウッホホホホ、ウッホ、ウホウホホホウッホホホホ、ウホホホホウホーイウッホ、ウホホホーイ。ウホ、ウホホホ。ウホホウホホホホウホホホホウッホホ、ウッホウホホウッホホホ。ウッホウホホ、ウホホウホーイウッホ。ウホーイ。ウホウホホホホウホ。ウホホウホホ、ウッホウッホホ。ウホ、ウホホホウッホウホホ。ウホウホホーイ。ウッホホホホ、ウホーイウホウホ。ウホホ。ウホホホ、ウホウホホ。ウホホホホウホ。ウッホホホ。ウホホホ、ウッホ。ウホホホホ、ウホホーイ。ウッホホホ、ウホホホホーイウホホホホ、ウホホウホホホーイウホーイ。ウホホホホーイ

実行結果

> $ bin/gorispace samples/helloworld.gs
> Hello World

Fibonacci
---------

サンプルコード

> ウホウホウホホホホウッホウホホホウホホホウッホホホウホホホウホホウホホウホホホホーイ。ウッホウホーイウホホホ。ウホウホホホホ。ウホウホウッホホホホウッホホホホ、ウホホウッホホホホウッホホ。ウッホホホウッホウホーイ。ウッホホホホウホホホホーイ。ウホホホホウホ。ウホ、ウホホホウホホ。ウッホホホウッホホホウッホホホホ。ウホホホウッホホホホ、ウッホホホホウッホホ、ウホーイ。ウッホホホホウホーイウホウホホウホホ、ウホホウホウッホホホホウホホ、ウホホホホ。ウホウホホホウホウホーイウッホホウホーイウホ、ウホホホホウホホ。ウホホホホ、ウホホホホウッホホホホウッホホホホ、ウホホウッホホホホ。ウッホウホホホホウッホホホホウホーイウッホ。ウホホーイウホホ、ウホホホ。ウホホホ、ウホホホホウホホホホウッホウッホホホウホホホホ、ウホウホホホウホホホホウッホウホホホーイ。ウッホホ、ウホホホホーイウホホホホ、ウホウホ。ウホウホホウッホホホホウッホホホホ。ウホホ、ウッホホホホウッホウッホホホウホウホホホーイウッホホ、ウホホーイウホホホウホウホホ、ウホホホホ、ウホホウッホホホ、ウッホホホホ。ウッホホホ。ウッホ、ウホホホ。ウホウッホホウホホーイ。ウッホホホウホホーイウホホホホ。ウホホ。ウホウホホホウホホホ、ウッホホ、ウッホウッホホホホウッホ、ウッホホホホ、ウッホホウホホーイウッホホホホウホーイウホ、ウホホウホ。ウホホホホ。ウホホホホ、ウッホホホ。ウホホホホ。ウホホ。ウホホホ、ウホホホ。ウホウホホホーイウッホホウホーイウホホホウホホホ。ウホ、ウホホホホウホホホホウッホホホホウホホ、ウホホーイウッホウホホホホーイウッホホウッホウホホ、ウホホホホ、ウホホホホ。ウホホ、ウホーイ。ウホホホホ、ウホホホホ。ウホホ、ウッホホホホウホホーイウホホウホーイウホホ、ウッホホホ。ウホホホホーイウホホ、ウッホホホホウホホウホホウホウッホホホホ、ウホホ、ウッホホ、ウホホホウホホホーイウッホウホホーイウホホホホ、ウホホホ、ウホーイ。ウホ、ウホホホウッホホウホーイ。ウホ、ウホホーイウホホホウホホホホ。ウホホホ、ウホホウッホホウホホホーイウホホウホーイウッホホホホウッホホホホ、ウッホホホウホ、ウッホホウホウホホホ。ウホウホホホ。ウホホホホウホホウッホホホウホホーイウッホホ、ウッホホホホ、ウッホホホホ、ウホホホ。ウホホホーイウッホホ、ウホホ、ウホホーイウホホホウッホホウホホーイウホホウッホホ。ウホホウホウホホホウッホホホホウホ。ウッホ。ウホホホホウホホホーイウッホホウホホホーイウホホホホウホ、ウホホウホホホホ、ウホホウッホウホホ。ウホホホホーイウッホホホウッホホホホウッホホホ、ウホホホウホホホホウホ、ウッホホウホホホホーイウッホホウホホホホウホ、ウッホ、ウホウホーイウホホホホウホホホホウホホ、ウホホホホ、ウッホウホホホホ。ウホホーイウホホホ、ウホホーイウッホホ。ウッホウッホホホホウホホウホホホーイ。ウッホホホホ。ウッホホホホ、ウッホホホホ。ウホホホホウホホーイ。ウホーイウホホホホ。ウホホーイ。ウッホホ、ウホーイ。ウホホホーイウホホホホウホ。ウッホホホウホウホホホホーイウホーイウホホホーイウホーイ

実行結果

> $ bin/gorispace samples/fibonacci.gs
> How many? 5
> 1
> 1
> 2
> 3
> 5
> 8
> 13

文法
----

+--------------+--------------+
|IMP |意味 |
+--------------+--------------+
|ウホ |スタック操作 |
|ウッホウホ |整数演算 |
|ウッホウッホ |ヒープアクセス|
|ウホーイ |フロー制御 |
|ウッホウホーイ|入出力 |
+--------------+--------------+

スタック操作 IMP:ウホ
+----------------+----------+----------------------------+
|コマンド |パラメータ|意味 |
+----------------+----------+----------------------------+
|ウホ |数値 |数値をスタックにプッシュ |
|ウホーイウホ | |スタックトップを複製 |
|ウホーイウッホ | |スタックの1番目と2番目を交換|
|ウホーイウホーイ| |スタックトップを破棄 |
+----------------+----------+----------------------------+

整数演算 IMP:ウッホウホ
+------------+----------+----------------------------+
|コマンド |パラメータ|意味 |
+------------+----------+----------------------------+
|ウホウホ | |スタックの上から二つを足し算|
|ウホウッホ | |スタックの上から二つを引き算|
|ウホウホーイ| |スタックの上から二つを掛け算|
|ウッホウホ | |スタックの上から二つを割り算|
|ウッホウッホ| |スタックの上から二つで剰余 |
+------------+----------+----------------------------+

ヒープアクセス IMP:ウッホウッホ
+--------+----------+--------------------------+
|コマンド|パラメータ|意味 |
+--------+----------+--------------------------+
|ウホ | |値をアドレスに格納 |
|ウッホ | |アドレスから値をスタックに|
+--------+----------+--------------------------+

フロー制御 IMP:ウホーイ
+----------------+----------+--------------------------------+
|コマンド |パラメータ|意味 |
+----------------+----------+--------------------------------+
|ウホウホ |ラベル |ラベル定義 |
|ウホウッホ |ラベル |サブルーチン呼び出し |
|ウホウホーイ |ラベル |無条件ジャンプ |
|ウッホウホ |ラベル |スタックトップがゼロならジャンプ|
|ウッホウッホ |ラベル |スタックトップが負ならジャンプ |
|ウッホウホーイ | |サブルーチン終了 |
|ウホーイウホーイ| |プログラム終了 |
+----------------+----------+--------------------------------+

入出力 IMP:ウッホウホーイ
+------------+----------+----------------------------+
|コマンド |パラメータ|意味 |
+------------+----------+----------------------------+
|ウホウホ | |スタックトップの文字を出力 |
|ウホウッホ | |スタックトップの数値を出力 |
|ウッホウホ | |文字を読み込みアドレスに格納|
|ウッホウッホ| |数値を読み込みアドレスに格納|
+------------+----------+----------------------------+

数値 : 数値は二進数で表し、ウホ が 0、ウッホ が 1、ウホーイ が終端記号
ラベル: ラベルは ウホ と ウッホ の列で表現され、ウホーイ が終端記号

※ なお、「ホ」の連続は「ホ」として扱われる

参考サイト
---------

* [http://compsoc.dur.ac.uk/whitespace](http://compsoc.dur.ac.uk/whitespace)
* [http://ja.wikipedia.org/wiki/Ook!](http://ja.wikipedia.org/wiki/Ook!)

作者
----

* [http://d.hatena.ne.jp/technohippy/](http://d.hatena.ne.jp/technohippy/)