- 博客(218)
- 问答 (3)
- 收藏
- 关注
原创 公共命名空间简述,实现自然语言编程的必经之路
公共命名空间的想法出现自2019年,到现在有三年了。在2022年底,总结一下这三年来的想法。就像字符集+字体,公共命名空间+新编译原理也是这么一对儿。字符集用来收集所有符号,字体用来显示字符集中的符号;公共命名空间用来收集所有的句子,新编译原理用来实现这些句子。公共命名空间是一个四维空间,四个维度分别是:句子、方言、同位素、冗余项(rǒng)。为了在二维的电脑屏幕上呈现四维空间,先呈现前两个维度。每一行是一个句子,每一列是一个方言。在行与列交叉处是单元格,点开单元格,是另一个二维表:每一行是一个同位素
2022-12-14 08:12:50
533
3
原创 自然语言编程:从一段Perl程序说起
通过词法分析,可以判断一个符号是数字,还是id。更进一步地,可以判断一个符号,如:$email_address,这是一个邮件地址。上面的例子中,执行完第一行,向上下文容器中推入一个布尔值,然后,下边那行从上下文容器中取一个布尔值。内置名的作用在于,分析变量的名字,用于理解句子的含义。有了内置名,可以减少打字量,且更自然地表达。后人的后人,即电脑的使用者,也是用写下一些句子的形式,来操作电脑的。在Perl语言里,老地方变量用下划线_表示,print(_)可以简写成print。若不写至哪里,就至上下文容器。
2025-11-15 23:20:57
297
原创 回忆GB2312汉字编码
GB是“国标”的拼音首字母。GB2312兼容ASCII码区位码,94×94,区位码+A0A0=编码GBK兼容GB2312(81~FE)(40~FE,不包括7F)GB18030兼容GBK和GB2312单字节:00~7F双字节:(81~FE)(40~7E,80~FE)四字节:(81~FE)(30~39)(81~FE)(30~39)从GBK以后,不再使用“区位码”的概念GB18030例:9A 35 81 30。
2025-11-13 08:25:45
428
原创 自然语言编程,举个反面案例
在公共命名空间理论中,功能相近,却略有不同的,叫“同位素”。具体内容,请参考我的其它文章。图中的两行程序,功能都是切换布尔值,在源代码中,就该写成“切换布尔值”,而不是图中的这两行代码。上图是一个反面教材,在Java语言中这么写,天经地义。但是,对自然语言编程而言,这很不自然。一个功能,在源代码中的表现形式,就应该是程序员试图描述任务时,使用的自然语言的样子。用n%2==0代表偶数,可以运行,但并不自然。调用一个功能,应该尽可能使用自然语言,而不是用语法单位“拼凑”出这个功能。另一个例子,是判断偶数。
2025-11-12 21:27:48
142
原创 我设计的字符编码(2)
全世界有六千多种语言,可以用13比特描述。带语言编号的字符编码,它是:语言编码+字符编码 → 一个字符使用自制的UTF-8inf编码表示数字。
2025-11-05 11:26:36
279
原创 我们需要的中文编程是什么样子的?
它连接了两个句子,似乎必须用Robot实现(帮我编程序的小机器人)。它有“完整读入内存再写/读一点写一点”两个同位素。第一句不可能用一个函数实现,需要框架。并且它向上下文容器推送了一个值。第二句没写打印什么,则从上下文容器取一个值打印。为了描述语言的边界,为了实现自然语言编程,需要「公共命名空间」理论,参考我的其它博客。前些年曾讨论过中文编程,这几年由于人工智能的发展,再讨论一下是可以的。我们想要的中文编程,实际上是自然语言编程。写入文件"2.txt"::UTF-8。前人编写一段程序,用句子描述其功能。
2025-10-19 22:53:58
311
原创 我设计的字符编码
可以记录7比特信息,后边再跟1字节,7+8=15比特,15=5+5+5,韩文是由三部分组成的,每个部分用5比特描述。新的编码压缩了字符集,并且赋予汉字造字的能力,一个汉字相当于一个英文单词,它可以有更多可能的组合。重新编码后,除汉字和韩文以外的字符,保持原样,汉字和韩文使用双字节,后跟一串扩展字节的方案。为了优美地呈现汉字,需要书法家软件,它应该能够区分,光和做为偏旁部首的光,字形不同。耀→(左右结构,右边又分为上下结构,上边是左右结构)+光+习+习+隹。②双字节模式,1(15bit),预留2。
2025-10-14 10:34:09
366
原创 我设计的数字编码、十进制计算机
传统的00→01→10→11→00循环,晶体管翻转6次。上述节能型循环翻转4次。添加一个与门就可以知道数字是否有效,无效的情况当做分隔符处理。构成00→01→11→10的节能型循环。位表示5,如同算盘。
2025-10-12 21:09:19
238
原创 计算机语言不应该是能够随时长高的脚手架
打个比方,以前的计算机语言就像脚手架,它具有可扩展性,但是却不太牢靠。没有人愿意在脚手架上搭块木板就睡在上边,人们更喜欢在建好的大楼里铺好床,再安安稳稳地睡上一觉。从土木工程的角度讲,在一座建好的100层大楼的顶端,再建一座6层的小楼,是十分危险的。之前的几十年,程序员的任务是:扩展程序的能力。在这段时间内,计算机语言被设计成可扩展的,程序员可以自定义函数和类。所以,我们应该提供的是一座建好的大厦,在这座大厦里,不能自定义函数和类,但是常用的函数和类都已经编好了。扩展性和健壮性似乎是不可兼得的。
2025-09-23 06:36:46
215
原创 我设计的IP地址(3)
①兼容IPv4从0到2^32-1是IPv4地址,可以继续使用。从2^32开始,是新的IP地址。②预分配由于2^48/80亿=35184.3按照一个人1万个IP地址来分配。中国有14万亿个,印度有14万亿个,等。按 洲/区域/国家 的英文顺序排列。例如,从10 0000 0000 0000到24 0000 0000 0000这14万亿个IP地址属于中国,看到源地址和目标地址的分区相同,说明在同一个分区里。
2025-07-28 10:55:21
880
原创 我设计的哈希表
如果用CRC32校验码做为哈希值,最多可以分2个桶,这足够多了,但保不齐还是会出现哈希碰撞。所以,有了无穷长的校验码的设想。每次取几个比特,用不完。
2025-07-07 10:55:49
295
2
原创 变长字节的数字表示法vb224
当你需要表示一个数字,却又不能确定数字所占字节数的时候,可以考虑vb224编码。截止2025年6月,该方案尚未实现,你可以自己动手实现,并应用于项目之中。
2025-06-28 21:11:38
230
原创 用3个字符表示2字节二进制数据
本文的方案类似于base64,它是用4个字符表示3字节二进制数据,1.333倍。对“终止”进行编码,它是65793,换成41进制是(39 5 29),换成字符是"Q5v"把1字节二进制数据,用可打印字符表示,可用十六进制。这样一来,1字节变2字节,2倍。65536至65791表示1字节数据,较少出现的情况用更大的数字表示。所以,最终方案是,用3字符41进制,表示2字节或1字节二进制数据。2字节的二进制数据,可以用3个字符来表示,1.5倍。小写字母,去掉和0、1形似的,剩24个。仍小于41^3=68921。
2025-06-27 20:08:32
290
原创 我设计的IP地址(2)
网络编号=0,这是内网,相当于192.168.0.100之类的IPv4地址。有一个问题,对于网络编号等于1,主机编号等于1的IP地址,它有多个表达方式,约28种。中国有14亿人,F=27的网络编号有300多亿个,分配14亿个给中国,全世界分配80亿个。F=0,全世界80亿/2^27=59.6=60个,占60/256=23%当F=1时,网络编号=W+256,它有2^9=512个;当F=27时,网络编号=W+256+512+…当F=0时,网络编号有2^8=256个;当F=2时,网络编号=W+256+512。
2025-06-27 06:30:07
368
原创 为了自然语言编程,填充公共命名空间
填充“公共命名空间”的过程中可以添加注释,语言的制作者和使用者通过它进行沟通。不管是自底向上、自顶向下,都是实现自然语言编程的策略。人工智能需要海量的训练样本,填充公共命名空间的劳动量和它差不多。
2025-06-17 05:38:41
562
原创 unicode改进,提取语言编号的编码体系
若是法语、德语、意大利语、俄语等,修改语言编号,后边差不多也是一个字节表示一个字母。-x=0x110000,解出x=983040,即,用983040号语言表示unicode本身。每个括号表示一个日语假名,4号日语假名,在编码后,将是远大于4的一个数字。这种编码也用8比特表示,inf是“无限的”,理论上,它可以表示无限大的数。字符编号有限大,用比最大的字符编号更大的数字,表示语言编号。三字节:1××××××× 1××××××× 0×××××××。双字节:1××××××× 0×××××××。
2025-06-17 03:30:05
329
原创 压缩的汉字编码(unicode减肥计划)
第二套方案似乎可以表达更复杂的汉字,但那些符号已经超出了人脑的记忆能力,不能叫汉字了。同理,韩语字符如果拆分了,就不会有一万多个,只有几十个。韩国人听说中国把汉字拆分了,也不好意思再占用一万多个符号,他们把韩语字符也拆分了,过程更简单。虽然减肥后的unicode可能只有4万个符号,小于2^16,但仍然用UTF-16,它能表示100多万个符号,扩展性更好。汉字编码要区分左脑和右脑,先是结构信息(右脑),然后是字根信息(左脑)。多数汉字拆分成两部分,算上字形信息,是三个符号,用6字节表示。
2025-06-14 05:58:15
276
原创 我设计的网络广播
对于658→943这样的要求,不适合简化成端口号,就保存各节点的IP地址,或物理地址。它们可以记下常见的链路,不用每次都广播寻人,毕竟“求链路”的算法,开销有点大。网络协议中,有一项,对于从A到B的通信,求链路。该协议给出的常常不是一条唯一的链路,而是由“正则表达式”描述的链路的集合?主要是广播寻人,接力广播,然后用正则表达式记录可选的所有链路。中继节点储存的全是连接信息,如一对一的TCP连接,或一对多的广播。这是一对多广播,14是13的备用链路,28是27的备用链路。9→非(15且87),这是什么?
2025-06-09 02:04:10
332
原创 计算机语言:我设计的算符优先级
其实,如果完全没有算符优先级,最多就是成为Lisp语言,多写几个小括号的事,不是什么天大的事情。所以,压缩算符优先级的事情,可以考虑一下。希望在你设计的计算机语言中,用到上述研究成果。如果选择相同的符号,就需要定义语境,来区分算数运算和逻辑运算。7这个数字,是人类短时记忆容量的平均值。新的计算机语言不兼容C语言,这也很正常。结果是,新的优先级更好记了,但却与经典的C语言不兼容。C语言的算符优先级有15级,把它压缩到7级。②单目,C语言的第二级,非、按位反。⑥赋值、比大小、左右移。逻辑非、按位反,同理。
2025-05-06 06:58:02
208
原创 韩语字符分析
多数汉字可拆分成两部分,算上字结尾,是三个符号。同时,韩语也是一个字变三个字,表示相同的意思,需要的字节数和汉语、英语都一样了。设想中,汉字用字根拼接而成,韩语也放弃这一万多个字符,使字符总数降低到6万,可以用2字节表示,也方便制作字体。查看unicode文档,发现韩语字符有11172个,这是19×21×28,其实就是19+21+28=68个符号的排列组合。个符号,有CJK ext A,包含6592个字符,从3400到4DBF,这一段可以替换成韩语68个字母,和汉字的结构描述符、字根。
2025-02-02 19:28:21
1172
原创 设想中的计算机语言:可执行对象的构造函数和析构函数
可执行对象”是一个创意。现有的OOP,对象里储存的全是数据,代码集中管理。而可执行对象中储存的是代码。构造函数通过修改对象内的地址,完成重定向,而不是每调用一次函数都要查表找地址。也就是说,直接修改call, jmp指令后边的地址立即数。
2025-01-30 19:14:09
301
原创 蛇年的第一篇博客:设想中的汉字编码
本文描述了想象中的汉字编码,希望用拼接字根的方法,简化汉字编码。简化后,韩语字符也会跟着简化。最后,unicode字符的数量控制在216以内,可以用2字节表示。至此,用不同语言表达相同意思,所需编码长度差不多的设想,就更近了。虽然目标是2字节,但使用UTF-16仍有必要,保证可以编码114万多个字符,避免万一2字节不够用时的尴尬。新的编码将不兼容现有编码,可以命名为unicode CJK compressed。
2025-01-29 07:18:57
489
原创 我设计的CPU架构:CCSC,核-电路分离计算机
以上便是CCSC(核-电路分离计算机)的架构设计。该设计的目标是省电,并且通过将复杂电路移出核心的做法,简化核心,提高电路的利用率。之前有用简单电路模拟复杂电路的想法,但那不现实,CPU每执行一条指令都要调用一次加法器,如果加法器也需要模拟,执行速度会很慢,而且费电。所以,保留功能电路是设计CPU的必然选择。同时,如果每个核都设计所有功能电路,将是复杂的,且利用率低。例如,现有的CPU每个核都有除法指令,在新的架构中,除法指令在核心外部。
2025-01-24 07:27:24
614
原创 软件的收费方式
全国有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
481
原创 笔记,如何区分大端、小端?
所有计算机厂商储存字符串的方式是一样的:储存字符串"abcd",在地址低的地方储存a,在地址高的地方储存d,阅读一个字符串,是沿着地址增加的方向进行的。沿着地址增加的方向看,它的值是:01 00 00 00,这是小端。注意,字节内部没有字节序问题,所以,不要一股脑地写成10 00 00 00。沿着地址增加的方向看,先显示高位数字的是大端,先显示低位数字的是小端。GB2312编码的“啊”是0xB0A1,沿着地址增加的方向看,就是B0和A1,这是大端。更高的位在地址偏移量更大的地方,这么设计编程会容易点儿。
2025-01-17 12:11:11
320
原创 我设计的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
301
原创 缓存淘汰算法:次数除以时间差
记录缓存中的每一项的访问次数、最后访问时间,获取当前时间,可算出时间差,然后,用次数除以时间差,取最小的淘汰。这一算法比较慢,需配合多级缓存。一级缓存不很大,使用此算法。二级缓存可以大一些,使用其它淘汰算法。
2025-01-03 15:47:08
235
原创 变长的时间戳(第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
579
1
原创 让汉语和英语一样长的字符编码
使用UTF-8编码表达相同的意思,需要的字节数,俄语是英语的2倍。使用UTF-16编码,英语是汉语的3倍。如何做到“不同语言表达相同意思,所需编码长度大致一样”?本文做出了尝试。
2024-12-21 18:03:02
257
原创 小王子压缩算法
在《小王子》这本书中,the little prince反复出现,设想应该可以把它做为新的符号,从而起到压缩的效果。搜集代码库,运行小王子压缩算法,留在字典里的,正是指令集需要的。这么一来,就求出了最优指令集。市场上并不缺少压缩算法,研究小王子压缩算法,是为了设计CPU最优指令集。霍夫曼编码依赖现有的符号边界,而本文要研究的,是寻找更好的符号边界。至此,找到了3个新的“符号”!有些时候字典过大,需要舍弃概率低的。
2024-12-20 19:23:34
349
原创 变长的时间戳(第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
298
原创 最简单的计算机:真值表计算机(TTC)
就像编译原理优化程序前,需要把程序转化为中间代码,然后针对中间代码进行优化一样。如图,一块电路有7个端口,分别是输入A, B,输出C,真值表(在下端)。只是速度慢了一点,例如,它需要用软件的形式模拟一个加法器,每执行一条指令,就要调用一次加法器函数,那叫一个慢啊!为了让TTC快一点的研究,可用于实践。编译原理龙书上说:有“硅编译器”,即将源代码转化为电路的编译器。有了它,就能制作出TTC的编译器。上述4条指令可看做一个整体,这样一来就能减少加法器的调用。真值表计算机(TTC)是一个理论模型,有研究价值。
2024-12-15 13:05:56
404
原创 输入法:点三下输入一个汉字
第二键区分左右,若是左半区,则表示选择第一键中的第一个声母;每个半区有4个按钮,分别是不加中间字母,以及中间字母为i, u, ü的情况。虽然也有9键的方案,但重码率较高。计算一下,9键点2下,共81种排列组合。而汉字的读音,不计声调,有400多个。所以,设计了“三拼输入法”,使用较少的按键,点三下输入一个汉字。对于某些不便使用26键的情况,例如按钮太小,不好按,可以考虑使用此输入法。且是三行四列,比之前的四行三列,更扁了。第三键是韵母,例如“路”,拼音是lu,只有声母和中间字母,没有第三键的韵母,就选空。
2024-12-07 22:21:18
387
原创 公共命名空间:可挂载同位素
公共命名空间是实现自然语言编程的必经之路。它可以理解为一张巨大的表格,其中收录了所有句子。用unicode来做类比,unicode里边收录了所有字符,且它是一个一维空间,先填充字符集,再研究字体,于是,可以在电脑上显示字符;然后说公共命名空间,其中收录了所有句子,且它是一个四维空间,先填充公共命名空间,再研究编译原理,于是,可以实现自然语言编程。
2024-11-22 06:12:47
906
1
原创 公共命名空间,例4
以上三句,对上下文容器的使用方式不同。第一句,不使用上下文容器;第二句,没写至哪里,就至上下文容器,它把运算结果推送至上下文容器;第三句,从上下文容器获取参数,并把运算结果推送进去。有了公共命名空间,世界各地的程序员都可以用母语编程,如上例。美国的程序员用英语编程,并不是C++这样看上去像英语的语言,而是真正的英语。
2024-11-20 07:53:36
188
空空如也
Python高精度运算mpmath库的问题
2025-02-11
一个64位超前进位加法器需要几个晶体管?
2024-12-27
直播间的工作原理是什么?
2024-06-01
为什么在Android上不能运行OpenOffice?
2023-12-10
Hadoop的文件结构
2023-05-14
运行GPT-3需要多大的内存
2023-05-21
编译原理,用变量名决定程序功能
2022-05-10
怎样表示unicode字符?
2021-12-07
人工智能,雇佣超算训练一次要多少钱?
2021-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅