Replying to f6XF

之前有一个对 Matrix 有所了解,却对他们的“科技实力”过度夸大,相信各种夸张的阴谋论的人,对我说:“你这样公开指出 Matrix 的各种太空骗局,疫情骗局,化学尾迹之类,我怕他们会特别「照顾」你……” 他的意思是,他们会暗害我。在疫情封控期间,还有另一些人有类似的说法,建议我别说话。我还真是有点怕有人暗害我,所以有些事情当时没有挑明。

但我现在不怕了。我已经不怕死,他们能奈我何?世界已经被 Matrix 操纵了至少一百年,人类已经沦落到今天的地步。疫情的三年,封控的两月,基本的人身自由和健康权益被以各种借口残酷地侵犯,世界层出不穷的各种怪事,各种大戏继续上演。继续在这样的世界上活下去,本来已经没有了意义,死又有什么可怕的呢?也许“死后”我才发现自己从一个教室样子的地方醒来,全班同学在对我鼓掌,老师对我说:“你真是好样的!祝贺你,以优异的成绩毕业了。这堂课的主题叫做「不要迷信权威」。” 也许,人生就是这样一堂课,一场梦,我们是来学东西的。

所以我感谢这些人的好意,但我觉得他们这样的想法是不明智的,对于大家和自己都不好。我们正在被一个秘密犯罪团伙侵害,却有人觉得我们作为受害者,不应该声张,不应该让其他人知道这件事。这样的畏惧心理,只会让这个团伙更加嚣张,肆无忌惮。这当然不是对待犯罪分子的正确态度。这就像一个女孩子在公交车上遇到流氓,却因为怕被“报复”,所以忍气吞声,不敢公开与之对抗,让大家都来唾骂这流氓,将他绳之以法。如果她当时果断使用防身术,这流氓最后被大家打残废了,事后流氓会报复她吗?不会的,因为流氓也知道自己是流氓,被揭穿,挨打是活该的。

Matrix 的成员当然知道自己是犯罪团伙,他们制造出这些大戏来残害民众,被人看穿,揭发也是活该的。所以实际上没有人会暗害我,也没有人会暗害那些声援我,转述这些信息的人。我只是一个普通的民众,我手里没有任何机密文件,我只是看到一些大家都能看到的事情,我说出来了而已。一旦我说出来,很多人就都知道了,这些事情每个人都看得见。暗害我又有什么用呢?他们不能暗害所有知道这信息的人。要是我们任何人遇到莫名其妙的危害,那其他人就更确信这个犯罪团伙的存在了,就会有更多的人站出来说话。我们的朋友,家人,老师,学生,所有认识我们的人,都不会放过他们。

这就像《皇帝的新装》里的那个小孩,他说:“可是皇帝什么衣服都没穿啊!” 结果大家都知道是怎么回事了。请问,有人会去暗害这个小孩吗?当然不会。

要明白的是,这些人是犯罪分子,他们是见不得光的,而且他们没有很厉害的武器。他们仍然必须假装这个世界是有法律的,所以他们甚至不能妨碍我的日常生活。否则他们就会被察觉,人们就会更加确认他们的存在。甚至微博都不能明显地删除我谈论 Matrix 的帖子,否则就等于承认了微博是 Matrix 的成员之一。“言论自由”是一个假象,但 Matrix 必须继续演出它。至少他们得演出其中的一部分,不能赤裸裸地暴露自己害怕人们知道某些事情,不然人们就会更加确信这些事情是真的。

我曾经还因为这些人的说法,开始胆怯,有段时间不敢用微信跟朋友聊这些事,聊这些事都用 telegram。但后来有个朋友跟我说,干嘛要用 telegram 啊,又不是只有你一个人知道这些事,其实完全没有必要担心的。虽然微信一直在监视信息,但他们不能让大家明显地察觉他们在监视信息,他们也不能根据这些信息进行任何不利于我的动作。他们甚至不能阻止这些信息到达指定的接收者,否则他们在监视信息的事实就会赤裸裸地暴露出来,他们想阻碍人们知道什么样的信息,就会被发现,进而既成事实。所以何必怕在微信说这些事呢,自己给自己添麻烦而已。而且微信上聊这些的人如果多起来,反而会让 Matrix 害怕。因为他们是见不得光的,所以偏要在微信说这些事,就是要让他们知道:“我们都知道!” 听了她的话,我才恍然大悟,我确实没必要担心的。

所以,那些人的“忠告”或者“建议”,让我“保护自己,不要说话”,我觉得其实是在对我变相进行恐吓,是在助长犯罪团伙的气焰。当有人再三给我这样的信息,后果就是被我删除,因为我已经分不清他们是朋友,学生,还是 Matrix 雇佣来封我的嘴的人。我不需要这样的“朋友”,我不需要他们的“建议”,我不认识这样的人。

我知道有很多人看到类似的信息,可能心里已经明白,却因为害怕被暗害,不敢告诉其他人,甚至不敢点赞。我也曾经是这样的人,但是我现在不再畏惧了。如果世界继续这样被 Matrix 操纵,人生本来就没有了意义。人生如戏,把想说的话都说出来,造福世界,又何乐而不为呢?我希望大家也都明白这个道理,我们其实很安全。让越多人知道这些事,我们越是安全。

《我看到的 Rust 历史》

Rust 语言最近相当火热,被很多人认为是会在未来取代 C/C++ 的语言。好像是个公司就得用 Rust 做“后端”,没有其它选择了一样。这不得不让我想起 Rust 最早时候的历史,以及最近我发现的 Rust 语言的严重设计问题。

2009 年我还在 IU 的时候,有两个半路出家的同学,本科都不是计算机专业的,在 Dan Friedman 的课上完全迷糊,痛苦不堪那种。每每在课上讲自己对于 Friedman 给的“脑筋转弯题”的结果,我也在场的时候,他们声音都是发颤的,因为他们一本正经好像自己很懂,却又怕被我问出破绽来。他们也声称做出过 CPSer,最后给出的结果却是错的。仔细观察,我发现他们根本不理解里面的原理,只是做了个“样子”,像有那么回事而已。

然而这样的人确实很会拍胸脯,会把握关键词,时机和人际关系。所以后来暑假结束时,我忽然收到通知,他们要给大家做一个关于“Rust 语言”的讲座。原来那个暑假,他们两个去了 Mozilla 实习,项目就是开发 Rust 语言。那就是我第一次听说 Rust 语言。

然而他们做的这个 Rust 的演讲却空洞无物,全是大口号。他们的幻灯片上画了一个大三角形,提出 Rust 的”三大特色“,当然其中包括了”安全“(security),另外两个我不记得了。当时,他们号称 Rust 使用静态分析,实现了完全没有 GC(垃圾回收)的内存管理。整个讲座就像是商业宣传,没有任何实质的技术内容,全是口号。

“完全没有 GC,静态的内存管理”,这其实是我那时候最感兴趣的话题。我也不满意 Java 等语言的 GC 带来的“随机停顿”,所以我花了很多时间来琢磨内存管理应该如何设计,可以“完全依靠静态分析”,不需要任何动态的垃圾回收。这个理想,就像 Rust 当时所号称的那样。

我琢磨了一段时间,实验了各种内存模型和静态分析。然而最后,这一切的梦想都被 Kent Dybvig 的一句话打破了。我还记得,我在 Kent 的办公室里说:“我想实现这么一个完全依靠静态分析,不用 GC 管理内存的语言。”结果他冷静地说:“完全静态的内存管理,这可能吗?内存管理本来就是一个动态过程。“

听了这话,我才开始反省之前的理想。我重新分析了编程语言的内存模型,发现它确实是一个”不可计算“的动态过程,等价于”停机问题“。这么简单的道理,我为什么没想到呢?

我又提出,也许应该使用引用计数进行内存回收,这样就不会有 GC 的随机停顿了。Kent 又告诉我,引用计数是有比较大开销的,很多时候还不如 GC,使用 GC 根本就不是问题,主要看你怎么实现它。

看来我思考过的一切,Kent 都已经思考或者经历过了,毕竟他开发编译器已经超过 30 年之久。我不得不佩服他的 Chez Scheme 编译器,它不但具有闪电般的编译速度,而且有合理的 GC 设计。它的垃圾回收器不但效率高,而且是可以让用户自己配置的。如果 GC 出现长时间停顿,用户可以通过调整参数改变它的行为。

Chez Scheme 为什么编译速度这么快?Kent 的回答是:因为它不做那些针对“愚蠢代码”的优化,它假设程序员有基本的素养,只做程序员自己没法做的高级优化。

Chez Scheme 这一切优势,都来自于设计的智慧,而不只是“聪明”和蛮干。

然而看看现在的 Rust 呢?很显然,当年的“完全静态分析”实现内存管理的理想已经破灭,Rust 也需要使用引用计数(Rc,Arc)。就像 Kent 说的,完全静态的内存管理是不可能的。

而且 Rust 还有“unsafe 代码”,因为已有的静态分析造成的限制,让它无法写出所有需要的代码,所以很多时候不得不跳出安全机制,使用“unsafe”关键字,使用没有静态安全保证的代码。最新的研究,有一些就是针对这些 unsafe 区域的,什么 Stack Borrow,Tree Borrow 等概念。然而它们做的其实是加入一些限制,结果你又没法写出应该可以表达的代码了。

然而即使一再地后退,又有引用计数,又有 unsafe,Rust 社区却仍然坚持使用“完全静态保证”这样的广告词。如果你指出这些例外情况,他们就改口说:这是 Rust 的哲学。

Rust 社区的“静态保证”口号传播如此广泛,如果你有异议,练刚入门的新手都会来“教育”你。甚至不需要人来教育你,如果你跟 ChatGPT 说这事,它都会跟你说:你不懂,这是 Rust 的哲学!

”哲学“?好一个高大的词汇。也就是说,这是一个“理想”或者希望做到的事情,一直没有做到,而且把事情越搞越复杂。

这就是为什么我虽然完全理解 Rust 的所谓“借用”,“生命周期”等概念,现在又有了 AI 工具可以帮我折腾,却一直不用 Rust。我不相信 Rust 真的是可以取代 C/C++ 的语言。

在“计算机科学基础班第5期”教会了大家 Rust 的内存管理机制之后,我更加欣赏 C 和 C++ 了。如果真有需要高性能的场合,我会选择 C/C++ 而不是 Rust。

Reply to this note

Please Login to reply.

Discussion

No replies yet.