如果代碼替換成中文就會怎樣?
你以為會寫中文就會編程嗎?這就像你以為會寫漢字就會寫出好文章一樣。編程是和機器溝通,因此要用機器的語言而不是人類的語言。最早的程序就是0和1的數字,不是中文也不是英文。以前的程序員,每天寫程序就是在一條長長的紙帶上打孔表示0和1。后來發現0和1的二進制太麻煩了,就把0和1壓縮一下,用16進制表示,比如數字10,用二進制表示是1010,用16進制表示就是0A,這樣表達起來就更簡潔,但是輸入電腦后,仍然要轉換為二進制電腦才能明白。
后來,科學家們用簡單的英文單詞表示某些功能,比如加法,就用add表示,減法就用dec表示。程序員輸入add或dec后,系統會轉換為對應的算法。就這樣不斷的給不同的代碼段起名字。編程語言就是從數字編碼不斷壓縮提高層次,最后形成了當今的各種風格的編程語言。為什么碼農會討厭中文編程?我用最流行的易語言說明。
所謂全中文的易語言,其實就是把Visual Basic語言中每個英文單詞換成了對應的中文詞,其他都不變。比如Visual Basic的代碼是這樣:
if True thenPrint "OK"endif
換成了易語言,就是這樣了:
如果 真 那么打印 “OK"結束如果
看出來,英文寫的程序更簡單清晰。
其實從語言學的角度來說,英文是線性的一維語言,而中文是平面的二維語言。而程序恰恰是線性的一維的。也就是說,線性的英文正好能契合線性的程序。所以,中文并不適合現有的編程方式。
然而,未來的發展可能超出你的想象。未來可能會有多維度的量子計算,也許二維的中文反而會比一維的英文更適合。
程序員對比過中文編程和英文編程就會明白,中文編程反而會提高門檻。因為編程的核心根本就不是什么語言,而是程序化思維方式。最簡單的并不是英文編程,而是數學符號編程,極度抽象,普通人很難理解,但代碼量特別少。
補充一句,其實現代的語言比如Java,都支持Unicode,也就是說可以用中文甚至世界其他語言做變量名和函數名,你可以試試看,這樣看起來就基本上就相當于是中文編程了,對比一下英文編程,你就會知道哪個更好了。