https://www.cnblogs.com/DSharp/archive/2013/05/28/3103298.html
漢語(yǔ)編程這個(gè)東西,很特別,先逐步分析推理下:
1.掌握一門(mén)開(kāi)發(fā)語(yǔ)言不難,只要頭腦正常的正常人都可以做到.
2.掌握編譯器就很困難,好在現(xiàn)有的技術(shù)條件,門(mén)檻已經(jīng)大大下降了,一般稍微聰明一點(diǎn)的程序員都可以掌握.
3.設(shè)計(jì)一門(mén)編程語(yǔ)言有一定門(mén)檻,它至少要求你了解各種語(yǔ)言,各種編程范式,一些計(jì)算機(jī)理論等,好在這方面有互聯(lián)網(wǎng),只要花些時(shí)間就可以.
4.設(shè)計(jì)一門(mén)好的編程語(yǔ)言很難,但山寨一門(mén)語(yǔ)言是相對(duì)簡(jiǎn)單的,比如可以山寨C#.
5.把復(fù)雜的語(yǔ)言編譯成機(jī)器指令很困難.因?yàn)楣ぷ髁亢艽?很底層.而且技術(shù)相對(duì)更復(fù)雜.
6.好在現(xiàn)在有CLR和JAVA虛擬機(jī)這樣廣泛的中間運(yùn)行時(shí)平臺(tái).還有瀏覽器這樣的運(yùn)行時(shí)環(huán)境,現(xiàn)代的語(yǔ)言不一定非要從底層做起,比如類(lèi)scala,類(lèi)coffeescript等,這并不妨礙它成為一門(mén)優(yōu)秀語(yǔ)言.
7.語(yǔ)言未必都必須是編譯式的,現(xiàn)在計(jì)算機(jī)這么快,各種運(yùn)行時(shí)也很流行,比如javascript引擎,因?yàn)樘餍刑珡?qiáng)大,連語(yǔ)言大師ander也去搞TypeScript.還有CLR和JAVA虛擬機(jī).
可見(jiàn),以上一些條件,只要避開(kāi)困難部分,基于中間語(yǔ)言運(yùn)行時(shí),或者就做成腳本語(yǔ)言,把底層的難度化解了,完全可以發(fā)揮設(shè)計(jì)及想象力,更多只關(guān)注語(yǔ)言層面本身.讓一個(gè)掌握基本技術(shù)的人直接和ander站在同一起跑線上,你也可以去做一個(gè)YouScript.
但是計(jì)算機(jī)語(yǔ)言,更多的是表達(dá)計(jì)算,所以更"符號(hào)化",這就是為什么程序語(yǔ)言里有大量的"關(guān)鍵字","符號(hào)","數(shù)字"組成呢
如果按正常思路去做,那么傳統(tǒng)漢語(yǔ)編程,僅僅只會(huì)把"關(guān)鍵字"里的"英文單詞"代替成"漢字",這樣的東西頂多只是讓初學(xué)者容易上手.價(jià)值不大,不能從根本上發(fā)揮漢語(yǔ)的威力.比如易語(yǔ)言,除了中文關(guān)鍵字,所有的都是傳統(tǒng)編程語(yǔ)言的結(jié)構(gòu).所以它更適合初學(xué)者上手,但真正做開(kāi)發(fā),它能實(shí)現(xiàn)的和關(guān)鍵字是英語(yǔ)的是一樣的.這就是現(xiàn)存漢語(yǔ)編程的誤區(qū).
當(dāng)然,就是這樣一條路,也需要有大量人去做,去走,只有一個(gè)易語(yǔ)言,實(shí)現(xiàn)零的突破是不夠的.而吳濤先生創(chuàng)了這個(gè)零的突破意義非常大.
那么,以后漢語(yǔ)編程可能的方向應(yīng)該怎么走呢?
首先我們分析下漢語(yǔ)跟其它語(yǔ)言的差別在哪里,比如英語(yǔ)
1.漢字?jǐn)?shù)量龐大,有豐富的題材.
2.漢字是圖形化,結(jié)構(gòu)化的,很直觀,表意能力非常強(qiáng)
3.漢字有個(gè)最最偉大的特點(diǎn),就是可以輕松組成"衍生詞組",比如"刀",加個(gè)前綴就是"小刀","大刀","水果刀",等等.天生就是面向?qū)ο?抽象的.而英語(yǔ)根本做不到這點(diǎn).
4.漢字有個(gè)最最偉大的特點(diǎn),就是可以輕松組成"復(fù)合詞組",比如"對(duì)","象",本身就有其含義,組成"對(duì)象",又有另一層含義,天生就是面向函數(shù)式的.而英語(yǔ)根本做不到這點(diǎn).
5.漢字有個(gè)最最偉大的特點(diǎn),就是可以輕松"組合連接",比如"吃","飯",連接就是"吃飯",比如"先進(jìn)","先出","后出",連接就是"先進(jìn)先出","先出后出","后進(jìn)先出","后進(jìn)后出".天生就是面向組合及接口式的.而英語(yǔ)根本做不到這點(diǎn).
6.漢字有個(gè)最最偉大的特點(diǎn),就是可以輕松"造詞",比如"裸","婚",比如"戶","口",比如"哇","靠",本來(lái)沒(méi)關(guān)系的東西,一組合就成一新詞,而光漢字就有幾千個(gè),這樣的組合基本上是無(wú)窮盡的.連量子計(jì)算機(jī)都足夠使用.而英語(yǔ)根本做不到這點(diǎn).
7.漢語(yǔ)還有另一個(gè)特點(diǎn),表意能力強(qiáng).不用很精確.這在計(jì)算機(jī)發(fā)展初期,是個(gè)劣勢(shì),但隨著現(xiàn)在發(fā)展過(guò)了初級(jí)階段,就變成了優(yōu)勢(shì),現(xiàn)在很多計(jì)算都講究"云","模糊","統(tǒng)計(jì)",因?yàn)閿?shù)據(jù)量太大了,不用十分精確,也無(wú)法做到精確.
比如:要分析"裸婚"這詞的某行業(yè)流行度,因?yàn)檫@詞就是一詞,很容易.但象英語(yǔ)就困難了,因?yàn)橥瑯痈拍詈芏鄷r(shí)候不是一個(gè)單詞,就算一個(gè)單詞還有不同的時(shí)態(tài),還有單復(fù)數(shù),根本無(wú)法象漢語(yǔ)這樣.
通過(guò)上面的分析,結(jié)合計(jì)算機(jī)的現(xiàn)有編程理論及技術(shù),我們可以發(fā)現(xiàn)如下:
1.面向過(guò)程,和英語(yǔ)相當(dāng),沒(méi)有特別的地方
如:
if true then do XXX, 漢語(yǔ)是假如 是 那么 做 XXX
a = b + c, 漢語(yǔ)是 小計(jì)= 單價(jià)*數(shù)量
可見(jiàn),兩者在計(jì)算表達(dá)式和語(yǔ)句上,是一樣一樣的.當(dāng)然漢語(yǔ)的對(duì)中國(guó)人來(lái)說(shuō)更直觀.
2.面向?qū)ο?英語(yǔ)那就比較弱了,漢語(yǔ)的強(qiáng)勢(shì)立即體現(xiàn)
如:
class county
class china : county
class UnitedStates : county
class France : county
class London : county
看上面的繼承及類(lèi)型對(duì)應(yīng)關(guān)系,因?yàn)橛⒄Z(yǔ)單詞都是不相同的,沒(méi)規(guī)律的,你無(wú)法從字面量上迅速看出問(wèn)題.漢語(yǔ)的是這樣的
國(guó)家
中國(guó) : 國(guó)家
美國(guó) : 國(guó)家
法國(guó) : 國(guó)家
倫敦 : 國(guó)家
看,從字面量上,中文很容易就帶上分類(lèi),而不增加負(fù)擔(dān),非常直觀.
3.函數(shù)式.漢語(yǔ)的超越,相當(dāng)于量子計(jì)算機(jī)對(duì)傳統(tǒng)計(jì)算機(jī)的超越,不是一個(gè)層面的.
以設(shè)計(jì)輸入輸出加數(shù)列看,英文的就懶得舉例了,直接看中文的.
設(shè)計(jì)函數(shù):輸入,輸出,先,后,棧,數(shù)據(jù)
通過(guò)函數(shù)式的組合:
輸入棧,輸出棧,輸入數(shù)據(jù),輸出數(shù)據(jù),先輸入棧后輸出數(shù)據(jù)...這樣的組合操作,看上去很自然,把程序變成字面語(yǔ)句.而要知道,幾千個(gè)漢字,能組成無(wú)數(shù)的詞組,而無(wú)數(shù)的詞組再組成段語(yǔ),然后再組成...
這個(gè)強(qiáng)大的編程功能,量子計(jì)算機(jī)都?jí)蛴?
4.邏輯運(yùn)算.
這方面用漢語(yǔ)編程也很有強(qiáng)項(xiàng).比如
山 里有 廟,廟 里有 和尚.
可以推理出: 山 里有 和尚
這完全可以做出類(lèi)似prolog的推理式漢語(yǔ)語(yǔ)言.而且操作和使用都很直觀.
5.正則表達(dá)式分析.
現(xiàn)代計(jì)算機(jī)數(shù)據(jù)處理,需要處大大量的數(shù)據(jù),文本,語(yǔ)音,圖像.視頻
首先來(lái)看數(shù)據(jù),圖像和視頻,這中西方是沒(méi)有任何差別的.略過(guò).
然后就是自然語(yǔ)言的"文本"和"語(yǔ)音".差異就出來(lái)了.
看英語(yǔ):english,法語(yǔ),france.
如果用中文,都是兩個(gè)"字",每個(gè)"字"都不可以拆分的.處理到"字"就是最小單元.而用字母表達(dá)的語(yǔ)言,得處理到"字母",可見(jiàn)漢字算法是更快更容易的.但是漢字比字母多,這在算法上是以空間換時(shí)間.
然后是發(fā)音,可以看出,每個(gè)漢字對(duì)應(yīng)一發(fā)音(當(dāng)然有少數(shù)多音字),有很好的對(duì)應(yīng)關(guān)系,而單詞不是這樣的.
綜上可以看出,漢語(yǔ)式遍程,可以模仿現(xiàn)有技術(shù),但更主要的是完全可以有突破性的創(chuàng)新.這種創(chuàng)新可以結(jié)合上漢字, 漢語(yǔ)的特點(diǎn),而這些特點(diǎn)經(jīng)過(guò)上面的分析,首先是可行的,其次是有很大優(yōu)勢(shì)的.能不能出現(xiàn)體現(xiàn)漢語(yǔ)優(yōu)勢(shì)的漢語(yǔ)編程語(yǔ)言,相信只是時(shí)間的問(wèn)題.