STORY / FULL VIEW

代码不写一个字,352449个空文件夹就是程序

如果告诉你,一段程序可以不含任何文本、不占任何磁盘空间,你会怎么想?Folders 语言给出的答案很直接:代码只存在于文件夹的包含关系与排列顺序里,文件夹的名字本身毫无意义,除了用来做字母排序。 它是一门非文本语言,纯粹的有序树结构。灵感来自 Whitespace,核心命题是"去物质化的代码"。创作者抛出的问题是:还有什么比一个看不见文字的文本文件更空?答案是空文件夹——在 git 里它甚至会被完

READ
SLOWLY
STORY / 01

如果告诉你,一段程序可以不含任何文本、不占任何磁盘空间,你会怎么想?Folders 语言给出的答案很直接:代码只存在于文件夹的包含关系与排列顺序里,文件夹的名字本身毫无意义,除了用来做字母排序。 它是一门非文本语言,纯粹的有序树结构。灵感来自 Whitespace,核心命题是"去物质化的代码"。创作者抛出的问题是:还有什么比一个看不见文字的文本文件更空?答案是空文件夹——在 git 里它甚至会被完全忽略。所以 Folders 程序被建议在目录最深处放一个 .gitignore 文件,好让这些"代码"在版本控制里留下痕迹。 Folders 最初是一门 Windows 语言。在 Windows 上,文件夹是"空"的更极端度量:它们完全不占磁盘空间。素材给出的验证方式是——创建 352,449 个文件夹,然后查看属性。按这个逻辑,Folders 不只提供去物质化的代码方案,还附赠了无限存储容量:把数据编码进文件夹名,就再也不用担心空间不够。 其他操作系统的用户,可以通过素材中提到的模拟器体验 Folders 管理数据与代码的方式。原始实现可以在 GitHub 上找到。 编码规则 每个命令文件夹至少有一个子文件夹。按字母顺序排在第一个的子文件夹里,子文件夹的数量决定命令类型;参数放在第二个文件夹里;部分命令还需要第三个文件夹。表达式的逻辑相同:第一个子文件夹里的文件夹数量决定表达式种类。 临时数据同样以文件夹形式存储。与代码不同,这时是文件夹的名字承载数据本身。 Folders FS 与可视化 Folders 解释器不创建临时文件,任何不能立即驻留内存的东西,都以一组临时文件夹的形式存在。它偏好的输入输出也是另一组文件夹——这意味着可以把全部数据编码进文件夹,绕开文件的"物质世界",获得无限磁盘空间(素材原话是:风险自负)。代码用 Folders lang,数据存储用 Folders FS。 一个 Folders 程序是 nil 结尾的嵌套列表,最简形式就是纯粹的包含与顺序,等同于一个全数组 JSON,JS 模拟器正是这样保存和读取程序的。 但可视化方式不止一种。Folders 程序是"内容即结构",可以套用到任意类型的原始数据上。素材举了一个 Truth Machine 的例子,把它画成等高线图:较粗的线代表容器,文件夹顺序从左上角开始、逆时针读取。红色圆点标记的是从容器到单个子节点的阈值。 其他可能的可视化形式包括:全是单亲的家庭树、类似分蘖麦秆的植物分枝结构,或者迷宫中的路径。 语言本身是一门非常简单的命令式语言,语义规则很短。命令和表达式都由其第一个子文件夹中的文件夹数量决定用途,类型直接使用。完整语言规范在素材中给出。 特别

about image