Piet
https://gyazo.com/33b2f1302edd8dca0327f498f2884825
Piet(ピエト)は、プログラミング言語であり、難解プログラミング言語のひとつである。
Ook! などのいくつかの難解プログラミング言語を開発したデヴィッド・モーガン=マー (David Morgan-Mar) がピエト・モンドリアンの作品に影響を受けて考案した言語で、文字ではなく色を組み合わせて記述する。
/icons/hr.icon
入門向け記事
・base64氏によるスライド資料
IDE
入門記事筆者のdnek氏によるIDE
https://gyazo.com/2f73ff598ec02b1457664a0f78c23de4
インタープリター
npietインタープリターによる実行経路のデバッグトレース、ビジュアルとしてよすぎる…
https://gyazo.com/f6501e23bc676e8fe974a72f0d9552f7
ツール
難解プログラミング言語Pietの ソースコード画像自動生成ツール(C++)。 テキストで記述された処理フローからPietソースコードを生成する。
https://gyazo.com/72bf61bfbee4df0ad17ef5dfe1de7356
無限ループ
https://gyazo.com/3cfc7c89f5721cb3f72ddc0bc09a4c75
/icons/hr.icon
Piet 自体は Canvas API を使えないが、
Piet インタプリタを JavaScript で書けば、
Piet の出力を Canvas に“接続”することはできる
インタプリタ例
PietをJavascriptで
実は言語の種類としてはそこまで特殊なものではなく、
スタック志向プログラミング言語という分類
メモリが「スタック」という構造を持つことが特徴
スタックのイメージは「底のついた筒状の入れ物」です。
この中に値を順次入れていくことができますが、
取り出すときは最後に入れたものからしか取り出せない、
というもの
/icons/hr.icon
Pietの歴史的背景と文化的背景
→nagasena.iconDavid Morgan-Marはけっこうジョーク好き人だ
設計理念「プログラムコードは抽象芸術の形になるべき」
Language Type: Esoteric / Visual
Released: 2001
Creator: David Morgan-Mar
Execution Model: Instruction pointer moves through colored regions
Syntax: Colors represent operations
Typing: Stack-based behavior
【既存の作品→実行】
言語設計→作品の順序とは逆に、Accidentallyに過去の関係のない作品を実行していくという偶然性の試み、ちょっと面白い…nagasena.icon
Barbara Maahsの作品をPietの色調に変換したところ、偶然にも動作するPietプログラムとなり、文字入力をASCII値で出力する例があった https://gyazo.com/8757f81d64870a45e7ad15007cd32383
"Get-Together" by Barbara Maahs
Converted to Piet colour palette by Piet Jarmatz, 2023
開発環境など
nagasena.icon思いつきメモ
設計する際に、例えば開発環境(エディター)をエクセル的なブロック構造にするとか…?
Visualプログラミング言語ではないにせよ。
/icons/hr.icon
抽象と論理の交差点:視覚言語Pietの技術的・文化的構造と日本語文学的プログラミング言語設計への示唆
/icons/hr.icon
日本語の文献(記事)
pietは簡単にいってしまうといわゆるスタックマシンです.どの命令を実行するのかということを色の明度(lightness)と色相(hue)の違いによって決定します.
Piet サンプルプログラム
/icons/hr.icon
スタックベース言語との共通点:
PostScriptやForthのようなスタックベース言語と同様、Pietは後置記法(Reverse Polish Notation)で動作し、スタックからデータをポップしてプッシュする操作のみでデータを扱います
独自性:
ビジュアル/グラフィカルな表現(テキストではなく画像)
2次元空間でのプログラムフロー
色の遷移による命令エンコーディング
芸術作品としての存在
https://gyazo.com/a0fd234912428e6dace65b11b9c55fa9
Credit: Daniel Temkin / esoteric.codes
/icons/hr.icon
/icons/hr.icon