有人可能有这样的疑问:道与计算机显然不可能结合,即使道cpu设计出来,那么如何设计道程序的语言编译器,并且我的道cpu还没设计出来,所有这一切还是空谈,所以我的想法应该是民科无疑。对于网上的种种猜测其实有的是事实,有的就不符合事实了。今天我要在这里重新澄清一下。
道cpu其实很简单,上面我已经阐述过如何设计内存cpu,内存cpu已经非常接近可运作的道CPU模型,只是还必须增加一些控制组件,循环整个道指令及信息的控制组件,还有处理函数调用和返回的控制组件,这样整个内存CPU就可作为道程序运行的硬件。可能有的人有疑问,如为何设计内存数据的影子,让cpu去计算出来,可能更简单呀?其实内存数据的影子是为了充分利用内存的硬件便宜的特点,一些数据中的数据如果事先准备好再送到cpu去就可能省去cpu的计算时间。cpu中许多指令就是用来判断数据的一些组合状态设计的,如移位、是否全0或1、取出其中一位或几位,这些由cpu执行也没错,但我觉得如果让他们事先就准备好可能更有效率,至少达到同步执行的能力,在现在提倡并行的时代就更有效率了,只是要重新设计cpu指令了。重新设计cpu指令有两种方法:一种在加长指令,另一种重新设计几个内存cpu的操作指令让它与cpu共同运行,有点像协处理器的性质。按照直觉我选第二种方案,并在第二种方案尽量扩展使他像cpu那样方便数学运算,即像前面说过的其他两种cpu方案。这三种扩展都是按照cpu顺序执行的思路去做,后来觉得现在cpu越来越复杂,大部分的硬件都在为增加有限性能的并行多内核奋斗,而并行多内核没有软件支持却是一点也没有用的,因此就干脆让内存cpu每条指令并行运行,并行的控制权直接交给软件设计者,软件设计者从此不用在关心并行指令、多内核如何协调运作,只要设计正确的程序就可以了。这样扩展后的内存cpu指令有点像带if的超长指令,整个指令由于if的原因可以很长,但执行的功能却简单,甚至可以没有数学运算,要有数学运算必须为超长指令带上一个数学ALU也是可以的只不过会增加点成本。很多人不理解道指令,但是应该理解带if的超长指令,因为if判断里有时很多参数要判断,我们直接把这些参数设计在一条指令里,即如普通cpu将用很多条指令组合起来才能实现一条道指令。为何这样做,所有的努力都是为了全并行的指令,我们把并行的条件都写在了指令上了,这样cpu开发人员就不必为如何并行、多核想破脑袋了。
说了这么多,那么这个内存cpu能否满足道指令、道程序运行需要,我现在也不知道,因为我不是硬件设计人员,我也没有条件去实现这个内存cpu,虽然这个内存cpu利用的硬件随手拿来,主要是目前工作不允许。不过,虽然硬件上不能达到目的,本人利用数据库相对容易设计的特点,设计了在数据库可运行的内存cpu模拟系统,即道cpu模拟系统,我在数据库上设置一些库表当作内存,比如道指令表、待信息表、信息生成表、赋值表(=、函数调用、函数返回)、函数调用栈等,再写上个一直循环的存储过程就可模拟整个道cpu的运作,基本上不用写多少代码。这个模拟系统本人早就设计出来了,所以对网上的一些评论,始终不为所动,一直想把我的设计思路一点一点阐述出来,这样大家对cpu的设计就不会感到很难了。
模拟cpu设计出来后,就要设计合适的可编程的指令来运行程序。因为网上天天吵着中文cpu、中文编程语言、汉编、中文系统等,却没有一个真正有含量的东西出来,所以就把内存cpu指令设计成道指令的形式,杜绝任何有关计算机语言关键字的弊端。其实大家肯定没有仔细研究领会道指令,而且我在前面的文章里也已经故意透露道指令的数学依据,但没有人有点表示。现在再说一下,其实它是布尔逻辑的另一种表示,如果有人要是写出一个布尔逻辑等式而道指令不能表示的,我就信服口服了。大家想想如果道指令都能表示所有的布尔逻辑等式,那么还有基于布尔逻辑的计算机道指令不能设计出来的么!
其实我这样说,肯定还有人不明白,因为他把布尔逻辑当成0和1的等式,所以死活也不能理解道指令,就像国人死活说计算机基于数学“进制”设计出来的。按我的做法,计算机不需要任何数学理论,什么“大小、加减法、乘除、代数”统统不要了,只要一个如何判断两个符号是不是一样的东西就足够了,这个简单说就是比较功能(图灵机也需要这个最基本的功能)。我们经常说,物以类聚,人以群分,只要东西有了分类,只要能够判断出他的类性就可以了。在数学上就是在一个集合里,赋予每个集合元素各种属性(关系),这样就能在集合里找到相同属性的子集,任何集合元素都属于其中一个子集,那么这个集合的元素加上道指令就可以用来编程了(集合有关属性(关系)的具体理论请参考《拓扑学》)。这样做比图灵机还少了机械机构,完全像数学定理推理过程,一个等式蕴含一个结果,一条道指令也蕴含(生)一个结果。
基于布尔逻辑之上的道指令完全可用来数学推理,这个大家可以想想如何做到。我以后将会结合一些人工智能探讨如何让道指令模拟人类思维。