终于,
我已经完全性地找到了中文汉字编程的方法,
从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还小,发展到今天为止,对中文汉字的支持都还没有,主要是知道栈语言的人太少了,更不了解它的特性,并且栈语言一样可以从机器语言开始定义原语,从零写操作系统,一样可以承载中文汉字编程,因为栈语言的语义一样是高度抽象的,它甚至不局限于符号,期待这种好东西能被更多人发现,创造出我们的中文汉字编程生态.