Forth言語でライブコーディング!「Cagire」でインタラクティブな開発体験を
Cagire: Live Coding in Forth
Cagire: Live Coding in Forth
Cagireは、Forth言語を使用したライブコーディング環境です。動的なコーディング体験を求めるエンジニアにとって、非常に興味深いツールとなっています。
いいね!試してみるよ。
FORTHのような合成環境に興味があるなら、SAPFをチェックしてみるといいよ!(SuperColliderの作者であるJames McCartneyが作ったもの) https://github.com/lfnoise/sapf
ToffoliとMargolisによるIBM-PC用セル・オートマトン・マシンボード「CAM-6」は、FORTHでプログラムされていたんだ。自分でもシミュレーターを作ってみたんだけど、このビデオでは当時保存していたFORTHのコードの一部と、自分で作った互換FORTHのCAルール・コンピューターを紹介しているよ。このコンピューターで本に載っていたルールを実行し、ハードウェア用のルックアップテーブルを作成できるようにして、シミュレーターとも互換性を持たせたんだ。今はJavaScriptで書き直しているところ。ライブコーディングではないけど、ライブパフォーマンス用のユーザーインターフェースが付いているよ(かなり奇妙で、特に本を読んでいないと理解するのは難しいかもしれないけど、ビデオでデモしているよ)。
CAM6 Demo
https://www.youtube.com/watch?v=LyLMHxRNuck
実際にCAM-6ボードを動かしていたオリジナルのFORTHコード:
tomt-cam-forth-scr.txt: https://donhopkins.com/home/code/tomt-cam-forth-scr.txt
tomt-users-forth-scr.txt: https://donhopkins.com/home/code/tomt-users-forth-scr.txt
自分で作った互換CAコンパイラとシミュレーターへのブリッジ(C言語):
cam.f.txt: https://donhopkins.com/home/code/cam.f.txt
compile.f.txt: https://donhopkins.com/home/code/compile.f.txt
JavaScriptで書き直す前にCで書いた古いバージョンのシミュレーター:
https://github.com/SimHacker/micropolis/tree/master/MicropolisCore/src/CellEngine/src
JavaScript版のCAM6シミュレーター:
CAM6.js: https://github.com/SimHacker/CAM6/blob/master/javascript/CAM6.js
すてきなプロジェクトだね。ステップごとに任意の実行ができるシーケンサーなんて、あまり聞いたことがないよ(この分野にそこまで詳しいわけじゃないけど)。Webサイトのフォント選びは……かなり独特だね。ここを読むのにこれほど読字障害を感じたことはない気がする。
最高だね……。こういうものが世の中に存在するのがうれしいよ。自分のプロジェクト(Skred)のためにアイデアをいくつか拝借させてもらうよ。ありがとう!
クールだね。そのレトロなフォントも最高。昔Vic-20(80年代初頭)とCommodore PET 2001(1977年)を持っていたんだ。今はOdinを学習中で、Forthでスクリプティングを行い、GUIやその他をOdinで動かすライブコーディング環境を作ろうと考えているんだ。オーディオとグラフィックスの面では、ずっと前にPaul BatchelorのSporthやTidal(今のTidalCyclesかな?)にインスパイアされたよ。Forthは素晴らしい言語だよね。数日でコンパイラやインタプリタが作れるし。John Earnestのok.jsもクールだ。スタック言語や配列言語が好きで、Jで遊んでいないときはUiuaを使っているよ。Uiuaはオーディオやグラフィックス、アニメーションも扱えるから、自分の配列・スタック言語へのこだわりを満たしてくれるんだ。
すごくいいね。Aspetの近くに住んでいるの?そこに住んでいる友人とよくハイキングに行くんだ。Cagireはピレネー山脈の中でもお気に入りの山の一つだよ。
おっ、こういう用途にはForthがかなり向いていそうだね。最近のこういったものの多くは、後処理のステップのようなものだし。
これは最高にクールだ。退職後のプロジェクトとして、ずっとこういうものをやってみたいと考えていたんだ。