![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
喜欢幻想的我
技术上的探索,和几篇微型科幻小说,总之都是没有实现的东西。
知堂织韵
“公共命名空间”的作者,孤独的思考者。
展开
-
未能实现的两种图像格式
上述两种图像格式均停留在理论阶段,受运算量、存储量的限制,均未实现。原创 2024-07-16 07:22:01 · 237 阅读 · 0 评论 -
变长的时间戳设计,第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 · 360 阅读 · 0 评论 -
文本和二进制混合存储
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 · 207 阅读 · 2 评论 -
变长的时间戳设计
以前的时间戳有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 · 222 阅读 · 0 评论 -
数据库:与红黑树不同的延迟序列
在内存里维护一个序列,一般使用红黑树,但红黑树存在空间利用率低的缺点,所以,就有了“延迟序列”,它在红黑树内存满了以后、启动硬盘数据结构之前使用,能应付一阵子。具体来说,要在红黑树内存即将满了,还没满的时候使用延迟序列。对红黑树进行中序遍历,把数据按顺序取出来,这也需要一部分内存。原创 2024-06-19 05:53:15 · 770 阅读 · 0 评论 -
网络:用2个IP地址描述一个连接
再把二进制转化为十进制,这样一来,做两次减法,或进行几次位运算,就能知道邮局编号的归属地。这是个一对二的多播,有两条链路,压缩的结果是:节点45把数据传递给36,36要传递给98和99,98还要传递给47,99不用再传递了。,第一个IP描述发起方,第二个IP仅是一个编号,说明这个连接是该IP发起的第几个多播,一般来说,值为1,第一个。多播:1.25987.33765=>1.1(1表示多播,它发起的第1个直播,不同于->,这里用的是=>)若一个IP宽48位,则1位M,23位网络地址,24位主机地址。原创 2024-06-12 15:50:01 · 411 阅读 · 0 评论 -
对硬盘的设想2:纸存,硬指针,软指针
和“纸存”一起出现的概念,是“执行存”,即存储器可以执行简单的指令。这么一来,上述链表的处理,可以在存储器内部完成,而无需通过CPU,有提速效果。如果约定链表长度不超过100,则二级软指针能处理10000次修改,三级软指针能处理100万次修改。上述硬指针是硬件实现的,是指,对一块数据进行修改后,标识新的值在哪里的那个指针,每个数据块(例如64比特每块?“纸存”是设想中的存储器,它只能改写两次:写一次,再改一次,然后就不能再动了。①这是二级软指针,第一个S指向第二个S,第二个S指向abcd。原创 2024-06-08 20:20:40 · 289 阅读 · 0 评论 -
对硬盘的设想:纸存、执行存
另外,有“执行存”设想,即存储器可以执行指令,例如B+树需要3次IO完成一次索引,在这里它只要一次IO就够了。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。在位置p1上的数据d1,经过修改,成为p2处的d2,在p1处留下一个指针,指向p2,即可找到d2。设有一个8GB的硬盘文件,里边存储着1G个有序的数,若有“执行存”,则可以在硬盘上完成二分查找。解释:第一个P指向第5个位置,再次修改后,第5个位置也是P,它指向y。修改多次后,出现一个P的链表,它以F=0为终止。原创 2024-06-07 08:43:02 · 218 阅读 · 0 评论 -
编译原理:代替LR分析法的MP分析法
LR分析法存在一个问题:当文法产生式变多,分析表变大之后,占用很多内存。为了接近自然语言编程,需要大量的文法产生式,有可能分析表过大,内存里放不下。词法分析返回的不是经典《编译原理》中所说的符号串,而是简单的树。所以,词法分析也可以看作是一遍,和语法分析的“多遍”没有本质区别。其中,括号配对用数数的方式完成,这需要编写专门的函数。而文法产生式,可以看作是格式化的函数。词法分析和语法分析仍然是分开的,语法分析按照“先乘除后加减”,分成多遍,即MP。MP分析法,是multi-pass(多遍分析法)。原创 2024-06-03 18:24:18 · 455 阅读 · 1 评论 -
设想中的UTF-64编码
不管用UTF-8还是UTF-16,不同语言表示相同意思,所产生的编码长度相差较大,所以就有了UTF-64的想法。用64比特表示7个英文字母,或3个汉字。由语言的特性不同,所产生的编码长度仍未完全一样,但也比之前好了许多。原创 2024-02-04 15:33:12 · 606 阅读 · 0 评论 -
公共命名空间的表示方法
曾经有人研究如何在电脑上显示汉字,研究的结果是:把汉字全记下来,需要哪个就显示哪个。具体来讲分两步走:①建立字符集②设计字体为了实现,也需要分两步走:①把所有句子收集起来②编程实现这些句子这两步分别对应于「公共命名空间」和「新编译原理」,本文着重讲解公共命名空间。可能有人觉得收集所有句子的工作量太大,但实现人工智能需要的劳动量不比这小。公共命名空间是一个四维空间,四个维度分别是:方言、句子、冗余项、同位素。原创 2024-01-15 12:04:55 · 438 阅读 · 0 评论 -
关于量子计算机的设想
本文阐述了两种计算机架构:NISC和CCSC,分别是无指令集计算机、核-电路分离计算机。希望可以用于量子计算机的建造。原创 2024-01-15 08:13:06 · 484 阅读 · 0 评论 -
CCSC,一种CPU架构
排队链算法”,例如,在电路6,核1等待核2,核2等待核3,形成链式的队列。具体来说,核1等待矩阵中“核2和电路6的交点处的寄存器”。对于备用电路,可以采用轮换方式,电路3_1之后是电路3_2,然后是电路3_3,等。已知的调度算法包括“电梯调度算法”,把执行电路看做电梯,把核看做楼层。核里边的指令集可以很简单了,但是要有一个“等待某寄存器为特定值”的指令,和一个“在寄存器间移动数据的指令”。V寄存器控制着执行电路的供电,V=0则不供电,进入省电模式;返回电路3_5,同时电路3_5的V寄存器置1。原创 2024-01-10 04:46:20 · 503 阅读 · 1 评论 -
C+语言的新特性
C+语言是一门想象中的语言,它是实现“公共命名空间”的过渡语言。以上特性,除了自动添加free外,都较容易实现。不要添加过多的特性,避免变得像C++那样过于复杂。更多关于计算机语言的期望,留给公共命名空间。原创 2024-01-06 08:55:44 · 901 阅读 · 0 评论 -
不许看,和老师讲的不一样
以下内容,35岁前不建议观看,因为和工业标准有冲突。原创 2024-01-06 08:51:26 · 935 阅读 · 0 评论 -
最快的排序算法TimSort还能更快吗
本文描述了一种让TimSort更快的方法,该方法从霍夫曼编码获得灵感,每次挑最小的两个run合并,可使总的操作数最小化。原创 2023-12-14 15:21:53 · 459 阅读 · 0 评论 -
公共命名空间简述,实现自然语言编程的必经之路
公共命名空间的想法出现自2019年,到现在有三年了。在2022年底,总结一下这三年来的想法。就像字符集+字体,公共命名空间+新编译原理也是这么一对儿。字符集用来收集所有符号,字体用来显示字符集中的符号;公共命名空间用来收集所有的句子,新编译原理用来实现这些句子。公共命名空间是一个四维空间,四个维度分别是:句子、方言、同位素、冗余项(rǒng)。为了在二维的电脑屏幕上呈现四维空间,先呈现前两个维度。每一行是一个句子,每一列是一个方言。在行与列交叉处是单元格,点开单元格,是另一个二维表:每一行是一个同位素原创 2022-12-14 08:12:50 · 338 阅读 · 1 评论 -
新的按人口比例的邮政编码
虽然纸质的信件少了,但是快递多了,设计一套类似于邮政编码的体系,还是有使用场景的。本文就设计了一套这样的编码,它是按人口比例来进行编码的,人口多的地区分配较多的编码。计划用2位数表示省级行政单位,共有100个位置,用某省的人口,除以总人口,再乘以100,得到“按比码数”,对它四舍五入,得到“取整码数”。发现取整码数的总和大于100了,这时,采用五舍六入、六舍七入等尝试一下,最终,决定使用七舍八入,保证码数总和不大于100。修改算法,计算按比码数时,不要取得太满,例如,有100个位置,可以按80个来计算。原创 2023-11-22 07:22:07 · 73 阅读 · 0 评论 -
String64类,让CPU一次处理一个字符串
有了String64类,就能把常用的句子,压缩至64比特,让计算机在一个时钟周期内完成处理,从而有希望加快其运行速度。原创 2023-10-24 08:13:20 · 188 阅读 · 0 评论 -
UTF-8和UTF-16扩展方案
UTF-8最多到31位,UTF-16只能编码0x 0~10FFFF,这些编码能力现在看来够用了,但并不保证未来够用。以后unicode如果出现大幅扩充,用UTF-8和UTF-16也要能表示,所以,有了本文所描述的扩展方案。1主要针对UTF-16。它有三种模式xxxxxxxx xxxxxxxx → A模式110110xx xxxxxxxx → B模式110111xx xxxxxxxx → C模式大部分字符用A模式可以描述,对于大于65536的,用BC模式,即一个B表示高位,一个C表示低位。如果B原创 2022-06-30 11:33:42 · 442 阅读 · 0 评论 -
九键拼音霍夫曼输入法
汉字有400多个发音,采用拼音输入法。算上常用标点符号,有400多个符号等待编码。使用九进制的霍夫曼编码。具体方法是:把待编码的符号按照概率由高到低排序,合并最低的9个符号至一个节点,9个概率相加作为新节点的概率。重复排序、合并的步骤,直到只剩下一个节点。于是得到一棵编码树,从树根开始编码。概率最高的分支编码为5,以后依次是5 4 6 2 8 1 3 7 9,考虑到5在中间,最容易按到,而4 6 2 8到5的距离较小,1 3 7 9到5的距离较大(相差1.4倍)。然后,以5-4为例,按了4之后,再按4原创 2022-06-17 09:51:22 · 900 阅读 · 0 评论 -
如果给你100万人
如果秦始皇再世,要修长城,皇帝派你去修,并给你100万人,你该怎么修?首先,你肯定想到了“并行处理”,即多人同时劳动。否则,会导致大量人员处于等待状态。然后,你需要有张地图,规划一下线路,否则,许多段长城难以连接成一个。之后,你需要有能工巧匠,这100万人都会在平地上砌墙,但不是都会在起伏的山顶砌墙。最后,应该有交流,普通的墙和敌台的结构不同,让工人们进行交流,产生最好的方案。言归正传,都21世纪了,我们不需要动员100万人修长城了。但是我们可不可以动员100万人制作一门计算机语言呢?假设可以,如原创 2022-06-02 07:39:55 · 96 阅读 · 0 评论 -
浮动电路CPU设想2
从源代码到机器码的转换,由编译器完成,例如C语言编译器。有浮动电路CPU的设想,需要从源代码到电路,这个编译器该怎么设计?如何用一个(或少数几个)门电路,模拟大量门电路?已知德国科学家发明了速度快百万倍的门,能不能用一个门模拟百万个门的复杂电路?总之,需要进行两方面的研究:① 从源代码到电路的编译器② 用少数门模拟复杂门电路给定一段源代码,编译生成对应的电路,再用少数几个门去模拟这块电路。一颗CPU里有许多模拟单元,形成高度并行化的处理方式。如果一个模拟单元叫做一个核,那么,一颗CPU拥有几千原创 2022-06-01 15:52:48 · 116 阅读 · 0 评论 -
网费的收费方式
分段、拟合、均摊、饱和。1、分段连接以下几个点的直线,构成函数图像。(0, 0) (0.1, 1) (7, 15) (100, 100) (32400, 600)其中32400是“最大流量”,即用100M带宽连续工作30个昼夜的流量值。(7, 15)是常用值,7GB流量,缴费15元。2、拟合可以用ANN(神经元网络)拟合上述函数,得到的是一条平滑曲线。而分段方案得到的是几条直线段组成的函数图像。这个ANN有1个输入端,1个输出端,不需要太多隐藏层,因为函数很简单。3、均摊设网络运营商需要原创 2022-05-28 07:23:38 · 1193 阅读 · 0 评论 -
新编译原理之集合论
用集合论处理句子,一个句型是相关的一系列句子的集合,用集合中的典型句子给集合命名,用大括号表示集合。{有6个玩具猫}→有{自然数}个{类型名}上述内容有3个集合,可以对应到经典编译原理的3个非终结符。{自然数}集合需要编写一个小型的DFA。{类型名}集合可以记住常用的类型名。集合有一个“判定函数”,用于判定某句子是否属于该集合。判定函数可以是一个DFA,也可以是一个哈希表。{有6个玩具猫}集合的判定函数,是由前两个集合的判定函数组合而来的。因为它的定义正是由前两个集合组合而来的。...原创 2022-05-25 08:17:04 · 169 阅读 · 0 评论 -
python,计算并发现闰月的规律
a=29.53059 #一个月是这么多天N=1000 #计算这么多个月的#b是个N行3列的二维数组。b=[[0,0,0] for i in range(N)]#开始计算b[0][0]=ab[0][1]=29b[0][2]=b[0][0]-b[0][1]for i in range(1,N): b[i][0]=b[i-1][2]+a if b[i][0]>=30: b[i][1]=30 else: b[i][1]=29原创 2022-02-11 20:27:14 · 1065 阅读 · 0 评论 -
把“公共命名空间”改名叫“代码矩阵”会不会好一点?
一个四维的代码矩阵,如何在二维的电脑屏幕上展示?首先展示前两个维度,按excel表格的形式呈现。选中一个单元格以后,再打开另一个excel表格,展示另两个维度。具体来说,前两个维度中,每一行表示一个句子,每一列表示一种方言。方言可以是C语言、Java语言,也可以是汉语、英语等。每一行表示一个句子,以句子为单位理解源代码。同一行、不同列的单元格,可以进行翻译。如:某一行,汉语方言那一列写着“求a的小数部分,至b”,同一行,python那一列写着“b=abs(a-int(a))”。通过代码矩阵进行翻译。原创 2022-02-07 07:08:00 · 76 阅读 · 0 评论 -
自然语言编程的尝试
班上有30个学生甲叫肖鹤云,乙叫李诗情显示甲、乙的名字这段代码明显不能运行,需要做一些修改。分配30个学生类至班甲为班[0],乙为班[1]甲的名字为肖鹤云,乙的名字为李诗情显示甲的名字,乙的名字进一步转化:学生类* 班=(学生类*)malloc(30*sizeof(学生类));学生类* 甲=&班[0], *乙=&班[1];甲->名字="肖鹤云",乙->名字="李诗情";printf("%s,%s\n",甲->名字,乙->名字);目标是自原创 2022-02-03 06:37:34 · 632 阅读 · 0 评论 -
关于命名空间,它需要编译一下才好用
传统的编译错误指出在哪一行,对命名空间进行编译,指出哪几行出现冲突,例:namespace myns: from A import * from B import *报错:A和B都有open函数。解决:from A import *dim A.open as fopen这次不报错了,编译命名空间通过。using namespace myns这一功能用一行代码取代多行import。发展到后来,可以有using namespace std #c++ style或use原创 2022-01-31 03:36:19 · 559 阅读 · 0 评论 -
把文本和二进制数据混合存储的方案
♥使用文本,便于人类阅读;使用二进制,便于机器处理。如何把文本和二进制数据混合存储在一个文件里呢?总的来说,有两套方案。一是默认文本,扩展二进制;二是默认二进制,扩展文本。♥先说一。选择UTF8为默认的编码格式,从UTF8扩展出UTF8++,后者占用了UTF8还没有使用的8个码位。0xxxxxxx110xxxxx 10xxxxxx1110xxxx 10xxxxxx 10xxxxxx11110xxx 10xxxxxx 10xxxxxx 10xxxxxx11111yyy共8个码位,yyy=0…7原创 2022-01-30 06:22:27 · 792 阅读 · 0 评论 -
程序名词化运动
1当伪代码和源代码组成的代码对,呈饱和状态时,可以直接用伪代码编程。这里所说的“饱和状态”是难以实现的,因为它要求代码库相当丰富。但是,当我们仅思考一个微型语言时,这种饱和状态又不是那么的遥不可及。能否从汇编语言开始,用一层层的伪代码支撑起软件产业?以此取代一个又一个编程语言,直接用自然语言编程。2在动词短语和名词短语之间,是集合。面向对象编程在一定程度上提供了集合的功能,例如,把多个函数放在一个类里,类和对象可以看作是集合。但我想要的集合不只于此,它应该能够支持集合间运算。例如,标识符的定义,原创 2022-01-26 03:09:10 · 142 阅读 · 1 评论 -
做一个代码阅读器
从程序名开始,一层层打开,直到源代码。例如程序中有n%2==0,替换成“n是偶数”,便于阅读。要引进层的概念,源代码是0层,“n是偶数”是1层,一层层上升,直到程序名。升层的任务交给程序员,降层的任务交给项目经理。层是对代码的抽象。最顶层使用自然语言。有了n是偶数,还可以有n是奇数,在上层修改,下层也能做到自动修改。这样一来,就能选择在那一层修改代码。“手动升层,自动降层”。...原创 2019-11-24 14:37:57 · 444 阅读 · 0 评论 -
从图像格式谈开发怎样的程序
图像格式有很多,选择四个常用且有代表性的,进行讨论。(bmp jpg png gif)最基础的是bmp,它是把每个像素的值原封不动地储存起来。bmp很简单,可以认为它是显示硬件的简单映像。然后说jpg,它是一种经典的有损压缩格式,研究它是因为bmp太大。jpg能达到1/20的压缩率,小了不少。png是无损压缩,压缩率约1/2,有了jpg之后为什么还要png呢?我对png的印象聚焦在苹果电脑...原创 2019-11-17 20:12:46 · 208 阅读 · 0 评论 -
中文lisp改进之设想
括号的引用括号的引用是为了减少击键次数。(很长的内容)=x,这是引用(很长的内容)=(短内容),这也是引用括号的命名括号的命名是为了代码容易阅读。(if =1 =2 =3)后续内容1(…) 2(…) 3(…)(if (…) =then =else)后续内容then(…) else(…)减少一层括号(1)-(2)等价于((1)(2))注释所有括号外边的,都是注释...原创 2019-11-18 15:31:53 · 230 阅读 · 0 评论 -
超算的分级
军100000师 25000旅 5000团 1000营 200连 40排 8个人 1相当于十万台个人电脑的超级计算机,是一个军。一个教室里约40台电脑,是一个连。...原创 2019-03-15 07:41:41 · 1438 阅读 · 0 评论