年终总结 2022

创建时间 2022-12-31
更新时间 2023-01-01

前情提要:年终总结 2021

和 2021 年一样,我觉得我应该选一首歌,作为开场:

为什么是这首呢,这是网易云说我 2022 年听的最多的一首。

生活有时候很难描述,只有当经历过后,才能体会其中的滋味,有着很多微妙的细节。人总会想着将美好永远的保留下来,我也不例外,谁让平凡的生活中总是一些艰难的事情呢?

flag 2021

很遗憾,2021 年底立的 flag 并没有全部完成:

  • 完成操作系统: 已完成,超额完成了 2021 年期望做到的事情,但是又产生了新的问题;
  • 练完《哈农》:练到了第 52 条,总共 60 条,不过后面的越来越难了,不过去年的时候也已经是 52 条,进步缓慢,另外练习车尔尼 599 到了第 34 条;
  • 学习《信号与系统》:差不多算是入门了吧;
  • 学习《抽象代数》:学了一部分 顾沛的课,但是没有全部学完。

这一年发生了好多的事情,我觉得可以提前记录一下,有很多美好的事情,也有很多不堪。这一年也学到了很多东西,其中最重要的一条是:

事情必须以一种方式妥善的结束,这在生活中很重要。不然总会有千丝万缕的联系阻碍自己难以前行。只有当事情结束之后,我们才能真正的有时间思考,纠正前进的方向。

这句话本身出自 扬·马特尔 的《少年派的奇幻漂流》[2],但是经过了我的改写。一件事情妥善的结束,还可能意味着放弃了其中的某些东西,但总的来说是好的。

作为一个原则,如果某件事情违背了直觉,那么一定有某种历史的原因使其如此;

这句话来自于 《A History of Western Music》,原话是:

As a rule, if something does not make sense, there is a historical reason for it, and only knowing its history can explain it.

而让人深以为然的来自于计算机发展的历史,在 PC 机和 Intel CPU 上存在的万千兼容性的包袱,可以看到计算机科学家工程师们为了兼容做出巨大的努力,他们想尽了一切的办法,当然有一些办法初看起来会违背直觉。


关于计算机

操作系统

这一年的时间,很多时候都是在研究操作系统 [1] 的实现,这本身是一个特别有趣的事情,你写完代码,然后机器就会以你期望的方式运行,这的确是很酷的事情,不是吗?

我的水平很烂,但是自从我完成了 CPU 之后,就开始飘了,我觉得我能完成任何事情,于是在 20 年的四月份,我开始思考实现操作系统,最开始是参考于渊的《Orange’S:一个操作系统的实现》和 川合秀实 的 《30 天自制操作系统》。最开始的想法是,哪怕能跑个程序输出 hello world,我也就很牛了。

然后经过了很长时间的摸索,一直到 8 月底,卡在了硬盘交互上,中断死活无法触发。还有一个问题是,上面的书里对保护模式的解释特别的冗长,让人很难理解。再后来又刷了一遍 《操作系统真象还原》,也依然卡在了硬盘驱动。然后又看了 《Linux内核完全注释》,最后终于是搞定了硬盘驱动,后面的事情全部都是内存操作,就容易多了。但是文件系统的理解和设计也是花了一些时间的,但总的来说没有卡住不动的问题。

最后从 1 月 24 日开始,直到 12 月 7 号,就全部完成了之前的设想,并且还又很多新的功能。虽然操作系统依然很简陋,但是对于理解《操作系统》的概念来说应该是足够了。

希望后面可以实现操作系统其他的功能吧:

  • 目前已经完成的部分:
    • 进程信号
    • 软盘驱动
    • ISA 声霸卡驱动:可以播放 8 位单声道音频
    • ANSI CSI 控制序列:一个显而易见的用途是,打印彩色字符
    • 错误处理:阻塞超时,信号中断等
    • 优化 fork 页表拷贝机制,对页表实现写时复制
    • CPU 功能检测
    • FPU 支持,用以实现进程独立的浮点数运算
    • 鼠标获取坐标相对位移
    • VGA 显示图片
    • PCI 总线设备枚举
    • IDE 硬盘 UDMA 模式
    • E1000 网卡驱动,收包和发包
  • 期望后期完成的部分:
    • 命名管道
    • 动态链接
    • 网络协议栈,socket 支持
    • OPENGL(希望能玩玩)
    • APIC
    • LONG MODE
    • ATAPI
    • SATA
    • NVME
    • USB
    • UEFI
    • ACPI
    • 802.11(WiFi)
    • RISC-V
    • ARM
    • FAT 文件系统
    • EXT/EXT2 文件系统

通过实现操作系统,并且录视频传到 B 站,认识了很多人,然后计算机科学体系结构的微信群也在不断地壮大,根据大家的描述,看视频和交流代码的人从小学生,直到博士,大学老师多种多样,说自己是小学生我其实是不相信的,但是我又没有证据。很多人从事的工作与计算机没有关系,单纯来说完成操作系统的过程本身就挺有趣的,有时候可以让人废寝忘食。曾经有人跟我说过完成 CPU 的过程中三天没合眼,可能是有点夸张了,但是足以说明这些东西确实挺好玩的。好玩是第一驱动力。

关于收费,钱谁能不爱呢,不过其中绝大多数内容都是我从很多书籍和网络搜集整理的,当然有自己原创的部分,不过核心思想还是来自于前人的经验,我希望能够尽我所能免费开源,代码以 MIT 的协议开源,意味着你可以用它来做任何事情。

有几个朋友说我的代码被培训机构拿来骗钱了,他被骗了一些钱,而且还不少,之后才发现我的视频,只能对被骗的人报以深切的同情了。当然如果你因为代码获得了收益,而且心里过意不去,也可以送我点。当然 B 站也是可以挣钱的,到目前为止所有收益加起来大概 1000 块多一点点。所以靠这个是不太可能发家致富的,纯粹的用爱发电。

信号处理

在年底的最后这几天,我看了很多关于信号处理的内容,其中最重要的是 Think DSP [3],用 Python 实现了信号处理的很多关键的部分,感觉作者也是一个音乐爱好者,大概率会拉小提琴。

当然了,信号处理的基石是快速傅里叶变换,对于这个算法的理解是最重要的了。关于这部分内容希望以后也能有所输出吧,有很多重要的概念,是之前完全没有头绪的,实际上这部分内容也是挺有趣的。

编译器

有不少人问过我想不想实现一个编译器,这个不是没想过,只不过感觉不如其他的内容有趣,应该是不大会去实现,一方面我能力有限,另一方面确实有好多其他有趣的事情要做。

其他

当然还有其他的内容可以说一说,这一年前半年是在国科大度过的,和计算机相关的内容基本上都是网络攻击和防御,学了很多关于 pwn 的内容,也特别感谢助教的指导,让我理解了很多计算机视角容易忽略的细节。而往往出现安全问题的地方都是这些细节。研究安全感觉挺讨厌的,总是盯着别人脆弱的地方,无所不用其极。

还使用强化学习的方法,实现了井字棋 [4],这是相当简单的,只不过对于学习来说越简单越好了。

和竹妹妹聊天的过程中,聊到了关于代码的看法,她认为我是:

Talk is cheap, show me the code!

的那种人,我也觉得我是,因为事实上我能力有限,很难判断真伪,用 PPT 写一些高大上的词汇来骗人的人实在是太多了,以至于很多抽象的数学推导显得很无力,除非这些算法能够落地,眼见为实,不然我是不能相信的,这也是我自身的局限性。


关于英语

截至 2022-12-31 单词量是 25105,与去年同期 23864 相比,增长了 1241,而这些新增的单词基本上没什么用,属于一辈子都见不到几次的单词。之所以这样干,主要还是可能是路径依赖,一个好处是看英语的文章越来越容易了。当然这个容易我不知道怎么量化。只能是一种自我的感觉,很主观。


关于读书

这一年很多时间都用来做音乐了,以至于有一段时间相当的摸鱼,不过很难有让人眼前一亮的书了。但总的来说还是有一些书可以分享一下:

我的书单 2022

我觉得 克雷格·莱特的 《聆听音乐》真的不错,包括了耶鲁大学的公开课,当然公开课的部分我还没有看完。但总会有一些细节或者思考的角度是我之前没有想到过的。

另外《你当像鸟飞往你的山》也不错,教育真的能够改变人的一生。

《额尔古纳河右岸》也挺好的,主要的意义在于有时候很难委婉的描绘想要说明的事情,直白的描述是远远不够的,她总是能够以不同的方式来表现时间的流逝。故事总要有结束的时候,但不是每个人都有尾声的。

还有罗杰·彭罗斯的《通向实在之路》,有很多让人耳目一新的思考。但基本从 n 维流形开始就不是那么容易了。所以到现在还没有看完。并且我觉得还需要很长的时间来完成。


关于音乐

这一年花了音乐花了一多半时间,音乐是美好的事情,为此我全力以赴。

还是去年同样的老师,不过这次应该叫她小雅老师,这是经过老师独家认证的名字,因为她真的很优雅。我选修了《民族器乐理论与实践》,这门课应该是我在国科大选修最好的一门课了,对很多人来说是所有的课程里最快乐的课了,因为除了排练好像没什么事能够在七点钟让我起床。而美好的事情总应该记录下来,慢慢回味。

认识了很多朋友,大家齐心协力一起完成一件事情,就很难遇到这样的团队,没有人摸鱼,想把事情做好。

我主要负责编曲和弦乐,负责分配大家要演奏的部分,工作量很大,但是收获也很多。一个比较重要的体验是,真实的环境中音是极有可能不准的,这与我自己一直玩 MIDI 配音源是有很大不同的,正常来说 MIDI 的音准是没问题,顶多表情和色彩比较匮乏,不够灵活。但是实际中音准可能差着 50 个音分,刚好卡在了钢琴缝里,就比较尴尬,这种感觉是比小二度还阴间的。

老师让同学自己或者组成小组,来演奏一首乐曲,我的第一首乐曲是《梁祝》,我觉得梁祝比较能够表现民族音乐与世界的关系。

后来找到了同学来一起完成这首乐曲:

后来又参与了《这世界那么多人》

还有《雪见:落入凡尘》

还有《大鱼》

本来我以为排练的过程有很多的细节要写,但是后来怎么写都好像都写不好,还是我自己文字的功力不够,索性就不写了,留下最后的一首歌:

在这里,只有快乐,没有烦恼。

课上写了一首乐曲,由于是民族器乐,那就要表现民族的冲突与融合,表现出东方与西域文化的张力,河西走廊是很重要的文化载体,西北的荒漠开不出鲜艳的花朵,但是莫高窟承载了一种文化的传承,于是就写了《月牙泉》,要用一个乐器来表现敦煌,琵琶绝对是不二之选,因为莫高窟最重要的一副壁画,就是《反弹琵琶》,这来自《我心归处是敦煌》中的描述。

再后来又配上了一段视频,用来描述这种乐曲带来的感觉。

最后将写在视频最后的文字写到下面吧:

历史如奔流入江海 一往无前

却又在某个不经意的瞬间留下痕迹

那是一段凝固的时间 缄默的信息

承载了中华几千年的兴衰与荣辱

帮助岁月长河中的人们凝视着后来者

并给他们以力量


关于舞蹈

写这个多少有点大言不惭,因为我自己肢体极不协调,所以舞蹈对我来说应该是绝对的知识盲区,不过这里有一些决定性的变化。

以前,我总觉得舞蹈和我没什么关系,也不能理解舞蹈到底美在什么地方。这很大的可能是舞蹈演员本来就很美,无法确定舞蹈的美是演员的还是舞蹈特有的,再或者是我自己就没有平心静气的去看一看,这导致了一种认知的缺失,与真实的世界产生了偏差,所以这里得感谢跳舞的妹妹,让我理解了音乐为什么总和舞蹈联系起来。

机缘巧合之下,我有幸在礼堂后台看了一段舞蹈排练的过程。这里我想了很多的形容词,但是依然很难形容这一状况,它前所未有,试图将它描述出来的这一举动,都感觉是对自己认知的亵渎,我觉得以前从来没见过那么美的姑娘,像是平淡的生活被一束烟火点亮。但是,之前见她的时候,很难将她与舞蹈联系起来。于是我觉得舞蹈应该有它固有的美,是独立于演员而存在的。只不过很遗憾,它只能由演员的肢体动作呈现出来。后来,我又看了好多次跳舞的妹妹们,她们是一整个舞蹈团。

为了描述我的认知变化的过程,后来写了下面的乐曲,从偷看排练,到汉唐古典舞,再到现代舞,然后离开学校,美好也就此终结 ……


展望 2023

临了的最后这一天应该是感染了新冠,今天早上起来嗓子如刀割,也算是一个特别的体验了。

还是要立 flag,尽管大概率是完不成的:

  • 完成网络栈
  • 完成车尔尼 599

参考