先给大家看一张图。这到底是什么?这些层层叠叠的奇怪文件夹是什么?什么?如果我告诉你这其实是一个程序,你会相信吗?它真的是一个程序,相当于Python代码:print('h')这段代码是用一种叫做Folder的编程语言写的,也就是说,完全用“文件夹”来实现代码!只要这些文件夹有一定的顺序,并且每个文件夹有一定数量的子文件夹,就是一个程序!根本不关心文件夹中的内容。文件夹的名字根本不重要,所以我们可以把上面的转换成这样一张图:还是没感觉?我使用文件夹语言的语法来反汇编它。这个文件夹代表一个程序的开始,我们暂且称它为root,但是这个程序是做什么的呢?我们要看看root的第一个子目录下有多少个目录根据打印语法,后面是root的第二个子目录中描述了一个表达式:expr的第一个子目录如下:是这个“的类型字面量”是字符、数字还是字符串?根据文件夹编程语言语法,需要查看expr的第二个子目录:这个字符的值是多少?需要看一下expr的第三个子目录,简化一下:学过一点编译原理知识的同学应该已经明白了,这不就是抽象语法树(AST)吗?使用AST,我可以编写程序,解释并执行它。对于这个AST,它是print('h')。事实是,这种所谓的文件夹编程语言将代码编码到文件夹中!信息由文件夹之间的顺序关系和文件夹中子文件夹的数量来表示。当然,这是一种非常笨重的编程语言。如果要写一个HelloWorld,看起来是这样的:这个HelloWorld需要208个文件夹!如果你这样编程,你肯定会发疯的。如果用Folder做白板编程面试,估计一个HelloWorld能秒杀90%的人。不过,《文件夹编程语言》的作者DanielTemkin却“炫耀”过,文件夹虽然很多,但有一个好处:不占空间!当然这是不可能的,文件夹的元数据肯定会占用硬盘空间。这样的编程语言有用吗?恐怕不是!不过,应该是LinusTovarlds的话:JustforFun。自己找点乐子,从中学习一点编译知识就足够了。Reddit上的一位网友评论说,他是某学校高性能计算机中心的管理员。如果学生要存储数据,可以使用免费空间,如果超过配额,则需要付费。一个学生想到了一个天才的主意。他将要存储的数据编码成数十亿个空文件,这样一分钱都没花!因为元数据不收费。但是这个计算中新的元数据服务器宕机了,高性能的电脑也没人用了……这个故事类似于Folder编程语言。文件夹编程语言再次提醒我们,我们看到的Python和Java源代码只是一种编码形式,你可以使用其他编码形式来存储信息,比如文件夹和空文件。所以发挥你的想象力,让我们玩得开心。Folder语言的具体语法可以在这里查看:https://esolangs.org/wiki/Folders代码在GitHub上:https://github.com/rottytooth/FoldersPython版本不到500行。
