我看所谓“汉语编程”
生活随笔
收集整理的這篇文章主要介紹了
我看所谓“汉语编程”
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2007-09-23舊作。原載:http://blog.csdn.net/st_monad/article/details/1797146
最近看到solidot上有人灌水說又推出了一種漢語編程語言:
http://developers.solidot.org/article.pl?sid=07/09/19/0429258&from=rss
去看了看,沒有任何新意,和中蟒的視覺感受很類似,試想,天天讓一個正常的中國人寫這樣的漢語能不得神經(jīng)病嗎:
載入 系統(tǒng)
文件名 = 系統(tǒng).參數(shù)[1:]
定義 修正行尾(文件):
內(nèi)文 = 打開(文件名).讀入()
內(nèi)文 = 內(nèi)文.替換('/n/r','/n')
傳回 內(nèi)文
取 文件 自 文件名:
寫 修正行尾(文件)
上面這段是中蟒的“漢語代碼”。中蟒在cosoft.org.cn上的統(tǒng)計信息也是沒有繼續(xù)維護了:
注冊日期: 2002-04-29 15:07
活動統(tǒng)計: 0%
這類東西的本質(zhì)基本上就是在所謂“英文編程”的lexing前面加上一步preprocessing,把漢語轉(zhuǎn)換成英文,然后進入傳統(tǒng)的編譯過程。當然,如果更高明一點,可以用一個支持unicode的lexer/parser自己寫一個直接支持漢字字符關(guān)鍵字的編譯器,哈哈。不過,都是毫無創(chuàng)意。
用簡單的直譯來模仿英語的編程手法,實在是十分拙劣。單就打字來講,輸入for要比輸入“循環(huán)”要簡單的多。當然,打字不是問題,因為不是號稱有打字比賽漢字輸入速度已經(jīng)超過英文了嗎。
這個世界上,簡直沒有什么比毫無創(chuàng)意的發(fā)明更令人惡心和面目可憎的了!
在st. monad看來,這些人都沒有認識到漢語比起英文的不同在什么地方。相比英語來說,漢語不適合、不善于簡單的表達,而是適合凝練的表達。槍手貼[1]雖然通篇都是屁話,但是有一句還是值得在這里提一下的,那就是”漢語編程的原理是建立在漢字的本身優(yōu)勢上,漢字看起來很復(fù)雜,但表達的意義卻很豐富。“可惜的是,用”循環(huán)“代替for卻恰恰是揮刀子宮、完完全全放棄了這一優(yōu)勢。
有破亦當有立,到底什么樣的編程語言適合用漢語來表達而英語不善表達呢?如st. monad前面說的,必然應(yīng)該是語法“凝練”而不是“簡單”的語言。
為了更容易學(xué)習(xí)、記憶、輸入,英語編程語言必須拋棄自然語言的冗余表達,轉(zhuǎn)而使用更少的關(guān)鍵字、更簡單的語法,但是同時也意味著編程上的低級和復(fù)雜:為了表達一個邏輯結(jié)構(gòu),往往需要幾十行到上百行代碼。一個極端的例子就是brainfuck這個語言。看看BF寫的hello world吧[2]:
++++++++++ [>+++++++>++++++++++>+++>+<<<<-] >++. >+. +++++++. . +++. >++. <<+++++++++++++++. >. +++. ------. --------. >+. >. 我想人是很難習(xí)慣寫這種語言的。所以這個矛盾和自然語言的發(fā)展是一樣的:說話的人為了省力氣,傾向于用更少的單詞表達更多的意思;聽話的人為了更準確的理解,傾向于聽到意義唯一的單詞。所以自然語言的單詞的表達意義的數(shù)量是這兩個力互相較勁的結(jié)果。
回到漢語,漢語適合表達凝練的語法。這種語言不是沒有,APL就是[3]。APL連很多Unicode字符都用上了。當然,我的意思并不是說把APL拿來用漢字翻譯一下就OK了。而是,我們要使用這種思想,真正設(shè)計出特別凝練的、充分發(fā)揮漢語語言特點的漢語編程語言。
先這么多。
[1] http://www.cnbeta.com/articles/38598.htm
[2] http://en.wikipedia.org/wiki/Brainfuck
[3] http://en.wikipedia.org/wiki/APL_(programming_language)
最近看到solidot上有人灌水說又推出了一種漢語編程語言:
http://developers.solidot.org/article.pl?sid=07/09/19/0429258&from=rss
去看了看,沒有任何新意,和中蟒的視覺感受很類似,試想,天天讓一個正常的中國人寫這樣的漢語能不得神經(jīng)病嗎:
載入 系統(tǒng)
文件名 = 系統(tǒng).參數(shù)[1:]
定義 修正行尾(文件):
內(nèi)文 = 打開(文件名).讀入()
內(nèi)文 = 內(nèi)文.替換('/n/r','/n')
傳回 內(nèi)文
取 文件 自 文件名:
寫 修正行尾(文件)
上面這段是中蟒的“漢語代碼”。中蟒在cosoft.org.cn上的統(tǒng)計信息也是沒有繼續(xù)維護了:
注冊日期: 2002-04-29 15:07
活動統(tǒng)計: 0%
這類東西的本質(zhì)基本上就是在所謂“英文編程”的lexing前面加上一步preprocessing,把漢語轉(zhuǎn)換成英文,然后進入傳統(tǒng)的編譯過程。當然,如果更高明一點,可以用一個支持unicode的lexer/parser自己寫一個直接支持漢字字符關(guān)鍵字的編譯器,哈哈。不過,都是毫無創(chuàng)意。
用簡單的直譯來模仿英語的編程手法,實在是十分拙劣。單就打字來講,輸入for要比輸入“循環(huán)”要簡單的多。當然,打字不是問題,因為不是號稱有打字比賽漢字輸入速度已經(jīng)超過英文了嗎。
這個世界上,簡直沒有什么比毫無創(chuàng)意的發(fā)明更令人惡心和面目可憎的了!
在st. monad看來,這些人都沒有認識到漢語比起英文的不同在什么地方。相比英語來說,漢語不適合、不善于簡單的表達,而是適合凝練的表達。槍手貼[1]雖然通篇都是屁話,但是有一句還是值得在這里提一下的,那就是”漢語編程的原理是建立在漢字的本身優(yōu)勢上,漢字看起來很復(fù)雜,但表達的意義卻很豐富。“可惜的是,用”循環(huán)“代替for卻恰恰是揮刀子宮、完完全全放棄了這一優(yōu)勢。
有破亦當有立,到底什么樣的編程語言適合用漢語來表達而英語不善表達呢?如st. monad前面說的,必然應(yīng)該是語法“凝練”而不是“簡單”的語言。
為了更容易學(xué)習(xí)、記憶、輸入,英語編程語言必須拋棄自然語言的冗余表達,轉(zhuǎn)而使用更少的關(guān)鍵字、更簡單的語法,但是同時也意味著編程上的低級和復(fù)雜:為了表達一個邏輯結(jié)構(gòu),往往需要幾十行到上百行代碼。一個極端的例子就是brainfuck這個語言。看看BF寫的hello world吧[2]:
++++++++++ [>+++++++>++++++++++>+++>+<<<<-] >++. >+. +++++++. . +++. >++. <<+++++++++++++++. >. +++. ------. --------. >+. >. 我想人是很難習(xí)慣寫這種語言的。所以這個矛盾和自然語言的發(fā)展是一樣的:說話的人為了省力氣,傾向于用更少的單詞表達更多的意思;聽話的人為了更準確的理解,傾向于聽到意義唯一的單詞。所以自然語言的單詞的表達意義的數(shù)量是這兩個力互相較勁的結(jié)果。
回到漢語,漢語適合表達凝練的語法。這種語言不是沒有,APL就是[3]。APL連很多Unicode字符都用上了。當然,我的意思并不是說把APL拿來用漢字翻譯一下就OK了。而是,我們要使用這種思想,真正設(shè)計出特別凝練的、充分發(fā)揮漢語語言特點的漢語編程語言。
先這么多。
[1] http://www.cnbeta.com/articles/38598.htm
[2] http://en.wikipedia.org/wiki/Brainfuck
[3] http://en.wikipedia.org/wiki/APL_(programming_language)
總結(jié)
以上是生活随笔為你收集整理的我看所谓“汉语编程”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决win10升级到win11,打不开安
- 下一篇: 彻底解决 webpack 打包文件体积过