之前我们介绍过“Whitespace”编程语言,这是一种很奇葩的编程语言,在“Whitespace”编程语言中,任何 非空白 的字符都是被忽略的,只有空格符,tab和换行符被认为是有效的语义字符。也就是说,你可以把用“Whitespace”编程语言编写的代码藏在其他的文本、代码中,具有隐形代码的效果。
而今天要说的这种语言更是奇葩,它叫做 Folders ,顾名思义,这种语言没有代码,也没有代码文件,这种语言的代码就是操作系统的目录结构。
事实上,文件系统目录结构跟普通编程语言的过程结构非常相似,它就像各种的 语法树 ,在“Folders”编程语言中,代码的结构就是这样的,代码命令通过目录结构和其包含的子目录的名称构成。
比如,下面就是一个“Hello,World”程序:
这最外层的目录是程序的名称,“Hello World”。目录的读取是按目录顺序,这段程序的第一层子目录是“Setup”。“Setup”是打印命令的别称;下面有张表描述了各种名称代表的语义,这些名称区分于Windows系统里最常见的那些目录名,比如“Program files”。
接着,目录里出现了很多“Img”目录,名称中的 “(2),” “(3),”等数字是忽略不计的,它们用来区分同一目录下多个相同的目录。” – Copy”这样的字符也是忽略不计的(这些字符是拷贝目录时Windows自动加入的)。而目录名称前打头的数字是程序员用来控制程序流程的。下面是一个样例:
New folder (2) New folder - Copy New folder - Copy (2) If if 10 if if - Copy (1) etc.
字符串“Hello, World!”被分成了四段,这样可以让语义看起来更加清晰好读。”%20“是空白符的意思。
”Folders“是一种面向词汇的编程系统,这是跟其它大多数的面向逻辑的编程系统的重要区别。”Folders“目录里可以放各种的文件,但这些文件是忽略不计的。
下面是一个用”Folders“编程语言编写的“99 Bottles of Beer”程序。“99 Bottles of Beer”通常是用来表达最简单的运用循环和变量的代码例子,请注意下面一个对于有空格和逗号的特殊处理:
目前,”Folders“编程语言只支持Windows平台。它的代码解析器是开源的,你可以在github上找到它。 https://github.com/rottytooth/Folders