概要
- Folders は、フォルダ構造のみでコードを表現する非テキスト型の Esolang。
- フォルダの 包含関係と順序 のみが意味を持ち、名前は無視される。
- Windows 向けに設計され、理論上は無限のストレージを提供。
- コードもデータも ファイルを使わずフォルダで管理 する独特な設計。
- 詳細な言語仕様やエミュレータ、リファレンス実装は GitHub で公開。
Folders言語の特徴
- 非テキスト型言語 :コードはフォルダの入れ子構造と順序のみで表現。
- フォルダ名は無視 :アルファベット順の並びだけが意味を持つ。
- 純粋な順序付き木構造 :プログラム全体がネストしたリストとして表現。
- Whitespace から着想を得た、極限まで「無」のコード表現。
- .gitignore ファイルの活用推奨、Gitで空フォルダが無視されるため。
Windowsおよびストレージとの関係
- Windows環境で開発 :空フォルダはディスク容量を消費しない特性。
- 理論上無限ストレージ :数十万フォルダ作成しても容量ゼロ。
- データもフォルダで管理 :フォルダ名にデータを格納するFolders FS。
- ファイル領域からの解放 :全てのデータ・コードをフォルダで表現。
コードとデータのエンコーディング
- コマンドはサブフォルダ数で判別 :最初のサブフォルダの数が命令種別。
- 引数や変数もサブフォルダで表現 :二番目・三番目のサブフォルダで指定。
- 一時データはフォルダ名で保持 :Folders FSではフォルダ名がデータ本体。
コマンド一覧
- if :サブフォルダ0個、2番目に条件式、3番目にコマンドリスト
- while :サブフォルダ1個、2番目に条件式、3番目にコマンドリスト
- declare :サブフォルダ2個、2番目に型、3番目に変数名(サブフォルダ数で指定)
- let :サブフォルダ3個、2番目に変数名、3番目に式
- print :サブフォルダ4個、2番目に出力する式
- input :サブフォルダ5個、2番目に入力先変数名
式(Expressions)
- variable :サブフォルダ0個、2番目に変数名
- add :サブフォルダ1個、2番目・3番目に加算する式
- subtract :サブフォルダ2個、2番目・3番目に減算する式
- multiply :サブフォルダ3個、2番目・3番目に乗算する式
- divide :サブフォルダ4個、2番目・3番目に除算する式
- literal value :サブフォルダ5個、2番目に型、3番目に値
- equal to :サブフォルダ6個、2番目・3番目に比較する式
- greater than :サブフォルダ7個、2番目・3番目に比較する式
- less than :サブフォルダ8個、2番目・3番目に比較する式
型(Types)
- float :サブフォルダ1個
- string :サブフォルダ2個
- char :サブフォルダ3個
可視化と応用
- ネストリストやJSON風の表現 :フォルダ構造をそのままデータ構造化。
- 地図・家系図・植物構造など :フォルダの順序や入れ子を多様に可視化可能。
- Truth MachineやFibonacci :具体的なプログラム例も存在。
実装・エミュレータ・リファレンス
- GitHub公式実装 :https://github.com/rottytooth/Folders
- JavaScriptエミュレータ :他OSでもFoldersの体験が可能。
- Folders FS :一時ファイル不要、全てフォルダでデータ保持。
まとめ
- Folders は、フォルダのみでプログラムとデータを表現する 前衛的Esolang。
- 無限ストレージ、 非テキスト、 極限まで抽象化されたコード の世界。
- 興味があればGitHubで実装を体験、新しいプログラミングの可能性を探求。