Replying to f6XF

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

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

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

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

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

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

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

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

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

《计算机科学基础班(第5期,现实接轨班)招生》http://t.cn/A6lNS8zE

计算机科学基础班,是一门零基础,目标在于短期内掌握计算机科学精髓的课程。它是我 20 多年的计算机学术和工程实践,加上两年面向社会的教学实验的结晶。课程吸取了世界上主要的计算机入门教学方式的优点,避免了它们阻碍初学者理解的各种问题,以至于完全零基础的学生也可以在短短两个月之内,掌握大学博士阶段才可能学到的精华内容。这些内容足以建立起坚实的知识基础,使得他们对于理解计算机科学的其他方面从容自如。

第 4 期基础班于 2021 年 5 月进行之后,就再也没有开过基础班。现在经过了进阶班和 continuation 和并发计算专项班的巨大成功,我决定再次开展从零开始的基础班。欢迎有志人士报名。

这次课程相比之前的几届,我会增加一些“现实接轨”内容。通过几种当今流行的语言的特性,掌握现实工程实践中能用到的概念。这些“接轨语言”初步计划是包括 Python,Java 和 Rust。通过理解它们,掌握“面向对象”,“静态类型系统”和“内存管理”等重要概念。

所以这一期的基础班不但会打下“递归”这样的坚实基础,而且会让同学们能更容易把学到的精髓概念和现实的工作接轨。

课程方式

- 课程使用 Zoom 视频会议的方式进行教学。

- 每周一次课,大概 2 小时。

- 每周有一次自由讨论会,为同学们统一答疑。

- 每个学生会被加入自己独有的辅导群,会由经验丰富的助教进行辅导,并且由我监督和指点,保证学生不卡在不必要的环节。

- 学生会被加入第 5 期基础班的大群,方便同学之间交流。

适用人群

- 从中学到博士阶段的各专业学生,不管文科还是理科生都能学会。之前的课程已经成功让一个 13 岁少年深入地掌握了这些内容,并且超过了很多经验丰富的成年学生。

- 已经从事工作的人员,包括 IT 从业人员,IT 管理类工作和其它工程类工作人员。

- 其它各类对计算机感兴趣,想把它作为业余爱好的人员。

学费和报名方式

- 学费统一为 12800/人。

- 报名请发送 email 到 yinwang.advising@icloud.com。标题为《计算机科学基础班第 5 期报名》。来信请说明自己的基本信息,附件发送一份简历,提供微信联系方式。请写一段 200 字左右的“个人说明”,说明你的学习动机。对于符合要求的求学者,我会进行简短的微信语音面试。

开始时间

课程计划于 2024 年 1 月开始,具体的时间会根据报名情况而定。课程中间如果遇到春节等节假日,会短暂休息。

教学语言

课程开头会使用 JavaScript 作为教学语言,因为 JavaScript 易用而且应用非常普遍。但课程并不是教 JavaScript 语言本身,课程教的思想不依赖于 JavaScript 的任何特性,它可以应用于任何语言。

为了使学生能够和现实的编程工作接轨,这一期的课程会在最后加入其它三种“现实语言”。目前初步的计划是 Python,Java 和 Rust。我会讲授每种语言特有的功能,比如“面向对象”,“静态类型系统”,“内存管理”等等。当然,这些特性都会建立在之前学会的基础上。

对于每种语言我会增加一节课,一次讨论会,和一周的辅导时间。根据进阶班的成功经验,我觉得这些语言每种增加一节课,应该足够。

课程大纲

第 1 课:函数。跟一般课程不同,课程不从所谓“Hello World”程序开始,也不会叫学生做一些好像有趣而其实无聊的小游戏。一开头我就讲最核心的内容:函数。关于函数只有很少几个知识点,但它们却是一切的核心。只知道很少的知识点的时候,对它们进行反复的练习,让头脑能够自如地对它们进行思考和变换,这是教学的要点。我为每个知识点设计了恰当的练习。

第 1 课的练习每个都很小,只需要一两行代码,却蕴含了深刻的原理。练习逐渐加大难度,直至超过博士课程的水平。我把术语都改头换面,要求学生不上网搜索相关内容,为的是他们的思维不受任何已有信息的干扰,独立做出这些练习。练习自成系统,一环扣一环。后面的练习需要从前面的练习获得的灵感,却不需要其它基础。有趣的是,经过正确的引导,好些学生把最难的练习都做出来了,完全零基础的学生也能做出绝大部分,这是我在世界名校的学生里都没有看到过的。具体的内容因为不剧透的原因,我就不继续说了。

第 2 课:递归。递归可以说是计算机科学(或数学)最重要的概念。我从最简单的递归函数开始,引导理解递归的本质,掌握对递归进行系统化思考的思路。

递归是一个很多人自以为理解了的概念,而其实很多人都被错误的教学方式误导了。很多人提到递归,只能想起“汉诺塔”或者“八皇后”问题,却不能拿来解决实际问题。很多编程书籍片面强调递归的“缺点”,教学生如何“消除递归”,却看不到问题的真正所在——某些语言(比如 C 语言)早期的函数调用实现是错误而效率低下的,以至于学生被教导要避免递归。由于对于递归从来没有掌握清晰的思路,在将来的工作中一旦遇到复杂点的递归函数就觉得深不可测。

第 3 课:链表。从零开始,学生不依赖于任何语言的特性,实现最基本的数据结构。第一个数据结构就是链表,学生会在练习中实现许多操作链表的函数。这些函数经过了精心挑选安排,很多是函数式编程语言的基本函数,但通过独立把它们写出来,学生掌握的是递归的系统化思路。这使得他们能自如地对这类数据结构进行思考,解决新的递归问题。

与一般的数据结构课程不同,这个课程实现的大部分都是「函数式数据结构」,它们具有一些特别的,有用的性质。因为它们逻辑结构清晰,比起普通数据结构书籍会更容易理解。与 Haskell 社区的教学方式不同,我不会宗教式的强调纯函数的优点,而是客观地让学生领会到其中的优点,并且发现它们的弱点。学会了这些结构,在将来也容易推广到非函数式的结构,把两种看似不同的风格有机地结合在一起。

第 4 课:树结构。从链表逐渐推广出更复杂的数据结构——树。在后来的内容中,会常常用到这种结构。树可能是计算机科学中最常用,最重要的数据结构了,所以理解树的各种操作是很重要的。我们的树也都是纯函数式的。

第 5 课:计算器。在熟悉了树的基本操作之后,实现一个比较高级的计算器,它可以计算任意嵌套的算术表达式。算术表达式是一种“语法树”,从这个练习学生会理解“表达式是一棵树”这样的原理。

第 6 课:查找结构。理解如何实现 key-value 查找结构,并且亲手实现两种重要的查找数据结构。我们的查找结构也都是函数式数据结构。这些结构会在后来的解释器里派上大的用场,对它们的理解会巩固加深。

第 7 课:解释器。利用之前打好的基础,亲手实现计算机科学中最重要,也是通常认为最难理解的概念——解释器。解释器是理解各种计算机科学概念的关键,比如编程语言,操作系统,数据库,网络协议,Web 框架。计算机最核心的部件 CPU 其实就是一个解释器,所以解释器的认识能帮助你理解「计算机体系构架」,也就是计算机的“硬件”。你会发现这种硬件其实和软件差别不是很大。你可以认为解释器就是「计算」本身,所以它非常值得研究。对解释器的深入理解,也能帮助理解很多其它学科,比如自然语言,逻辑学。

第 8 课:Python。利用 Python 语言,讲述所谓“面向对象”编程方式。之前的课其实已经用到“面向对象”的精华思想,所以现在用 Python 只是为了和“现实编程”对接一下,让同学们理解之前学到的思想能如何对应到现实的工作代码中。这节课也会覆盖其它命令式语言的基本用法,比如数组,赋值,循环等等。

因为“AI 热”,Python 可能是目前最热门的语言。

第 9 课:Java。利用 Java 语言,引入“静态类型系统”这个重要工具。静态类型系统是创建大型工程,保证基本质量的重要工具。通过 Java 的类型系统,同学们可以掌握基本的静态类型检查规则,泛型等重要概念。这个基础会为其它类似的语言,比如 C++,C#,Rust 等打好基础。

Java 虽然备受很多“函数式程序员”诟病,说它过度复杂,但只要你学会了精髓的编程技巧,一样能用 Java 写出简单而优质的代码。而且 Java 至今仍然是 Web 服务器领域用得最多,相对而言最可靠的语言。

第 10 课:Rust。Rust 是当今最热门的新兴语言,但里面的功能其实大部分都是其它语言早就有的,只不过 Rust 选择了它们最好的一些部分,也当然包含一些自己的设计错误。Rust 独有的特性是“静态内存管理”,也就是不通过“垃圾回收”(GC),而是通过静态类型系统来保证内存的安全性。我们会通过这一节课,掌握内存管理的基本原理,理解 Rust 独有的 ownership,lifetime 等重要概念。如果有时间,我们也会利用 Rust 来理解其它一些重要的类型系统特性。

通过 Rust 理解了内存管理,也会帮助同学们理解 C,C++ 等完全“手动内存管理”的语言,为底层的系统编程打下基础。

Reply to this note

Please Login to reply.

Discussion

No replies yet.