自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(206)
  • 问答 (3)
  • 收藏
  • 关注

原创 公共命名空间简述,实现自然语言编程的必经之路

公共命名空间的想法出现自2019年,到现在有三年了。在2022年底,总结一下这三年来的想法。就像字符集+字体,公共命名空间+新编译原理也是这么一对儿。字符集用来收集所有符号,字体用来显示字符集中的符号;公共命名空间用来收集所有的句子,新编译原理用来实现这些句子。公共命名空间是一个四维空间,四个维度分别是:句子、方言、同位素、冗余项(rǒng)。为了在二维的电脑屏幕上呈现四维空间,先呈现前两个维度。每一行是一个句子,每一列是一个方言。在行与列交叉处是单元格,点开单元格,是另一个二维表:每一行是一个同位素

2022-12-14 08:12:50 499 3

原创 我设计的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 815

原创 CPU,减少晶体管翻转次数的编码

降低晶体管翻转次数,可以省电。上述方案,可以在数字递增循环过程中,将晶体管翻转次数降到最低。

2025-07-23 18:39:48 209 1

原创 我设计的哈希表

如果用CRC32校验码做为哈希值,最多可以分2个桶,这足够多了,但保不齐还是会出现哈希碰撞。所以,有了无穷长的校验码的设想。每次取几个比特,用不完。

2025-07-07 10:55:49 235 2

原创 变长字节的数字表示法vb224

当你需要表示一个数字,却又不能确定数字所占字节数的时候,可以考虑vb224编码。截止2025年6月,该方案尚未实现,你可以自己动手实现,并应用于项目之中。

2025-06-28 21:11:38 190

原创 用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 261

原创 我设计的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 338

原创 为了自然语言编程,填充公共命名空间

填充“公共命名空间”的过程中可以添加注释,语言的制作者和使用者通过它进行沟通。不管是自底向上、自顶向下,都是实现自然语言编程的策略。人工智能需要海量的训练样本,填充公共命名空间的劳动量和它差不多。

2025-06-17 05:38:41 548

原创 unicode改进,提取语言编号的编码体系

若是法语、德语、意大利语、俄语等,修改语言编号,后边差不多也是一个字节表示一个字母。-x=0x110000,解出x=983040,即,用983040号语言表示unicode本身。每个括号表示一个日语假名,4号日语假名,在编码后,将是远大于4的一个数字。这种编码也用8比特表示,inf是“无限的”,理论上,它可以表示无限大的数。字符编号有限大,用比最大的字符编号更大的数字,表示语言编号。三字节:1××××××× 1××××××× 0×××××××。双字节:1××××××× 0×××××××。

2025-06-17 03:30:05 306

原创 压缩的汉字编码(unicode减肥计划)

第二套方案似乎可以表达更复杂的汉字,但那些符号已经超出了人脑的记忆能力,不能叫汉字了。同理,韩语字符如果拆分了,就不会有一万多个,只有几十个。韩国人听说中国把汉字拆分了,也不好意思再占用一万多个符号,他们把韩语字符也拆分了,过程更简单。虽然减肥后的unicode可能只有4万个符号,小于2^16,但仍然用UTF-16,它能表示100多万个符号,扩展性更好。汉字编码要区分左脑和右脑,先是结构信息(右脑),然后是字根信息(左脑)。多数汉字拆分成两部分,算上字形信息,是三个符号,用6字节表示。

2025-06-14 05:58:15 218

原创 我设计的网络广播

对于658→943这样的要求,不适合简化成端口号,就保存各节点的IP地址,或物理地址。它们可以记下常见的链路,不用每次都广播寻人,毕竟“求链路”的算法,开销有点大。网络协议中,有一项,对于从A到B的通信,求链路。该协议给出的常常不是一条唯一的链路,而是由“正则表达式”描述的链路的集合?主要是广播寻人,接力广播,然后用正则表达式记录可选的所有链路。中继节点储存的全是连接信息,如一对一的TCP连接,或一对多的广播。这是一对多广播,14是13的备用链路,28是27的备用链路。9→非(15且87),这是什么?

2025-06-09 02:04:10 315

原创 计算机语言:我设计的算符优先级

其实,如果完全没有算符优先级,最多就是成为Lisp语言,多写几个小括号的事,不是什么天大的事情。所以,压缩算符优先级的事情,可以考虑一下。希望在你设计的计算机语言中,用到上述研究成果。如果选择相同的符号,就需要定义语境,来区分算数运算和逻辑运算。7这个数字,是人类短时记忆容量的平均值。新的计算机语言不兼容C语言,这也很正常。结果是,新的优先级更好记了,但却与经典的C语言不兼容。C语言的算符优先级有15级,把它压缩到7级。②单目,C语言的第二级,非、按位反。⑥赋值、比大小、左右移。逻辑非、按位反,同理。

2025-05-06 06:58:02 188

原创 韩语字符分析

多数汉字可拆分成两部分,算上字结尾,是三个符号。同时,韩语也是一个字变三个字,表示相同的意思,需要的字节数和汉语、英语都一样了。设想中,汉字用字根拼接而成,韩语也放弃这一万多个字符,使字符总数降低到6万,可以用2字节表示,也方便制作字体。查看unicode文档,发现韩语字符有11172个,这是19×21×28,其实就是19+21+28=68个符号的排列组合。个符号,有CJK ext A,包含6592个字符,从3400到4DBF,这一段可以替换成韩语68个字母,和汉字的结构描述符、字根。

2025-02-02 19:28:21 868

原创 设想中的计算机语言:可执行对象的构造函数和析构函数

可执行对象”是一个创意。现有的OOP,对象里储存的全是数据,代码集中管理。而可执行对象中储存的是代码。构造函数通过修改对象内的地址,完成重定向,而不是每调用一次函数都要查表找地址。也就是说,直接修改call, jmp指令后边的地址立即数。

2025-01-30 19:14:09 285

原创 蛇年的第一篇博客:设想中的汉字编码

本文描述了想象中的汉字编码,希望用拼接字根的方法,简化汉字编码。简化后,韩语字符也会跟着简化。最后,unicode字符的数量控制在216以内,可以用2字节表示。至此,用不同语言表达相同意思,所需编码长度差不多的设想,就更近了。虽然目标是2字节,但使用UTF-16仍有必要,保证可以编码114万多个字符,避免万一2字节不够用时的尴尬。新的编码将不兼容现有编码,可以命名为unicode CJK compressed。

2025-01-29 07:18:57 412

原创 我设计的CPU架构:CCSC,核-电路分离计算机

以上便是CCSC(核-电路分离计算机)的架构设计。该设计的目标是省电,并且通过将复杂电路移出核心的做法,简化核心,提高电路的利用率。之前有用简单电路模拟复杂电路的想法,但那不现实,CPU每执行一条指令都要调用一次加法器,如果加法器也需要模拟,执行速度会很慢,而且费电。所以,保留功能电路是设计CPU的必然选择。同时,如果每个核都设计所有功能电路,将是复杂的,且利用率低。例如,现有的CPU每个核都有除法指令,在新的架构中,除法指令在核心外部。

2025-01-24 07:27:24 562

原创 软件的收费方式

全国有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 360

原创 笔记,如何区分大端、小端?

所有计算机厂商储存字符串的方式是一样的:储存字符串"abcd",在地址低的地方储存a,在地址高的地方储存d,阅读一个字符串,是沿着地址增加的方向进行的。沿着地址增加的方向看,它的值是:01 00 00 00,这是小端。注意,字节内部没有字节序问题,所以,不要一股脑地写成10 00 00 00。沿着地址增加的方向看,先显示高位数字的是大端,先显示低位数字的是小端。GB2312编码的“啊”是0xB0A1,沿着地址增加的方向看,就是B0和A1,这是大端。更高的位在地址偏移量更大的地方,这么设计编程会容易点儿。

2025-01-17 12:11:11 274

原创 我设计的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 251

原创 缓存淘汰算法:次数除以时间差

记录缓存中的每一项的访问次数、最后访问时间,获取当前时间,可算出时间差,然后,用次数除以时间差,取最小的淘汰。这一算法比较慢,需配合多级缓存。一级缓存不很大,使用此算法。二级缓存可以大一些,使用其它淘汰算法。

2025-01-03 15:47:08 210

原创 变长的时间戳(第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 470 1

原创 让汉语和英语一样长的字符编码

使用UTF-8编码表达相同的意思,需要的字节数,俄语是英语的2倍。使用UTF-16编码,英语是汉语的3倍。如何做到“不同语言表达相同意思,所需编码长度大致一样”?本文做出了尝试。

2024-12-21 18:03:02 212

原创 小王子压缩算法

在《小王子》这本书中,the little prince反复出现,设想应该可以把它做为新的符号,从而起到压缩的效果。搜集代码库,运行小王子压缩算法,留在字典里的,正是指令集需要的。这么一来,就求出了最优指令集。市场上并不缺少压缩算法,研究小王子压缩算法,是为了设计CPU最优指令集。霍夫曼编码依赖现有的符号边界,而本文要研究的,是寻找更好的符号边界。至此,找到了3个新的“符号”!有些时候字典过大,需要舍弃概率低的。

2024-12-20 19:23:34 279

原创 变长的时间戳(第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 233

原创 最简单的计算机:真值表计算机(TTC)

就像编译原理优化程序前,需要把程序转化为中间代码,然后针对中间代码进行优化一样。如图,一块电路有7个端口,分别是输入A, B,输出C,真值表(在下端)。只是速度慢了一点,例如,它需要用软件的形式模拟一个加法器,每执行一条指令,就要调用一次加法器函数,那叫一个慢啊!为了让TTC快一点的研究,可用于实践。编译原理龙书上说:有“硅编译器”,即将源代码转化为电路的编译器。有了它,就能制作出TTC的编译器。上述4条指令可看做一个整体,这样一来就能减少加法器的调用。真值表计算机(TTC)是一个理论模型,有研究价值。

2024-12-15 13:05:56 339

原创 输入法:点三下输入一个汉字

第二键区分左右,若是左半区,则表示选择第一键中的第一个声母;每个半区有4个按钮,分别是不加中间字母,以及中间字母为i, u, ü的情况。虽然也有9键的方案,但重码率较高。计算一下,9键点2下,共81种排列组合。而汉字的读音,不计声调,有400多个。所以,设计了“三拼输入法”,使用较少的按键,点三下输入一个汉字。对于某些不便使用26键的情况,例如按钮太小,不好按,可以考虑使用此输入法。且是三行四列,比之前的四行三列,更扁了。第三键是韵母,例如“路”,拼音是lu,只有声母和中间字母,没有第三键的韵母,就选空。

2024-12-07 22:21:18 320

原创 公共命名空间:可挂载同位素

公共命名空间是实现自然语言编程的必经之路。它可以理解为一张巨大的表格,其中收录了所有句子。用unicode来做类比,unicode里边收录了所有字符,且它是一个一维空间,先填充字符集,再研究字体,于是,可以在电脑上显示字符;然后说公共命名空间,其中收录了所有句子,且它是一个四维空间,先填充公共命名空间,再研究编译原理,于是,可以实现自然语言编程。

2024-11-22 06:12:47 879 1

原创 公共命名空间,例4

以上三句,对上下文容器的使用方式不同。第一句,不使用上下文容器;第二句,没写至哪里,就至上下文容器,它把运算结果推送至上下文容器;第三句,从上下文容器获取参数,并把运算结果推送进去。有了公共命名空间,世界各地的程序员都可以用母语编程,如上例。美国的程序员用英语编程,并不是C++这样看上去像英语的语言,而是真正的英语。

2024-11-20 07:53:36 170

原创 公共命名空间:内置名

第一句明确指出了使用什么,使用方言;第二句也是使用方言的意思。如果中括号里的内容,完全当做参数来处理,那么,第二句就难以确定使用什么。这里需要使用叫做“内置名”的技术,如下:把参数[哇哇小可爱的方言]修改为看上去有些累赘,但语义明确。以上便是内置名的使用方法。另一个例子,调用函数。调用[激励函数]调用函数[激励函数]把函数说了两遍。

2024-11-09 11:42:09 309 1

原创 公共命名空间,2024年11月的笔记

电脑也是一项发明,会用电脑的人不一定懂得电脑的原理,这是程序员和电脑操作员的区别。填充公共命名空间应该能在手机上进行,这样一来,能有更多人参与进来,而不是必须买台电脑才能填充。之前的博客中说到,公共命名空间是一个网站,方便所有将要使用计算机语言的人来填充。但最终的结果是,需要字符集,人工地把所有字符收集起来,让电脑一个个记住,这样便解决了在电脑上显示字符的问题。汽车是一项发明,许多人都会开汽车,但不一定懂得汽车的原理,这就是工人和司机的区别。继续考证,或进入大学,学习计算机专业,获得更高等级程序员的称号。

2024-11-03 08:15:54 427 1

原创 公共命名空间,2024年10月的笔记

首先,我国选择C++做为竞赛语言,许多人学C++,学习的结果是:看到“公共命名空间”,就幻想出一个私有命名空间,其实,公共命名空间和C++的命名空间无关!

2024-10-30 07:58:03 383 1

原创 2024年8月的笔记

程序的复杂性来源于任务的复杂性,隐藏复杂性是计算机语言的任务,否则,我们可以用汇编语言编程序。

2024-08-18 09:49:05 473

原创 公共命名空间:上下文容器

第二行执行时,还缺一个参数,从上下文容器中找,找到了这个整数。具体来说,"输入一个整数"和"输入一个整数至[n]"是两个函数,这两个函数很像,唯一的区别在于是否向上下文容器推送变量。公共命名空间,是供程序员讨论的空间,大家在这里讨论计算机语言应该是什么样子的,然后,由语言的制作者实现计算机语言。另外,“重复[6]次”、“重复[6]遍”,意思是一样的,在公共命名空间中,这是一组冗余项。准确地说,上下文容器不属于公共命名空间,它更像是公共命名空间中的某个方言的特性。至此,上下文容器为空,不推送,也不亏欠。

2024-08-13 18:10:16 292 2

原创 压缩转义符到只剩一个反斜线

例如,引入了新的转义字符的字符串,就不可能用一个正则表达式来描述,词法分析要创新。理论上可以,因为反斜线加小括号里是一门微型语言,可以表达这12个,甚至更多意思。例如,程序员A就发现,应该让字符串中的转义字符尽可能少,只剩一个反斜线即可。这是因为转义符要求尽可能少,以至于只剩下一个反斜线,这时,应该添加一个符号。熟悉C语言的程序员B,和Java语言程序员C立即发现,这么写不对。有的时候,变量名可以和换行符、制表符等区分开来,就可以省略等于号。的写法,这需要显示反斜线本身,和后边括号里的内容。

2024-08-12 06:02:41 513 1

原创 公共命名空间的例子3

在x语言中,不符合“先乘除后加减”,这个句子应该怎样解释呢?第一步,进行词法分析,目的是识别出注释和字符串,其中可能包括任意符号,干扰编译过程。第二步,用句号、分号分割,并用数数的方法处理括号,识别出单个语句。这种分析方法是先用优先级低的符号进行分割,再分别处理每个段落。以1+2×3为例,原本的做法是先算乘除,新的方法是:先用加号分割,再处理1和2×3,最后构建起一棵语法树。现有的语言中也有类似情况,如正则表达式。正则表达式被当成一个字符串,在运行时编译并执行。

2024-08-12 05:58:53 348

原创 公共命名空间的例子2

公共命名空间尝试收集所有的句子,它给程序员准备了一个讨论、甚至是“吵架”的地方。程序员对计算机语言的设想和要求,在这里得到体现。语言的制作者通过分析别人讨论的内容,进行权衡,决定语言应该是什么样子的。这比他自己在那想象要好。结果,语言凝聚了众人的智慧,不再是某个语言之父的个人创作。先填充公共命名空间,再实现计算机语言。这个过程可能要重复多次,但还是次数少一点为妙。不能指望一次成型,但像现在那样,出现上千种语言,把一个过程重复上千次,也是不好的。

2024-08-07 05:25:22 496

原创 公共命名空间的例子

通过上述讨论,关于解方程的句子就基本定型了,然后,交给语言的制作者去实现语言。在公共命名空间中,程序员不能像传统语言那样,自定义函数名,而是使用已经讨论通过的句子。或许公共命名空间中的讨论一般没有定论,对于容易产生定论的话题,它们早就讨论完了,用不着公共命名空间登场。现有的上千种计算机语言,是上千个“语言之父”的杰作,这些语言大同小异,却不相通。这样一来,需要有“句子相关的解析器”,把特定的解析器和特定的句子关联起来。程序员C发现,既然是关于x的方程,那么解一定是放在x里,所以,可以进一步修改。

2024-08-06 09:55:05 259 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 545

原创 公共命名空间中的自定义函数

这种情况就像生产汽车和驾驶汽车的区别,程序员相当于生产汽车的工人,普通人相当于司机。当然,充当字典角色的正是公共命名空间,先填充公共命名空间,再实现计算机语言,不要轻易修改公共命名空间,给语言的使用者一本好用的、稳定的字典。在新的语言中,不能像传统语言那样,有“自”定义函数的功能,不能由程序员决定函数的名字,而是由“公共命名空间”来决定。其中中括号表示参数的位置,百分号表示“类型”,这是六个独立的命名空间的一部分,大于号表示这是一个输出变量。开发程序的过程会有些变化,先选择方言,再使用方言中的句子。

2024-07-31 12:13:25 502

原创 未来的汉字编码

一字节模式兼容ASCII码,是0*******的样子。两字节以上都是多字节模式,是多个1*******加上一个0*******结尾。每个字节有7比特可用,三字节即可表达unicode全部字符,因为unicode范围是0~0x10FFFF,21比特。理论上讲,UTF-8inf可以表达任意大数,inf正是“无穷”的意思。

2024-07-29 10:38:50 465

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除