自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用這個奇葩的語言來面試,絕對會斃掉90%的人......

開發(fā) 開發(fā)工具
文件夾編程語言再次提醒我們,我們看到的Python, Java源代碼不過是一種編碼形式,你完全可以用其他編碼形式來存儲信息,例如文件夾,空文件。

 [[440479]]

先給大家看一幅圖

這是什么鬼?這些層層疊疊、奇奇怪怪的文件夾是干嘛的?

我如果告訴你它實際上是一個程序,你相信嗎?

它還真是一段程序, 相當(dāng)于Python代碼:

  1. print('h'

這段代碼使用一種叫做Folder的編程語言寫成,也就是說,完全用“文件夾”實現(xiàn)代碼!

這些文件夾只要保證一定的次序,每個文件夾中有一定數(shù)量的子文件夾,它就是程序了! 根本不關(guān)心文件夾下有什么內(nèi)容。

文件夾的名稱根本不重要,所以我們可以把上面的轉(zhuǎn)化成這樣一幅圖:

還是沒有感覺?我用文件夾語言的語法來拆解一下。

這個文件夾表示一個程序的開始,我們暫時把它稱為root

但是這個程序要做什么事情?

我們得看看root的第一個子目錄下有多少個目錄

根據(jù)print語法的規(guī)定,它后面要跟一個表達式,在root的第二個子目錄中描述:

expr的第一個子目錄是這樣的:

那這個“字面量”的類型到底是字符,數(shù)字,還是字符串呢?

根據(jù)文件夾編程語言的語法,需要看expr的第二個子目錄:

那這個字符的值具體是什么呢?需要看expr的第三個子目錄

最后再簡化一下:

稍微學(xué)過一點兒編譯原理知識的同學(xué),估計早就明白了,這不就是一顆抽象語法樹(AST)嗎?

有了AST,我就可以寫個程序,解釋執(zhí)行它了。

針對這個AST,它就是 print('h')。

真相大白,這個所謂的文件夾編程語言就是把代碼編碼到了文件夾當(dāng)中!

用文件夾之間的次序關(guān)系,和文件夾中的子文件夾的數(shù)量來表示信息。

當(dāng)然, 這是一種非常繁瑣的編程語言,如果要寫個Hello World是這個樣子的:

這個Hello World 需要208個文件夾!

你要是用這種方式編程,肯定會發(fā)瘋的。

如果用Folder來做白板編程面試,估計一個Hello World就能斃掉90%的人吧圖片

不過“文件夾編程語言”的作者Daniel Temkin“炫耀”說,雖然文件夾很多,但是卻有一個好處:不占用空間!

當(dāng)然這是不可能的,文件夾的元數(shù)據(jù)肯定是要占據(jù)硬盤空間的。

這樣的編程語言有實際的用處嗎?

恐怕是沒有吧!

但是,它應(yīng)了Linus Tovarlds那句話:Just for Fun 。

自己找點兒樂子,然后從中學(xué)習(xí)一點編譯的知識,這就夠了。

Reddit有個網(wǎng)友評論說,他是一個學(xué)校高性能計算機中心的管理員, 學(xué)生想存儲數(shù)據(jù)的話可以使用免費空間, 超過配額就需要付費。

其中有個學(xué)生想了一個天才的想法,他把要存儲的數(shù)據(jù),編碼成了數(shù)十億個空文件,這樣一分錢都沒有花!因為metadata并不計費。

但是這個計算中新的metadata服務(wù)器就掛掉了,任何人都沒法用高性能計算機了......

這個故事和Folder編程語言有異曲同工之妙。

文件夾編程語言再次提醒我們,我們看到的Python, Java源代碼不過是一種編碼形式,你完全可以用其他編碼形式來存儲信息,例如文件夾,空文件。

所以,發(fā)揮你的想象力,盡情地去找樂子吧 。

Folder語言的具體語法可以到這里查看:

https://esolangs.org/wiki/Folders

代碼在GitHub:

https://github.com/rottytooth/Folders

Python版本不到500行。

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2020-10-19 07:51:25

Linux軟件

2020-08-24 15:25:27

Python 開發(fā)運維

2020-08-24 13:15:59

Python代碼描述符

2021-10-15 06:49:37

MySQL

2021-09-25 13:05:10

MYSQL開發(fā)數(shù)據(jù)庫

2024-10-08 08:14:08

用戶生命周期分析服務(wù)

2024-05-11 08:33:45

JavaJVM虛擬機

2020-03-09 10:43:10

面試中項目經(jīng)驗

2019-10-24 08:56:38

語言代碼Java

2019-12-03 08:29:39

代碼調(diào)優(yōu)網(wǎng)絡(luò)

2015-08-27 13:24:59

招聘

2021-06-06 16:31:57

PythonPython 3.7 編程語言

2010-06-11 13:02:50

MySQL數(shù)據(jù)庫

2020-12-18 07:34:48

Spring配置文件

2018-11-21 08:12:19

人工智能失業(yè)機器

2020-12-24 10:00:12

PythonPython基礎(chǔ)阿姆斯特朗數(shù)

2022-02-20 20:12:21

TypeScript

2018-04-26 08:48:43

Oracle Java框架

2020-09-11 06:43:04

5G.組網(wǎng)選項6

2017-10-11 09:41:03

谷歌
點贊
收藏

51CTO技術(shù)棧公眾號