- 博客(195)
- 问答 (3)
- 收藏
- 关注

原创 公共命名空间简述,实现自然语言编程的必经之路
公共命名空间的想法出现自2019年,到现在有三年了。在2022年底,总结一下这三年来的想法。就像字符集+字体,公共命名空间+新编译原理也是这么一对儿。字符集用来收集所有符号,字体用来显示字符集中的符号;公共命名空间用来收集所有的句子,新编译原理用来实现这些句子。公共命名空间是一个四维空间,四个维度分别是:句子、方言、同位素、冗余项(rǒng)。为了在二维的电脑屏幕上呈现四维空间,先呈现前两个维度。每一行是一个句子,每一列是一个方言。在行与列交叉处是单元格,点开单元格,是另一个二维表:每一行是一个同位素
2022-12-14 08:12:50
455
3
原创 韩语字符分析
多数汉字可拆分成两部分,算上字结尾,是三个符号。同时,韩语也是一个字变三个字,表示相同的意思,需要的字节数和汉语、英语都一样了。设想中,汉字用字根拼接而成,韩语也放弃这一万多个字符,使字符总数降低到6万,可以用2字节表示,也方便制作字体。查看unicode文档,发现韩语字符有11172个,这是19×21×28,其实就是19+21+28=68个符号的排列组合。个符号,有CJK ext A,包含6592个字符,从3400到4DBF,这一段可以替换成韩语68个字母,和汉字的结构描述符、字根。
2025-02-02 19:28:21
343
原创 设想中的计算机语言:可执行对象的构造函数和析构函数
可执行对象”是一个创意。现有的OOP,对象里储存的全是数据,代码集中管理。而可执行对象中储存的是代码。构造函数通过修改对象内的地址,完成重定向,而不是每调用一次函数都要查表找地址。也就是说,直接修改call, jmp指令后边的地址立即数。
2025-01-30 19:14:09
260
原创 蛇年的第一篇博客:设想中的汉字编码
本文描述了想象中的汉字编码,希望用拼接字根的方法,简化汉字编码。简化后,韩语字符也会跟着简化。最后,unicode字符的数量控制在216以内,可以用2字节表示。至此,用不同语言表达相同意思,所需编码长度差不多的设想,就更近了。虽然目标是2字节,但使用UTF-16仍有必要,保证可以编码114万多个字符,避免万一2字节不够用时的尴尬。新的编码将不兼容现有编码,可以命名为unicode CJK compressed。
2025-01-29 07:18:57
338
原创 我设计的CPU架构:CCSC,核-电路分离计算机
以上便是CCSC(核-电路分离计算机)的架构设计。该设计的目标是省电,并且通过将复杂电路移出核心的做法,简化核心,提高电路的利用率。之前有用简单电路模拟复杂电路的想法,但那不现实,CPU每执行一条指令都要调用一次加法器,如果加法器也需要模拟,执行速度会很慢,而且费电。所以,保留功能电路是设计CPU的必然选择。同时,如果每个核都设计所有功能电路,将是复杂的,且利用率低。例如,现有的CPU每个核都有除法指令,在新的架构中,除法指令在核心外部。
2025-01-24 07:27:24
498
原创 软件的收费方式
全国有700万程序员,占人口的1/200,200人养活一个程序员,每人支出收入的0.5%。每人每天玩手机5小时,一个月玩5×30=150小时,每小时收费0.75%÷150=0.00005。但是,还要考虑网民的网瘾,如果固定收费,会有人大量使用手机,网瘾就犯了。所以,应该计时收费,督促网民少用手机。另一个人,年薪百万,每天玩8小时,他需缴纳:1000000/12×0.00005×8×30=1000元/月。举例来说,一个人月薪4000元,每天玩5小时,他需缴纳:4000×0.00005×5×30=30元/月。
2025-01-20 21:52:00
189
原创 笔记,如何区分大端、小端?
所有计算机厂商储存字符串的方式是一样的:储存字符串"abcd",在地址低的地方储存a,在地址高的地方储存d,阅读一个字符串,是沿着地址增加的方向进行的。沿着地址增加的方向看,它的值是:01 00 00 00,这是小端。注意,字节内部没有字节序问题,所以,不要一股脑地写成10 00 00 00。沿着地址增加的方向看,先显示高位数字的是大端,先显示低位数字的是小端。GB2312编码的“啊”是0xB0A1,沿着地址增加的方向看,就是B0和A1,这是大端。更高的位在地址偏移量更大的地方,这么设计编程会容易点儿。
2025-01-17 12:11:11
205
原创 我设计的IP地址
IP地址不应该是神秘的,它和邮政编码、电话号码一样,只是个数字。考虑世界各地的人口,中国14亿,印度14亿,非洲14亿,欧美澳加起来17亿,亚洲其它地区17亿。分成5部分,各地的编号是:欧美澳1,非洲2,亚洲其它7,中国8,印度9中国和印度的邮政编码都是6位数,8-123456表示中国的一个地区。例如,我所在的邮区有8万人,最少需5位数,取6位数表示。IP地址是64位的,每4比特表示一个十进制数,可表示16位数。
2025-01-06 08:21:41
199
原创 缓存淘汰算法:次数除以时间差
记录缓存中的每一项的访问次数、最后访问时间,获取当前时间,可算出时间差,然后,用次数除以时间差,取最小的淘汰。这一算法比较慢,需配合多级缓存。一级缓存不很大,使用此算法。二级缓存可以大一些,使用其它淘汰算法。
2025-01-03 15:47:08
176
原创 变长的时间戳(第4版)
每400年有400×365+97=146097天,A类时间戳能表达1000个400年,是40万年,公元前后各20万年。1×××× 1×××× 0××××,这表示有3个32位。第2位是0,再看第3位,是0,就是A类;C类时间戳的单位是皮秒,写成A+B+C的形式,能表达很精细的时间。B类时间戳的单位是毫秒,和A类时间戳一起使用,满足多数需求。A类时间戳的单位是天,可以只有它自己,表示精确到天的时间;以32位为单位,一个时间戳可以是32位、64位、96位。B类时间戳表示一天中的毫秒数,它也可以储存于29比特中。
2024-12-28 19:47:00
319
1
原创 让汉语和英语一样长的字符编码
使用UTF-8编码表达相同的意思,需要的字节数,俄语是英语的2倍。使用UTF-16编码,英语是汉语的3倍。如何做到“不同语言表达相同意思,所需编码长度大致一样”?本文做出了尝试。
2024-12-21 18:03:02
174
原创 小王子压缩算法
在《小王子》这本书中,the little prince反复出现,设想应该可以把它做为新的符号,从而起到压缩的效果。搜集代码库,运行小王子压缩算法,留在字典里的,正是指令集需要的。这么一来,就求出了最优指令集。市场上并不缺少压缩算法,研究小王子压缩算法,是为了设计CPU最优指令集。霍夫曼编码依赖现有的符号边界,而本文要研究的,是寻找更好的符号边界。至此,找到了3个新的“符号”!有些时候字典过大,需要舍弃概率低的。
2024-12-20 19:23:34
231
原创 变长的时间戳(第3版)
从第2版的8类时间戳,缩小为3类。其中,A类时间戳以天为单位,分配146097000个数字给它,能表达40万年。当只使用A类时间戳时,它以天为单位,也就是日期类型date。变长时间戳第3版,较第2版而言,减小了表达范围,更贴近实际使用情况。第2版,表达范围从5880万亿年,到普朗克时间,这也太夸张了。时间戳的长度选32位,或是64位,都有限制。B类时间戳以毫秒为单位,分配86400000个数字给它,能表达1天。常用的格式为A+B,占64位,精确到毫秒。更精确的时间,用A+B+C,占96位。
2024-12-16 08:44:21
136
原创 最简单的计算机:真值表计算机(TTC)
就像编译原理优化程序前,需要把程序转化为中间代码,然后针对中间代码进行优化一样。如图,一块电路有7个端口,分别是输入A, B,输出C,真值表(在下端)。只是速度慢了一点,例如,它需要用软件的形式模拟一个加法器,每执行一条指令,就要调用一次加法器函数,那叫一个慢啊!为了让TTC快一点的研究,可用于实践。编译原理龙书上说:有“硅编译器”,即将源代码转化为电路的编译器。有了它,就能制作出TTC的编译器。上述4条指令可看做一个整体,这样一来就能减少加法器的调用。真值表计算机(TTC)是一个理论模型,有研究价值。
2024-12-15 13:05:56
266
原创 输入法:点三下输入一个汉字
第二键区分左右,若是左半区,则表示选择第一键中的第一个声母;每个半区有4个按钮,分别是不加中间字母,以及中间字母为i, u, ü的情况。虽然也有9键的方案,但重码率较高。计算一下,9键点2下,共81种排列组合。而汉字的读音,不计声调,有400多个。所以,设计了“三拼输入法”,使用较少的按键,点三下输入一个汉字。对于某些不便使用26键的情况,例如按钮太小,不好按,可以考虑使用此输入法。且是三行四列,比之前的四行三列,更扁了。第三键是韵母,例如“路”,拼音是lu,只有声母和中间字母,没有第三键的韵母,就选空。
2024-12-07 22:21:18
270
原创 公共命名空间:可挂载同位素
公共命名空间是实现自然语言编程的必经之路。它可以理解为一张巨大的表格,其中收录了所有句子。用unicode来做类比,unicode里边收录了所有字符,且它是一个一维空间,先填充字符集,再研究字体,于是,可以在电脑上显示字符;然后说公共命名空间,其中收录了所有句子,且它是一个四维空间,先填充公共命名空间,再研究编译原理,于是,可以实现自然语言编程。
2024-11-22 06:12:47
850
1
原创 公共命名空间,例4
以上三句,对上下文容器的使用方式不同。第一句,不使用上下文容器;第二句,没写至哪里,就至上下文容器,它把运算结果推送至上下文容器;第三句,从上下文容器获取参数,并把运算结果推送进去。有了公共命名空间,世界各地的程序员都可以用母语编程,如上例。美国的程序员用英语编程,并不是C++这样看上去像英语的语言,而是真正的英语。
2024-11-20 07:53:36
147
原创 公共命名空间:内置名
第一句明确指出了使用什么,使用方言;第二句也是使用方言的意思。如果中括号里的内容,完全当做参数来处理,那么,第二句就难以确定使用什么。这里需要使用叫做“内置名”的技术,如下:把参数[哇哇小可爱的方言]修改为看上去有些累赘,但语义明确。以上便是内置名的使用方法。另一个例子,调用函数。调用[激励函数]调用函数[激励函数]把函数说了两遍。
2024-11-09 11:42:09
273
1
原创 公共命名空间,2024年11月的笔记
电脑也是一项发明,会用电脑的人不一定懂得电脑的原理,这是程序员和电脑操作员的区别。填充公共命名空间应该能在手机上进行,这样一来,能有更多人参与进来,而不是必须买台电脑才能填充。之前的博客中说到,公共命名空间是一个网站,方便所有将要使用计算机语言的人来填充。但最终的结果是,需要字符集,人工地把所有字符收集起来,让电脑一个个记住,这样便解决了在电脑上显示字符的问题。汽车是一项发明,许多人都会开汽车,但不一定懂得汽车的原理,这就是工人和司机的区别。继续考证,或进入大学,学习计算机专业,获得更高等级程序员的称号。
2024-11-03 08:15:54
405
1
原创 公共命名空间,2024年10月的笔记
首先,我国选择C++做为竞赛语言,许多人学C++,学习的结果是:看到“公共命名空间”,就幻想出一个私有命名空间,其实,公共命名空间和C++的命名空间无关!
2024-10-30 07:58:03
357
1
原创 公共命名空间:上下文容器
第二行执行时,还缺一个参数,从上下文容器中找,找到了这个整数。具体来说,"输入一个整数"和"输入一个整数至[n]"是两个函数,这两个函数很像,唯一的区别在于是否向上下文容器推送变量。公共命名空间,是供程序员讨论的空间,大家在这里讨论计算机语言应该是什么样子的,然后,由语言的制作者实现计算机语言。另外,“重复[6]次”、“重复[6]遍”,意思是一样的,在公共命名空间中,这是一组冗余项。准确地说,上下文容器不属于公共命名空间,它更像是公共命名空间中的某个方言的特性。至此,上下文容器为空,不推送,也不亏欠。
2024-08-13 18:10:16
261
2
原创 压缩转义符到只剩一个反斜线
例如,引入了新的转义字符的字符串,就不可能用一个正则表达式来描述,词法分析要创新。理论上可以,因为反斜线加小括号里是一门微型语言,可以表达这12个,甚至更多意思。例如,程序员A就发现,应该让字符串中的转义字符尽可能少,只剩一个反斜线即可。这是因为转义符要求尽可能少,以至于只剩下一个反斜线,这时,应该添加一个符号。熟悉C语言的程序员B,和Java语言程序员C立即发现,这么写不对。有的时候,变量名可以和换行符、制表符等区分开来,就可以省略等于号。的写法,这需要显示反斜线本身,和后边括号里的内容。
2024-08-12 06:02:41
495
1
原创 公共命名空间的例子3
在x语言中,不符合“先乘除后加减”,这个句子应该怎样解释呢?第一步,进行词法分析,目的是识别出注释和字符串,其中可能包括任意符号,干扰编译过程。第二步,用句号、分号分割,并用数数的方法处理括号,识别出单个语句。这种分析方法是先用优先级低的符号进行分割,再分别处理每个段落。以1+2×3为例,原本的做法是先算乘除,新的方法是:先用加号分割,再处理1和2×3,最后构建起一棵语法树。现有的语言中也有类似情况,如正则表达式。正则表达式被当成一个字符串,在运行时编译并执行。
2024-08-12 05:58:53
330
原创 公共命名空间的例子2
公共命名空间尝试收集所有的句子,它给程序员准备了一个讨论、甚至是“吵架”的地方。程序员对计算机语言的设想和要求,在这里得到体现。语言的制作者通过分析别人讨论的内容,进行权衡,决定语言应该是什么样子的。这比他自己在那想象要好。结果,语言凝聚了众人的智慧,不再是某个语言之父的个人创作。先填充公共命名空间,再实现计算机语言。这个过程可能要重复多次,但还是次数少一点为妙。不能指望一次成型,但像现在那样,出现上千种语言,把一个过程重复上千次,也是不好的。
2024-08-07 05:25:22
468
原创 公共命名空间的例子
通过上述讨论,关于解方程的句子就基本定型了,然后,交给语言的制作者去实现语言。在公共命名空间中,程序员不能像传统语言那样,自定义函数名,而是使用已经讨论通过的句子。或许公共命名空间中的讨论一般没有定论,对于容易产生定论的话题,它们早就讨论完了,用不着公共命名空间登场。现有的上千种计算机语言,是上千个“语言之父”的杰作,这些语言大同小异,却不相通。这样一来,需要有“句子相关的解析器”,把特定的解析器和特定的句子关联起来。程序员C发现,既然是关于x的方程,那么解一定是放在x里,所以,可以进一步修改。
2024-08-06 09:55:05
247
1
原创 数据结构:带索引的双链表IDL
它更省内存,可以用于从内存里的红黑树,到硬盘上的数据结构(如B+树),的转换过程中的替代品。举例来说,索引中储存的长度是6-6-5-6,插入一项之后变成6-7-5-6。总长度为24,分4段,平均每段长度为6,所以,修改为6-6-6-6。查找数据时,在索引数组中采用二分法,先找到双链表的中间位置,比大小。相比使用数组,对于有1M个元素的数组,在首部增加1项,会产生1M个数据移动。设双链表的最大长度为100万,则索引长1000,每个索引项中的长度为1000。如图,下方是一个双链表,上方是索引。
2024-08-04 06:00:34
515
原创 公共命名空间中的自定义函数
这种情况就像生产汽车和驾驶汽车的区别,程序员相当于生产汽车的工人,普通人相当于司机。当然,充当字典角色的正是公共命名空间,先填充公共命名空间,再实现计算机语言,不要轻易修改公共命名空间,给语言的使用者一本好用的、稳定的字典。在新的语言中,不能像传统语言那样,有“自”定义函数的功能,不能由程序员决定函数的名字,而是由“公共命名空间”来决定。其中中括号表示参数的位置,百分号表示“类型”,这是六个独立的命名空间的一部分,大于号表示这是一个输出变量。开发程序的过程会有些变化,先选择方言,再使用方言中的句子。
2024-07-31 12:13:25
489
原创 未来的汉字编码
一字节模式兼容ASCII码,是0*******的样子。两字节以上都是多字节模式,是多个1*******加上一个0*******结尾。每个字节有7比特可用,三字节即可表达unicode全部字符,因为unicode范围是0~0x10FFFF,21比特。理论上讲,UTF-8inf可以表达任意大数,inf正是“无穷”的意思。
2024-07-29 10:38:50
427
原创 计算机组成原理:海明校验
g4上边有3个8和1个p4,3个8对应b5, b6, b7,g4的值等于对b5, b6, b7, p4求偶校验的结果。计算了g4g3g2g1后,发现它的值等于0000,这表示没有错误。在上图中,对绿色的7比特数据进行海明校验,需要添加紫色的4比特校验位,总共是蓝色的11比特。然后竖着看,p4上边有3个8,分别对应b5, b6, b7,p4的值等于这三位的偶校验的结果。p1上边有5个1,p1的值等于对b1, b2, b4, b5, b7的偶校验的结果。的1, 2, 4, 8, 16, 32, 64位,是2。
2024-06-29 11:05:33
555
原创 float8格式
在人工智能·神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。
2024-06-28 22:36:40
342
原创 变长的时间戳设计,第2版
B类时间戳的数字是1168776000=(365×400+97)×8000,现在使用的西洋历,以400年为一个循环,每400年是365×400+97天。设计变长的时间戳,以32位为单元,最短有32位,最长有32×8=256位。时间戳是变长的,是由上述8类组合而成的。最常用的组合是B+C,它表示公元后的第几天,第几个10。秒,二者相乘,得到“天”,正好是B类时间戳的单位。秒,这可以用来描述普朗克时间,也就是物理学中时间的最小值,不可能有比这更小的时间了。减去其它的数字,使用A类时间戳,能表达几千万亿年。
2024-06-26 16:28:43
701
原创 密码学:用随机函数隐藏指纹
把e加密成2个符号,用随机函数选择,例如70%概率下选择符号1,30%选择符号2。解密时,符号1和符号2都翻译成e。这样一处理,e的指纹就被隐藏起来了。英文中e的出现频率高,加密后,频率最高的那个符号代表e。这是历史上的一次真实案例。这些符号的概率,叫做“指纹”。阅读时忽略它,这么一来,会有一个符号,加密后看上去很像e。这些无意义符号,也是随机加入的。明天下♥️午在北大♥️门集合♥️。
2024-06-26 07:12:22
422
1
原创 文本和二进制混合存储
10个×能表达[0, 1K),将它加一,能表达[1, 1K]的范围。在立即数模式下,用2字节记录长度len-1,再写下长度为len的data。既然设计为保存1KB数据,这套方案可以命名为UTF-8_1KB。对UTF-8编码进行修改,得到能够混合存储的编码。在这句话中,以二进制形式储存时间戳,紧凑。②以二进制为主,区分文本和二进制数据段。①以文本为主,插入二进制数据。,这里还有4个码位,保留。,UTF-8一字节模式。,UTF-8双字节模式。,UTF-8三字节模式。,UTF-8四字节模式。
2024-06-25 12:34:07
292
2
原创 分布式,容错:10台电脑坏了2台
H=2,则每台电脑分H+1=3个分区。用轮换的方式存储,首先,电脑1的分区A,储存1号信息;然后,电脑2的分区B、电脑3的分区C,也储存1号信息。由10台电脑组成的分布式系统,随机、任意坏了2台,剩下的8台电脑仍然储存着全部信息,可以继续服务。H=N-1,总容量变为1/N,这时,每台电脑都储存着全部信息,保证任意坏了N-1台,剩下的1台还能正常工作。设N台电脑,坏了H台,要保证上述性质,需要有冗余,总的存储量降低为1/(H+1)。H=1,随机坏1台,总容量变为1/2;H=2,随机坏2台,总容量变为1/3;
2024-06-23 17:56:26
308
原创 变长的时间戳设计
以前的时间戳有32位,以秒为单位,2秒≈68年,从1970年开始,到2038年会出问题。后来出现的时间戳有64位,以纳秒为单位,2纳秒≈292年。本次设计的变长时间戳,以32比特为单位,总共分5段,最长为32×5=160比特,最短为32比特。一个32位数,其值从0到42亿多。从公元元年1月1日 00:00:00做为时间的原点。
2024-06-20 20:12:11
732
空空如也
Python高精度运算mpmath库的问题
2025-02-11
一个64位超前进位加法器需要几个晶体管?
2024-12-27
直播间的工作原理是什么?
2024-06-01
为什么在Android上不能运行OpenOffice?
2023-12-10
运行GPT-3需要多大的内存
2023-05-21
Hadoop的文件结构
2023-05-14
编译原理,用变量名决定程序功能
2022-05-10
怎样表示unicode字符?
2021-12-07
人工智能,雇佣超算训练一次要多少钱?
2021-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人