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