之前我們介紹過「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 - CopyNew folder - Copy (2)Ifif10 ifif - 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
稿源:程序師