之前我們介紹過“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