中文編程的路該怎么走?
說起來,我關(guān)注程序和編程,是從小學(xué)時(shí)姑姑家買了電腦,我把玩后開始感興趣的,
然后是初中畢業(yè),想找到一條生存路,開始研究程序世界,但遇上了互聯(lián)網(wǎng)鋪開和娛樂至上年代,
后面讀了個(gè)大專學(xué)軟件工程,但屁用沒有,老師完全不教編程相關(guān),竟然還教毛概,大數(shù),大語等半點(diǎn)關(guān)系都沒有的,
還要考試,我那會(huì)兒就開始反思中國的教育是不是出問題了,
之后,自然地,畢業(yè)即失業(yè),一直打散工,直到16年開始關(guān)注中文編程,一直找了這么多年,
尋覓過很多道路,其中也遇到過一些道友,發(fā)現(xiàn)都無法精準(zhǔn)命中中文編程的痛點(diǎn),即中文編程的出路在哪里,
時(shí)至今日,中文編程尚處于萌芽狀態(tài),從吳濤的易語言到現(xiàn)在,可以看出,中文編程既沒有PL理論,也沒有建立出什么實(shí)際的程序生態(tài)和編程生態(tài),更別提基于共識(shí)起草標(biāo)準(zhǔn)了,所以中文編程這個(gè)事業(yè),還是一事無成的零蛋,
程序的本質(zhì)就是,從零憑空構(gòu)造一套系統(tǒng),看起來脫離實(shí)際,其實(shí)它緊密圍繞世界的實(shí)際邏輯建立,即策略、模式匹配、算法等概念描述的一個(gè)抽象對(duì)象,
我觀中文編程的現(xiàn)狀,得出一些膚淺的分析結(jié)論;
它從上到下(頂?shù)降?,或從下到上,都行不通,因?yàn)檫@些已經(jīng)是西方軟件工程建立了半個(gè)多世紀(jì)的壁壘,
其體系和生態(tài)已經(jīng)非常龐大繁雜,所以現(xiàn)在入程序行業(yè)的人,一般都是加入他們,
這些人秉持的理念是打不過就加入,而非獨(dú)立自主搞自己的,畢竟像倪光南和吳濤這樣有骨梁的在一個(gè)群體里始終是少數(shù),
所謂從上到下,就是從應(yīng)用層到指令系統(tǒng),應(yīng)用層就是生態(tài),生態(tài)每天都在產(chǎn)生海量的庫,
無論是漢化它還是使用它(這個(gè)使用是指生產(chǎn)者實(shí)施者)都是南轅北轍,只會(huì)疲于奔命地跟著西方的屁股跑,
而從下到上,看似簡單,實(shí)則壁壘高到難以想象,西方人在最基本的東西里穿插了技術(shù)墻,
比如指令系統(tǒng),就是指令集,我用的是x86,我想找到指令的機(jī)器碼,我發(fā)現(xiàn)它根本沒有固定的0101構(gòu)成的機(jī)器指令,
因?yàn)樗荂ISC,所以它的指令是動(dòng)態(tài)編碼的,我想做一個(gè)x86的匯編器,我需要看懂它的說明書,
還要會(huì)一門靜態(tài)編譯性語言,而這兩樣對(duì)一個(gè)非專業(yè)的普通人來說就像天書,
其說明書,要看英文是基本的,其技術(shù)性的詞匯和描述,和帶有文法陷阱(俚語,慣用口語)的句子和縮寫,
是壁壘和技術(shù)墻的雙重壓制,而靜態(tài)編譯性的語言一樣有這個(gè)問題,更別提破解靜態(tài)編譯語言的編譯器,
比登天還難,這一系列就像三體里的質(zhì)子,從最基本的規(guī)則中鎖死我們?cè)谶@個(gè)領(lǐng)域的發(fā)展,
擬人比喻就是,削掉你的頭和四肢和五臟六腑,只留十個(gè)手指和血管連著,讓你只用手指為西方的軟件工程生態(tài)添磚加瓦,
通過血管輸送養(yǎng)分供養(yǎng)西方程序生態(tài),現(xiàn)在加入的那幫人就在干這個(gè)事,并且他們還有優(yōu)越感,
當(dāng)然,現(xiàn)在有開源的RISC-V可供選擇,它有固定的0101機(jī)器指令,寫匯編器應(yīng)該沒那么難了,
但我沒有基于它的CPU和整機(jī),所以我無從下手,
經(jīng)過上述分析,和平日里的反思,我找到的路就是虛擬機(jī)這條路,
虛擬機(jī)指語言虛擬機(jī),不局限于某種指令系統(tǒng)和處理器架構(gòu),也不局限于某個(gè)操作系統(tǒng),
因?yàn)樗且慌_(tái)虛擬的機(jī)器,是對(duì)圖靈機(jī)或馮氏結(jié)構(gòu)的虛擬化,用軟件和程序來模擬,
當(dāng)前只有這條路可走,它能破解從上到下還是從下到上的問題,jvm字節(jié)碼和llvm中間碼就是這種產(chǎn)物,
我以前沒注意到這條路的可行性,但現(xiàn)在我發(fā)現(xiàn)虛擬化才是中文編程真正可以實(shí)現(xiàn)和走的路,
有人要說龍芯,但龍芯的指令系統(tǒng)和處理器架構(gòu),一是繼承自西方體系的指令集和設(shè)計(jì)理論,二是為了接西方體系的軌,
而非真正的獨(dú)立自主,它沒有真正意義上的從零的匯編器和編譯器,大家可以去看它的官方文檔,
龍芯的目的還是為了供養(yǎng)西方軟件生態(tài),因?yàn)樗麄兿霃奈鞣缴鷳B(tài)里分一杯羹,所以龍芯從源頭的路就是歪的,
所以中文編程想要擁有自己的硬件生態(tài)體系,那就必須要完全從零設(shè)計(jì)指令系統(tǒng),和由此而生的PL理論和匯編標(biāo)準(zhǔn),
以及,適應(yīng)這套指令系統(tǒng)的電路,IC生態(tài),等等,
當(dāng)然,我們現(xiàn)在熱衷中文編程的道友,不奢望硬件生態(tài),因?yàn)槟菍?shí)在可望不可即,
所以我們只能搞搞中文編程的軟件生態(tài)體系,通過語言虛擬機(jī)來構(gòu)造中文漢字程序生態(tài)這個(gè)上層建筑,
經(jīng)過這么多年的熱衷探索,中文編碼標(biāo)準(zhǔn)在馮氏結(jié)構(gòu)里是一個(gè)全面性被打壓的問題,
馮氏結(jié)構(gòu)有5大部件,分別是[運(yùn)算器、存儲(chǔ)器、控制器、輸入、輸出],這不單單是硬件電路使用了這些概念,
馮氏結(jié)構(gòu)是一種理論,它在軟件和程序里也是可以應(yīng)用的,編程語言的功能清單里,不但包含了基于5大概念構(gòu)造的功能,
比如數(shù)組,變量,流程控制. 還有基于這基本概念構(gòu)造的復(fù)合功能,比如結(jié)構(gòu)體,函數(shù).
還有文件系統(tǒng)也有5大概念的本質(zhì),輸入法也一樣,例子太多不列舉,
如果光是尋覓編程語言的編碼,其實(shí)是南轅北轍,真正應(yīng)該研究的是馮氏結(jié)構(gòu)概念實(shí)例化后的編碼和指令系統(tǒng)的字符編碼,
方能深入破解中文編程編碼標(biāo)準(zhǔn)的根源,
中文字符編碼不單單只局限于輸入和輸出,大家明白吧,
基于上述分析,若要搞中文編程的語言虛擬機(jī),第一步是設(shè)計(jì)基于中文漢字的指令系統(tǒng),
用漢化的方式寫虛擬機(jī)是基本要求,即標(biāo)識(shí)符就得是中文漢字,設(shè)計(jì)虛擬機(jī)所用的馮氏結(jié)構(gòu)概念得用中文漢字編碼,
這樣就可以從源頭用中文漢字封裝馮氏結(jié)構(gòu)概念為基本編程組件,
那么用這樣的語言虛擬機(jī)建立的上層建筑,比如匯編器,PL理論,編譯器,輸入法等等基礎(chǔ)設(shè)施,才能完全是基于中文漢字的,
也就不會(huì)遇到編碼問題,
說一個(gè)歧視性的問題,UTF8是對(duì)Unicode的再編碼,當(dāng)它編碼漢字的時(shí)候,大多是用2-3個(gè)字節(jié)來存儲(chǔ)漢字的,
每個(gè)字節(jié)8位二進(jìn)制(一個(gè)字節(jié)),也就是說存儲(chǔ)一個(gè)漢字要有16位-24位二進(jìn)制,大家考慮下,16位甚至24位二進(jìn)制可以代表多少個(gè)狀態(tài)了?
常用漢字3000-5000個(gè),也就是說最多只需5000個(gè)狀態(tài),所以要存儲(chǔ)漢字12位-16位是完全夠了,
甚至康熙字典都能全部存儲(chǔ)下來,而UTF8是為了適應(yīng)拉丁字母的排位而設(shè)計(jì)的,字母在UTF8碼表里享有第一優(yōu)先級(jí),
字母大多是用8位二進(jìn)制編碼的(一個(gè)字節(jié)),所以UTF8編碼算法是未滿256個(gè)狀態(tài)之前存儲(chǔ)字母,超過256個(gè)狀態(tài)的字符,
就用16位甚至24位二進(jìn)制來編碼存儲(chǔ),故意增高非拉丁字符的存儲(chǔ)成本,讓非歐羅巴文明的種族覺得自己使用的文字低人一等,
而UTF8是現(xiàn)在軟件程序互聯(lián)網(wǎng)打印機(jī)反正就是信息傳輸、存儲(chǔ)、處理的事實(shí)標(biāo)準(zhǔn),
大家仔細(xì)想吧,為啥不是UTF16流行或干脆Unicode本身流行?為啥非得定義8位二進(jìn)制 = 一個(gè)字節(jié)?一切都是為了西方優(yōu)先.
要搞中文編程,其實(shí)首先應(yīng)該解決中文編碼的問題,然而卻沒有任何人反思這一點(diǎn),
當(dāng)然,UTF8也是可以用,就是成本和代價(jià)高了億點(diǎn),自然就由大家來全體承擔(dān)了,
還有一個(gè),PL理論不是非得用龍書虎書鯨書那一套編譯理論,并且,除了圖靈機(jī)以外還有一大把計(jì)算理論,
但是當(dāng)你打開搜索編譯器相關(guān)的時(shí)候,出來的幾乎全都是"詞法分析""語法分析""代碼生成"那一套,為啥?
因?yàn)楸唤稻S打擊了呀,因?yàn)?#034;加入他們"的那部分人在十多年前就開始帶節(jié)奏了,典型的比如輪子哥,
中文編程的生路難走至極,但走出來就可以日月?lián)Q,
生態(tài)的問題不是一個(gè)人能解決的,打破封印需要破解者,而非歸順者,