自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2022-12-14 08:12:50 303 1

原创 设想中的UTF-64编码

不管用UTF-8还是UTF-16,不同语言表示相同意思,所产生的编码长度相差较大,所以就有了UTF-64的想法。用64比特表示7个英文字母,或3个汉字。由语言的特性不同,所产生的编码长度仍未完全一样,但也比之前好了许多。

2024-02-04 15:33:12 558

原创 公共命名空间的表示方法

曾经有人研究如何在电脑上显示汉字,研究的结果是:把汉字全记下来,需要哪个就显示哪个。具体来讲分两步走:①建立字符集②设计字体为了实现,也需要分两步走:①把所有句子收集起来②编程实现这些句子这两步分别对应于「公共命名空间」和「新编译原理」,本文着重讲解公共命名空间。可能有人觉得收集所有句子的工作量太大,但实现人工智能需要的劳动量不比这小。公共命名空间是一个四维空间,四个维度分别是:方言、句子、冗余项、同位素。

2024-01-15 12:04:55 422

原创 关于量子计算机的设想

本文阐述了两种计算机架构:NISC和CCSC,分别是无指令集计算机、核-电路分离计算机。希望可以用于量子计算机的建造。

2024-01-15 08:13:06 465

原创 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 473 1

原创 C+语言的新特性

C+语言是一门想象中的语言,它是实现“公共命名空间”的过渡语言。以上特性,除了自动添加free外,都较容易实现。不要添加过多的特性,避免变得像C++那样过于复杂。更多关于计算机语言的期望,留给公共命名空间。

2024-01-06 08:55:44 876

原创 不许看,和老师讲的不一样

以下内容,35岁前不建议观看,因为和工业标准有冲突。

2024-01-06 08:51:26 915

原创 C语言,scanf出错时,重新输入

使用scanf进行输入时,如果遇到输入错误的情况,stdin中会剩余一些错误的字符,先把它们吃掉,才能正常地进行下一次输入。另外,scanf支持正则表达式。

2023-12-18 15:51:11 793

原创 最快的排序算法TimSort还能更快吗

本文描述了一种让TimSort更快的方法,该方法从霍夫曼编码获得灵感,每次挑最小的两个run合并,可使总的操作数最小化。

2023-12-14 15:21:53 445

原创 大数除法的方法,商法和余法

本文描述的算法与Knuth的除法算法很像,是对大神的膜拜,和对知识的整理。本算法模拟手算除法,用于进行大数除法。希望本文对你有所帮助。❤️。

2023-12-13 06:36:51 574

原创 手机输入法设计

九键拼音输入法,需要点三下输入一个汉字。

2023-12-12 16:31:37 432

原创 编译原理,根据文法产生式,生成语言的全部句子

gz里边是文法产生式。这里用的是《编译原理》虎书中的文法3-1。将fc执行多遍,可以得到更长的句子。

2023-12-10 07:57:37 422

原创 Python,非二进制的霍夫曼编码

非二进制编码的作用:例如,设计九键输入法,希望根据拼音的概率来编码,常用的拼音分配较短的编码。这时,需要使用九进制霍夫曼编码,N=9。一般来说,霍夫曼编码是二进制的,但是非二进制的也可以。本文中,通过修改N,可以得到任意进制的霍夫曼编码。算法的主体,是先排序,选出概率最小的N项,合并成1项。合并的过程中,概率相加,符号相连。然后,用正则表达式获取data到a,a的结构要看清。本算法没有创建树状结构,而是通过字符串运算来完成的。data是符号和概率,用制表符和换行符分割。修改N=9,即得到九进制编码结果。

2023-12-01 08:07:34 396

原创 笔记,B+树

一个四层的1000叉树,有1000的三次方个叶子节点,即,10亿条记录。多数情况下,这足够多了。一般来说,那一列是个数字,可如果是字符串呢,且长度不确定,B+树的节点中要储存999个字符串吗?一个表中的10亿条记录,按照添加时的顺序存储,需要按照某一列保持有序时,以B+树做索引,10亿个有序的硬盘指针指向10亿个乱序的记录。在B+树中,比如说,每个节点储存999个数字,它能产生1000个分叉,对应地有1000个硬盘指针储存在节点中。通过增加树的分叉数,降低树的高度,从而减少存储器的访问次数,有提速效果。

2023-11-26 14:06:02 667

原创 新的按人口比例的邮政编码

虽然纸质的信件少了,但是快递多了,设计一套类似于邮政编码的体系,还是有使用场景的。本文就设计了一套这样的编码,它是按人口比例来进行编码的,人口多的地区分配较多的编码。计划用2位数表示省级行政单位,共有100个位置,用某省的人口,除以总人口,再乘以100,得到“按比码数”,对它四舍五入,得到“取整码数”。发现取整码数的总和大于100了,这时,采用五舍六入、六舍七入等尝试一下,最终,决定使用七舍八入,保证码数总和不大于100。修改算法,计算按比码数时,不要取得太满,例如,有100个位置,可以按80个来计算。

2023-11-22 07:22:07 66

原创 String64类,让CPU一次处理一个字符串

有了String64类,就能把常用的句子,压缩至64比特,让计算机在一个时钟周期内完成处理,从而有希望加快其运行速度。

2023-10-24 08:13:20 171

原创 新编译原理的草稿

经典编译原理似乎已经够用了,为什么要研究新编译原理呢?在四型文法中,只实现了前两型,现在用的编译原理,仍然是“上下文无关文法”。沿着文法产生式替换的思路走下去,很艰难,不如另辟蹊径,于是就有了新编译原理。经典编译原理的词法分析阶段,识别出关键词,且关键词只能是关键词,不能是别的。随着语言规模扩大,需要识别的关键词越来越多,恐怕会占用太多的命名空间?在新编译原理中,词法分析阶段仅处理:字符串、转义符、逗号、括号、换行,这五个。经典编译原理的语法分析阶段,执行先乘除后加减的优先级策略。这可以成功地分析算数表

2022-12-07 03:10:59 216

原创 用人工智能压缩图像的尝试2

收集42亿个8×8像素图,对它们排序,让形状接近的图排在接近的位置。然后输入ANN1,它以8×8×3字节为输入,32比特为输出。再训练ANN2,它以32比特index为输入,8×8的pixels为输出。总数据量为:(8×8×3+4)B×4G=784GB相当于有一个2列42亿行的表,ANN1用pixels查询index,ANN2用index查询pixels。编码时,输入为pixelsindex=ANN1(pixels)pixels2=ANN2(index)Δp=pixels2-pixels压缩Δ

2022-12-05 19:52:29 584

原创 从\n开始思考

前言学习C语言时,认识了\n,它是换行的意思,英文全称是new line。后来,自学Perl语言,学到正则表达式那章,又认识了许多它的兄弟:\w, \s, \d等等。正则表达式有十多个元字符,它们表示不同于字面的意思。幸亏是从Perl语言开始,认识的正则表达式。如果是Java或C中的正则,要写四个反斜线!很多人都对反斜线有种恐惧感吧。正视恐惧这种恐惧感或许是难以避免的,就像黑夜不可避免地会到来一样。我们要正视恐惧,充分利用反斜线。不仅不减少使用,反而要增加反斜线的使用!为了能表达更多内容,需要对它

2022-12-05 15:58:14 349

原创 用人工智能压缩图像的尝试和计算

设图像为3000×4000像素,神经元网络为(2,6,6,3),它有2个输入,为(x,y),3个输出,为(R,G,B)。输入(x,y)坐标,得到一个像素的值。参数定义:n:神经元网络中的参数个数N:运行神经元网络一次的运算量m:训练样本个数,在这里就是像素的个数p:训练几轮L1:训练时的运算量L2:播放时的运算量具体计算:n=18+42+21=81参数N≈100次81参数×4字节/参数=324字节设压缩率约1/100,则压缩前32400字节32400字节÷3字节/像素=10800像

2022-12-02 18:55:43 1476 2

原创 C语言笔记,const用法

int main(){ //常量 const int a=3; int const b=4; //a=3; //b=4; //常量指针和指针常量 int c=5; const int * d=&c; int * const e=&c; //*d=5; //e=&a; //综合使用 const int * const f=&c; //f=&amp

2022-12-01 16:58:53 261

原创 公共命名空间和输入法

美国的程序员没有输入法,他们发明了许多简写。中国的程序员敲zdgys得到最大公约数,进而得到一个模板:求[ ]和[ ]的最大公约数至[ ]填充这个模板,得到源代码。公共命名空间中包含了所有句子,它尽量使用全称,以求准确。但这就带来一个问题,敲击键盘的次数明显增加了,所以,需要输入法。用o代替中括号,上述模板的全称是:qohodzdgyszo这一串还是太长了,程序员输入zdgys就能找到它。有人希望更简单一些,输入gys(公约数)就能找到。但是,还有“广度优先搜索”,gdyxss。美国的程

2022-11-27 03:47:20 572

原创 学点汇编,用栈传递参数和返回值的汇编框架

在研究浮动电路CPU的过程中,遇到了汇编语言。这是一款运行在CPU内部的汇编语言,它通过栈传递参数和返回值,在栈里,一个单元是一比特。即每次push和pop操作都涉及一比特信息。一个例子如下:push p6 .. p1call func,sp-2pop r1 .. r3func: # v1=sp[1], v2=sp[2] mov r1, sp[6] mov r2, sp[7] mov r3, sp[8] ret, sp

2022-11-26 05:17:01 385

原创 文本和二进制混合存储

难以避免的,文本会和二进制数据混合在一个文件里,本文讨论多种方案中的一种。以前的博客已经讨论过了,有两套方案:基于文本插入二进制数据;或是基于二进制插入文本。在这里,选前者讨论一下。例如:以文本开始,\(shift in)len data\(shift out),结束。新的转义字符反斜线加小括号,这是对传统转义字符的扩展。把\n写成\(new line),语义更加明确。例子中的shift in和shift out,是ASCII码里的两个字符。len使用UTF-8.inf格式这种格式是对UTF-

2022-11-23 15:06:53 458

原创 一些杂七杂八的笔记

程序结构,扩展为5种顺序,金,金主时间,就像时间轴分支,木,木有分岔循环,水,水无形调用,火,用一行句子引燃多行句子并行,土,土主混合,并行是种混合任务编程序的三个层次一,仅能完成任务,但需求一改就得通宵加班。二,能应对许多需求,轻松地修改程序。三,编写出会编程序的程序。其中第一层相当于照片,第二层相当于有骨架的模型,第三层才是有生命的个体。如果有第四层,那应该是许多个体构成的群体。期待新的编译原理求[25]和[37]的最小公倍数至[N]在新的编译原理出现之前,上边这一句只能写成

2022-11-19 13:37:07 675

原创 排列组合,相关算法

排列序数以4个数字排列为例,1 2 3 4是0号排列,1 2 4 3是1号排列,4 3 2 1是4!-1=23号排列。下面给出已知排列求序数的算法。第一步,数一数每一位右侧有几个数字比它小。以2 4 3 1为例,2的右侧只有1个数字比它小,这一位记1;4的右侧有2个数比它小,记2;3的右侧有1个数比它小,记1;1这一位记0。结果就是1 2 1 0。第二步,加权求和。各位的权是3! 2! 1! 0!,计算公式为1×3!+2×2!+1×1!+0×0!,计算结果为6+4+1+0=11。答:4个数字排列,2

2022-11-18 17:50:35 665

原创 用三角函数模拟人工智能

经典的人工智能采用分层结构,本文尝试用三角函数来模拟。y=A1cos(w1x+θ1)+…+Ancos(wnx+θn)+b这个函数命名为y=K(n)(x)对于一个有3个输入、3个输出的函数,有y1=K(x1)+K(x2)+K(x3)y2=K(x1)+K(x2)+K(x3)y3=K(x1)+K(x2)+K(x3)一个K函数有3n+1个参数,这里有9个K函数,共有27n+9个参数。令n=2000,则有参数54009个。然后像经典人工智能一样,使用梯度下降法求解。

2022-11-17 11:35:05 580

原创 用人工智能压缩视频的尝试

开始设计一个神经元网络,它有(x, y, t)三个输入,有(R, G, B)三个输出,中间有许多隐藏层。x和y是视频的横纵坐标,t是帧数。输入(x, y, t),输出一个像素,即(R, G, B)。2K视频为2048×1080分辨率,2小时的视频大约3.0GB。取其1%作为神经元网络的预期压缩率,即30MB。以前的博客中有8比特神经元网络的设想,那么,30MB的神经元网络,有3000万个参数。运算量估计设视频每秒24帧,运行一次神经元网络需要与参数个数相同的运算量,即3000万。2048×108

2022-11-17 06:00:36 1176

原创 基于地址映射的内存文件系统

C语言中的数组,越界了也不报错。所以,我想设计一个内存文件系统,它是基于地址映射的。例如:node,0,100映射到dir,50,100和200,250dir,0,1000映射到RAM,5000,5220和6220,7000其中,node,0,100表示文件node的偏移量从0到100,这是个左闭右开区间,从0到99。dir形式上是个文件夹,但本质上和文件没有区别,它们都是地址映射的产物。上例中,从node映射到dir,再从dir映射到RAM。映射的算法如下图:通过映射,node被分成3段,构

2022-11-16 18:33:51 249

原创 我的编译原理

以下是我对编译原理的理解,和课本上的不同。如果你要考试,请不要阅读本文。如果你想开发一个编译器,请一定阅读本文。词法分析词法分析的任务,是识别字符串、转义符、换行符、缩进。采用Python风格的缩进。引入扩展的转义符。for a, b in x print a print b\n\(new line)在词法分析阶段就使用树状结构。如果分析出100个词法符号,就创建一棵1个根节点、100个子节点的扁平的树。这么设计是为了与后边的语法分析接轨。通过对词法分析树的剪切、拼接,构建

2022-11-16 06:31:49 96

原创 手机的网费

以前用电脑上网,限制时间,超出部分很贵,真有朋友一个月交了2000元网费。现在用手机上网,限制流量,超出部分也很贵。我是没有权利和能力改变什么,只是写几笔,吐槽罢了。上网干什么?可能是看视频,可能是下棋。视频耗费流量,下棋耗费时间。即使不上网,也要交一部分基础费。网费=时间费+流量费+基础费如果移动网络开启,且手机屏幕亮着,就记时间。流量仍然正常记,但没有超出部分的惩罚性收费。基础费就是一个月5元。两个典型情况:200小时,10GB,20元,这是妈妈现在的消费0小时,0GB,5元,这是我的消费

2022-11-14 15:52:29 6792 2

原创 笔记,人工智能,梯度下降法

基本原理有一个神经元网络,它有1个输入节点,1个输出节点,中间有多个“隐藏层”,每个隐藏层又有多个节点,层与层之间采用“全连接”。这个神经元网络可以称为函数F,它是以后要干活的那个函数。因为只有1个输入、1个输出,所以它的图像可以画在X-Y坐标系中。它是一个高阶非线性函数,函数图像很复杂、不规则。在X-Y坐标系中画几个点,叫“训练样本”,经过训练,生成一条曲线,接近这几个点。采用梯度下降法进行训练,梯度的概念参考斜率,一元函数的梯度就是斜率,梯度是斜率向高维空间的扩展。先给出一系列随机的F的参数,计算

2022-11-13 05:46:35 331

原创 公共命名空间和上下文

公共命名空间中包含了所有句子,尝试接近自然语言编程。有这样一段程序:获取整数[n][i]从[1]到[n]循环:显示[i]第一行“申请”一个变量n,第二行构建一个迭代器,第三行使用i。需要有一个存放变量的地方,这个地方可以跨越行与行的界限,暂且叫它上下文吧。重新解释:第一行向上下文提交一个变量n,第二行使用n,并且继续向上下文提交变量i,第三行使用i。上下文中的数据类型是多样的。更多解释:获取整数[n]中的n是一个“输出型变量”。[i]从[1]到[n]中的i是一个迭代器?下面这段程序很

2022-11-09 18:30:07 62

原创 公共命名空间和任务矩阵

公共命名空间中的每一行是一个句子,每一列是一种方言。例如:不同语言的hello world程序位于同一行,而不同的列可以是C语言、Java语言、汉语、英语等。分“两步走”方案说的是:类似于在电脑上显示字符,需要分为字符集和字体这两步。在电脑上实现计算机语言,需要先建立句子的集合,即公共命名空间,再想办法实现它。本文所说的“任务矩阵”是第二步的一部分。具体步骤做一个电子表格,A列写下一个个任务,B列是员工对各个任务的把握。从0到100,描述从完全不懂到有把握完成。每个员工都填写这个表格,汇总到管理员,他

2022-11-08 11:26:52 311 1

原创 公共命名空间中的依赖关系

需求分析公共命名空间中包括大量的句子,句子之间有依赖关系。例如,许多操作都需要用到字符串,则字符串操作是基础的。根据分“两步走”的计划,先在公共命名空间中确定语言是什么样子的,再想办法实现计算机语言。这两步和字符集+字体的划分,如出一辙。依赖关系的分析是第二步的开始。一个句子作为一个节点,依赖关系的分析的目标,不是画出关系图,而是给它们排队,从复杂的图变成简单的线。理论首先说表示方式:a->b表示先实现a再实现b,或者说b依赖a。节点间关系分为:顺序、分支、循环、合并。顺序:a->b

2022-11-06 12:12:33 210

原创 笔记,正则表达式里的元字符

正则表达式,一般指的是Perl语言风格的,Python中的re也是这个风格。为什么叫“正则表达式”?源自Chomsky于1956年建立形式语言体系,他把文法分成四种类型:0、1、2、3型。其中3型文法叫“正则文法”,对应地就有了正则表达式。一共12个元字符:问加星、点杠斜、小中大、首尾。问号、加号、星号都是量词,表示它前面的一个单元要重复几次。问号:0到1次加号:1+次星号:0+次点号:表示任意的一个字符,还有是否包含换行符的区别,这需要添加s标志。杠(竖线):这是“或”,或的优先级很低,需

2022-11-03 16:13:39 742

原创 笔记,ASCII和unicode

ASCII (American Standard Code for Information Interchange):美国信息交换标准代码,7比特。unicode分多层:①把所有字符聚集起来②把它们排成一条线,从0开始编号③确定单位长度,如1字节或2字节④UTF,研究在计算机中怎么表示⑤在多种UTF中选择一个截止2020年3月,有14万多个字符(汉字占了10万)UTF-8最多6字节,可表示31位,20亿?UTF-16可表示0到10FFFF,共100多万

2022-11-03 11:34:03 60

原创 UTF-8格式的改进,inf.2

UTF-8最多只到6字节,对于大于31位的数字,将难以表示。所以,有了本文,尝试设计一种UTF编码,它可以表示极大的数字。unicode字符到0x10ffff就终止了,这是个21位数。而UTF-8设计支持31位,足够多了。表示字符似乎用不上UTF-8.inf.2,但用于表示大数字,是可以的。

2022-10-31 18:59:15 58

原创 关于电脑的科幻

1CPU的基本功能是计算,新的CPU通过查表完成计算。在内部采用十进制,并且储存了四则运算的运算表。低配的CPU可以一次完成一位数的计算,因为它的表较小;高配的CPU拥有更大的表,可以一次算两位、三位。2采用浮动电路的CPU,实际上比GPU的并行度更高。第一步,从源代码到晶体管的编译器被实现了,以前的编译器都是从源代码到指令集,现在的更进一步;第二步,用简单电路模拟复杂电路,这样一来,一个CPU里不再是四核、八核,而是几万核!3用有生命的细菌、病毒来制造CPU,一个宫殿般复杂的CPU,可以通过修改

2022-10-29 11:02:25 521

原创 实现上下文有关文法的三个方法

文法分为四型,它们是:正则文法、上下文无关文法、上下文有关文法、短语文法。这四型文法的历史功绩在于,让人们认识到了语言的复杂性,并挑选最简单的两个实现了。这两个是正则文法和上下文无关文法,对应《编译原理》书中的词法分析和语法分析。更复杂的上下文有关文法和短语文法,至今未能实现。本文进行探索,期望能有所贡献。多脚本竞争执行假设文法中每个符号都是有生命的个体,它们能自主地分析自己的上文是什么、下文是什么,进而作出决定,要把自己变成什么,或是采取怎样的行动。每个文法符号都对应一个小脚本,这些脚本共同执行

2022-10-26 13:41:20 463

空空如也

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

TA关注的人

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