天天看點

我已經完全性地找到了中文漢字程式設計的方法

作者:孤獨行星2022

終于,

我已經完全性地找到了中文漢字程式設計的方法,

從16年開始找, 找了那麼多年, 原來事實的源頭是如此的簡單又實用,

用一句話就可以簡單描述過程, [用棧思維創造的棧語言]. 棧思想甚至可以上升到哲學範疇.

因為棧說白了就是個容器, 生活中可以用棧來抽象的容器實在是太多了,小到身邊見到的一切,平常所用的大多數日用工具,大到宇宙,

為啥用了這麼多年, 因為我被困在了C語族的迷局裡, 在網上能找到的所有文章文章教程, 甚至交流社群和群裡,

全都是C語族的内容, C語族就是自Fortran以來, 包括C C++ Java Python Rust ...等等, 反正就是這一類全部代碼,

形成的屏障壁壘大到難以想象, 而C語族是最不适合搞中文漢字程式設計的, 我以前沒發現這一點,

直到我跳出這個局以後, 了解并嘗試并實踐了以lisp與forth為代表的其它語族的用來構造程式邏輯的方法以後,

我發現了新的天地,

同時也對比了與C語族的差别後, 徹底看清了C語族迷局的本質,

C語族以中綴表達式為主,摻雜少量字首和字尾表達式,并且選取數學公式那樣類似的形式演算方法,

它的特點就是既遠離人類,也遠離計算機,也就是兩邊都不讨好,雖然偏向數學公式,但又不完全是,隻是模仿了公式的形,

其實就是個四不像,這就是它為啥那麼難用難學的原因,

又必須要有一個抽象的計算過程-編譯器,和龐大的庫去完善它自身的缺陷和不足, 是以C語族可以概括為面向函數庫程式設計,

它的備援也是越來越大, 占的空間越來越多, 但是實作的功能卻不多, 就那幾樣, 是以硬體的緩存和存儲空間也發展得越來越大,

但大部分都是在重複,

而以字首表達式為代表的lisp,就完全沒這個問題,因為它沒有變量這個概念,或者說它的變量是不變的,

是以也就不會存在備援, 是以也就不會占用巨大的存儲空間來表達實作功能的邏輯,

lisp是可以完全實作中文漢字程式設計的, 因為它以S表達式, 即-符号表達式為基礎,

符号顧名思義就是用各種符号,這就不局限于數學符号還是自然語言的文字元号了,

唯一的不足就是有括号,會隔開漢字和詞語句段, 當然,有些人會認為這是結構化,

是以這是仁者見仁智者見智的事.

所謂中綴字首字尾, 這個描述對應的是, 操作碼和操作數在形式邏輯上的位置,

還有個說法就是數學表達式 波蘭表達式 逆波蘭表達式. 其實這三者是相等的,

中綴對應數學表達式,就是操作碼在中間,操作數在兩邊.

字首對應波蘭表達式,就是操作碼在前面,操作數全在後面.

字尾對應逆波蘭表達式,就是操作碼在後面,操作數全在前面.

lisp選用字首,帶來了簡潔優雅的描述程式邏輯的方法,并且視程式和資料為一體,這是字首的波蘭表達式帶來的好處,

forth就是字尾的逆波蘭表達式這類,它更适合中文漢字程式設計,因為它連括号都沒有了,它完全不需要括号來概括程式設計語言的文法,

因為它的操作碼在操作數的後面,這對人類來說幾乎是最自然的表達方式,你可以把操作數看做是棧頂,而操作碼看做是棧底,

[要做什麼事,先準備材料,之後執行]. 就是這麼簡單, 每個細分的步驟都是這句話自身的遞歸, 它可以往下遞歸, 也可以往上遞歸,

有些人覺得這很反人類, 其實它隻是不适合當語言或口語話語來用, 但非常适合做文字書面表達, 其實是工程處理的利器,

并且,它還很适合指令式計算機的計算, 即便是C語族那麼多語言的編譯器到生成代碼這一步驟的時候, 也大多是用後序周遊來實作的,

然後又把順序改為字首和中綴去生成機器碼, 這種備援這種多此一舉, 在C語族裡到處都是,

計算機它天然就适合字尾表達式, 處理器的執行過程,就是先要準備操作數,然後丢給操作碼執行, 先執行操作碼就需要等待操作數到齊了才行,

forth這類棧語言它不适合用C語族的思維來看待, 它适合用棧思維去認知,

棧語言它不需要像C語族那樣每個計算階段都要用不同的工具鍊來實作,也就是不同的程式設計語言來做一件小事,

它可以直接從機器語言開始定義到進階語言,甚至人類語言, 這是由棧思維的邏輯本質決定的,

首先我們擁有的材料是電路構成的邏輯門,邏輯門構成的機器指令,機器指令由01001100這種形式表達, 當然,平常我們使用的時候都是把4位二進制轉為1位十六進制來用的,

由16進制組成的機器指令我們可以構造更進階的語素, 因為漢字也可以用16進制來表示, 是以這時候我們可以用16進制存儲的漢字表示某一單獨的語素,

比如标點符号 偏旁部首 點橫豎撇捺,或直接的單個漢字, 當然,這不是随意可以與機器指令綁定的, 我們得找出語意與指令的語義等同的漢字來綁定,

比如真1 假0, 與 或 非, 加減乘除,等等,

選用不同的漢字綁定操作碼和操作數,根據漢字的意義來實作, 我們就可以得到一套基本的表達邏輯,

在此基礎上,可以組合成複雜的邏輯, 單個字與詞句所表達的意義肯定不同, 但這卻可以用棧語言容納, 是以,并不是說3千5千個常用漢字用完了就沒法表達,

我們還可以定義詞語 句子來表達複雜的邏輯概念, 而這一樣可以被棧語言接受容納和執行,

為什麼呢? 你看我們看一本書, 我們要看完才知道整個内容的意義,對吧? 這其實就是棧思維的一種抽象展現,

你看書裡章節的内容相當于是一份一份地存儲在棧頂,當你看到書後面結尾的時候,内容增加就不斷地推到棧底了,

當你看完的時候,全部内容就從棧底傳回,你經過歸納總結就知道了整本書的内容在表達什麼意義, 怎麼樣? 棧思維可以概括這個過程吧,

既然可以用棧思維來陳述,那麼就可以把它通過棧語言轉化為程式邏輯, 是以你可以用棧語言定義機器語言到進階語言甚至人類語言所需描述的一切,

而其原理卻是如此的簡單,将人類的表達與計算機的表達完美合一, 真正的大道至簡,

//

原來函數式程式設計就可以實作中文漢字程式設計,真是踏破鐵鞋無覓處.而forth這樣的棧語言也可以實作,無非就是知名度小,生态也少得可憐.想想從16年始不斷尋找中文漢字程式設計道路,到底走了多少彎路,又在C語族family内撞得頭破血流,還被C語族的壟斷者(學閥/程式設計文人)洗腦PUA語言暴力,企圖扭曲我的程式設計認知,真是皇天不負苦心人,終于被我給突破了這層層難關與屏障與壁壘.

基于S表達式的函數式程式設計lisp,完全就不局限于某一單一品種的符号,S就是symbol,符号嘛,我想麥卡錫在設計lisp的時候,應該一早就考慮到這個符号是指地球上所有的符号,有史以來人類創造的所有符号,而不僅僅局限于字母或數學符号.C語族真是一個巨大的天坑,

還真是退一步海闊天空,一條道走不通了,立即換準沒錯.

希望中文漢字程式設計的愛好者們都來函數式程式設計lisp建生态, 用符号表達式寫各種庫,都用中文漢字來寫,壯大中文程式設計生态,直到量變引發質變,徹底從零建構起中文程式設計!

因為基于符号表達式的lisp,完全通吃進階語言到機器語言全範圍,它本來就可以在裸機上用機器指令構造原語,然後不斷疊代和自舉進而完善語言本身,當然也可以在裸機上從零開始寫作業系統.真是期待中文漢字程式設計生态強大到能創造出設計lisp晶片,直接把原語固定為電路裡的指令,那麼程式的速度應該會遠超C語族,期望這一天早日實作.

忘了說,棧語言例如forth也是可以實作lisp的成就,并且還沒有lisp的括号,lisp唯一的缺點就是括号太多,而棧語言連括号都不需要了,并且lisp具有的語言特性,棧語言一樣包括,遺憾的是,棧語言的生态比lisp還小,發展到今天為止,對中文漢字的支援都還沒有,主要是知道棧語言的人太少了,更不了解它的特性,并且棧語言一樣可以從機器語言開始定義原語,從零寫作業系統,一樣可以承載中文漢字程式設計,因為棧語言的語義一樣是高度抽象的,它甚至不局限于符号,期待這種好東西能被更多人發現,創造出我們的中文漢字程式設計生态.