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

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

 [[440479]]

先给大家看一幅图

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

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

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

  1. print('h'

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

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

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

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

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

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

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

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

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

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

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

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

最后再简化一下:

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

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

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

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

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

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

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

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

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

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

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

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

恐怕是没有吧!

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

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

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

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

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

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

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

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

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

https://esolangs.org/wiki/Folders

代码在GitHub:

https://github.com/rottytooth/Folders

Python版本不到500行。

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2020-10-19 07:51:25

Linux软件

2020-08-24 15:25:27

Python 开发运维

2020-08-24 13:15:59

Python代码描述符

2021-10-15 06:49:37

MySQL

2021-09-25 13:05:10

MYSQL开发数据库

2019-12-03 08:29:39

代码调优网络

2019-10-24 08:56:38

语言代码Java

2020-03-09 10:43:10

面试中项目经验

2015-08-27 13:24:59

招聘

2021-06-06 16:31:57

PythonPython 3.7 编程语言

2020-12-18 07:34:48

Spring配置文件

2010-06-11 13:02:50

MySQL数据库

2017-10-11 09:41:03

谷歌

2020-12-24 10:00:12

PythonPython基础阿姆斯特朗数

2022-02-20 20:12:21

TypeScript

2018-11-21 08:12:19

人工智能失业机器

2018-04-26 08:48:43

Oracle Java框架

2020-09-11 06:43:04

5G.组网选项6

2023-08-31 12:01:14

数据分析体系

2021-07-05 10:25:07

人工智能AI
点赞
收藏

51CTO技术栈公众号