用这个奇葩的语言来面试,绝对会毙掉90%的人......

这篇博客介绍了Folder编程语言,这是一种将代码以文件夹结构表示的编程方式。通过文件夹的层级和数量来表示语句和表达式,形成抽象语法树并进行解释执行。虽然极其繁琐,不适合日常编程,但它展示了编程语言的创新思维和编译原理的应用。作者还分享了一则趣事,关于学生用空文件夹编码数据来规避存储费用,结果导致服务器崩溃。博客以娱乐精神结尾,提醒我们代码可以有多种表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先给大家看一幅图

daf3e8b3d01c9ffc6d517e424039b5e7.png

这是什么鬼?这些层层叠叠、奇奇怪怪的文件夹是干嘛的? 

我如果告诉你它实际上是一个程序,你相信吗? 

它还真是一段程序, 相当于Python代码: 

print('h')

这段代码使用一种叫做Folder的编程语言写成,也就是说,完全用“文件夹”实现代码!

这些文件夹只要保证一定的次序,每个文件夹中有一定数量的子文件夹,它就是程序了! 根本不关心文件夹下有什么内容。

文件夹的名称根本不重要,所以我们可以把上面的转化成这样一幅图:

48f1046791fb4cbb2be6c4e333b696d4.png

还是没有感觉?我用文件夹语言的语法来拆解一下。

这个文件夹表示一个程序的开始,我们暂时把它称为root

d434cc34178c64c53b695fc034d830f1.png

但是这个程序要做什么事情? 

我们得看看root的第一个子目录下有多少个目录

93af0084327178d7792d03651e25e931.png

根据print语法的规定,它后面要跟一个表达式,在root的第二个子目录中描述:

c6621e409be8eb7a4f2d2ba693de90b2.png

expr的第一个子目录是这样的:

55ad66b1d800710a4065d11a7b054191.png

那这个“字面量”的类型到底是字符,数字,还是字符串呢? 

根据文件夹编程语言的语法,需要看expr的第二个子目录:

72cef543ebc9c22ecbbedba31fefeb18.png

那这个字符的值具体是什么呢?需要看expr的第三个子目录

e2151077ea568f0087043ee0e66131af.png

最后再简化一下: 

612d0417cd2bf11862b6e9d8793c072b.png

稍微学过一点儿编译原理知识的同学,估计早就明白了,这不就是一颗抽象语法树(AST)吗?

有了AST,我就可以写个程序,解释执行它了。 

针对这个AST,它就是 print('h')。 

真相大白,这个所谓的文件夹编程语言就是把代码编码到了文件夹当中!

用文件夹之间的次序关系,和文件夹中的子文件夹的数量来表示信息。 

当然, 这是一种非常繁琐的编程语言,如果要写个Hello World是这个样子的:

c383d037a6b3e07cc63134bed1223cc2.png

(点击看大图)

这个Hello World 需要208个文件夹!

你要是用这种方式编程,肯定会发疯的。 

如果用Folder来做白板编程面试,估计一个Hello World就能毙掉90%的人吧0f4ab5cbe0e3fca671245f0cd6ba480d.png

不过“文件夹编程语言”的作者Daniel Temkin“炫耀”说,虽然文件夹很多,但是却有一个好处:不占用空间!

6bbbae354a18d7e5de43fb9e6c849939.png

当然这是不可能的,文件夹的元数据肯定是要占据硬盘空间的。 

这样的编程语言有实际的用处吗? 

恐怕是没有吧!

但是,它应了Linus Tovarlds那句话:Just for Fun 。 

83ef3f5e09ed707e539af098086dd319.png

自己找点儿乐子,然后从中学习一点编译的知识,这就够了。

Reddit有个网友评论说,他是一个学校高性能计算机中心的管理员, 学生想存储数据的话可以使用免费空间, 超过配额就需要付费。 

其中有个学生想了一个天才的想法,他把要存储的数据,编码成了数十亿个空文件,这样一分钱都没有花!因为metadata并不计费。 

但是这个计算中新的metadata服务器就挂掉了,任何人都没法用高性能计算机了......

这个故事和Folder编程语言有异曲同工之妙。 

文件夹编程语言再次提醒我们,我们看到的Python, Java源代码不过是一种编码形式,你完全可以用其他编码形式来存储信息,例如文件夹,空文件。 

所以,发挥你的想象力,尽情地去找乐子吧 。 

Folder语言的具体语法可以到这里查看: 

https://esolangs.org/wiki/Folders

代码在GitHub:

https://github.com/rottytooth/Folders

Python版本不到500行。 

(完)

最后,再介绍一下我的一个备份号“想躺平的程序员”,防止被人投诉后失联,请小伙伴们保存一下吧。

这个号不会空着,经常会发一下轻松有趣的东西,让大家在紧张的工作之余乐呵一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值