Replying to f6XF

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

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

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

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

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

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

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

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

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

上 Kent Dybvig 的编译器课程的时候,他有一次对我们说,很多编译器课程都强调“优化”,但大部分编译器的“优化”都是针对糟糕的程序员做的优化。比如 common subexpression elimination(CSE,提取共同子表达式)。本来训练有素的程序员应该避免写出重复而且耗时的表达式,自己定义变量来避免重复的计算。现在编译器却把这事揽在自己头上,好像这很重要一样。其实不是那么重要。

编译器的速度才是重要的事情。很多编译器做很多这类愚蠢的“优化”,结果编译器的速度就因为这些优化降低了。每次 build 一个 project 用很长时间,这样修改代码到看结果的周期就变长了,开发效率就降低了。

所以 Chez Scheme 不强调这些普通的优化,它假设程序员具有基本的素质,能够自己避免重复而耗时的表达式。Chez Scheme 的优化大部分都是针对编译器自己生成的代码做的,比如 closure optimization,会尽量减小产生的 closure 的内存大小。这些是程序员无法控制的,所以编译器应该尽量达到最优。但这样的优化也都有一个限度,要是为了优化而让编译器变得很慢,目标程序却没有快很多,也不值得了。Chez Scheme 力争编译速度和目标程序的速度达到平衡。

结果在后来的工程实践中,我多次的领悟到这个重要的道理。

Reply to this note

Please Login to reply.

Discussion

上 Kent Dybvig 的编译器课程的时候,他有一次对我们说,很多编译器课程都强调“优化”,但大部分编译器的“优化”都是针对糟糕的程序员做的优化。比如 common subexpression elimination(CSE,提取共同子表达式)。本来训练有素的程序员应该避免写出重复而且耗时的表达式,自己定义变量来避免重复的计算。现在编译器却把这事揽在自己头上,好像这很重要一样。其实不是那么重要。

编译器的速度才是重要的事情。很多编译器做很多这类愚蠢的“优化”,试图把糟糕的代码变成优秀的代码,结果编译器的速度就因为这些优化降低了。每次 build 一个 project 用很长时间,这样修改代码到看结果的周期就变长了,开发效率就降低了。

所以 Chez Scheme 不强调这些普通的优化,它假设程序员具有基本的素质,能够自己避免重复而耗时的表达式。Chez Scheme 的优化大部分都是针对编译器自己生成的代码做的,比如 closure optimization,会尽量减小产生的 closure 的内存大小。这些是程序员无法控制的,所以编译器应该尽量达到最优。但这样的优化也都有一个限度,要是为了优化而让编译器变得很慢,目标程序却没有快很多,也不值得了。Chez Scheme 力争编译速度和目标程序的速度达到平衡。

结果在后来的工程实践中,我多次的领悟到这个重要的道理。

《continuation 专项班结课》

「continuation 专项班」昨天已经结课了。这是既第一届进阶班之后,我第二次讲授深入的 continuation 内容。从无到有,我们自己实现并且理解了 CPS,call/cc 和 shift/reset 的概念。其中还是包括了 cpser,也就是传说中功的“王垠 40 行代码” 😄。

学习了这些内容对于实际编程有什么用处呢?首先我们用很短的代码(只有 14 行),实际地实现并理解了操作系统的线程是怎么回事,并且用很短的代码(还是只有 14 行)实现了 cpser,它的本质其实是编译器的核心部分。

有人可能以为这些也许太底层系统了,但这些内容其实也可以帮助理解最流行的一些 JavaScript 特性,比如 promise/async/await 之类的。比如,我们会理解下面这段结果有点出乎意料的 JS async 代码是在做什么,并且有能力自己实现 JS 的 promise/async/await 机制。

var show = console.log;

async function fact(n)

{

if (n == 0)

{

return 1;

}

else

{

return n * (await fact(n - 1));

}

}

fact(5).then(show);

fact(2).then(show);

fact(3).then(show);

fact(1).then(show);

fact(4).then(show);

可以试试看,这代码得到什么结果?