|
Piet(ピエト)は、プログラミング言語であり、難解プログラミング言語のひとつである。 Ook! などのいくつかの難解プログラミング言語を開発した David Morgan-Mar がピエト・モンドリアンの作品に影響を受けて考案した言語で、文字ではなく色を組み合わせて記述する。 サンプルソースコード〔サンプルソースコード 〕を一見すると、抽象画のように見える。 == 言語仕様 == Pietでは、有彩色18色(色相6段階×明度3段階)と無彩色2色(黒、白)の計20色が用いられる。画像上では、色相と明度の変化の度合いによって命令や定義が表され、同一色のかたまり(codel)の面積によって値(正の整数値)が表される。データの処理はスタックを用いて行う。 実行の際は、インタプリタがソースコードの画像上を移動しながら、画像上に表現された命令を解釈して実行する。インタプリタは、移動方向を示す "direction pointer" (DP) および次のcodelの探索方向を示す "codel chooser" (CC) をもつ。DPは4値(上下左右)、CCは2値(左右)をとる。 Pietの命令の一覧を下記に示す。 * push:値をスタックに詰め込む。 * pop:値をスタックから取り出す。 * add:値を2つスタックから取り出し、加算した結果をスタックに詰める。 * subtract:値を2つスタックから取り出し、2つ目の値から1つ目の値を減算した結果をスタックに詰める。 * multiply:値を2つスタックから取り出し、乗算した結果をスタックに詰める。 * divide:値を2つスタックから取り出し、2つ目の値を1つ目の値で除算した結果をスタックに詰める。 * mod:値を2つスタックから取り出し、2つ目の値を1つ目の値で除算した際の余りをスタックに詰める。 * not:スタックの一番上の値が0でなければ0、0であれば1に変更する。 * greater:値を2つスタックから取り出し、二番目の値が一番目の値より大きければ1、そうでなければ0をスタックに詰める。 * pointer:値を1つスタックから取り出し、その値の回数だけDPを時計回りに回転させる。取り出した値が負の場合は反時計回りになる。 * switch:値を1つスタックから取り出し、その値の回数だけCCを反転させる。 * duplicate:スタックの先頭の値をコピーして、スタックに詰める。 * roll:値を2つスタックから取り出し、1番目に取り出した値の「回数」だけ、2番目に取り出した値の「深さ」への "roll" 操作を、残ったスタックの要素に対して行う。ここで、深さ n への "roll" 操作とは、スタックの先頭の値を取り出して先頭から n 番目に挿入し、それより手前にある要素の順序を1ずつ繰り上げる操作である。「回数」が負の場合は逆向きの操作となる。「深さ」が負の場合はエラーとなり、この命令は無視される。 * in:標準入力から値を取得する。 数値の入力と文字の入力は命令語が異なる。 * out:標準出力へ値を出力する。 数値の出力と文字の出力は命令語が異なる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Piet」の詳細全文を読む スポンサード リンク
|