0.前言
为了表达计算机科学的全局定位感,我将以SICP(Structure and Interpretation of Computer Programs)为内核,用故事的形式来进行重构。
故事的人物原型采用动画片:Rick & Morty
1.提纲:
0.定位是本系列的第一抽象目标,摆对位置,理解自然发生。
1.计算机科学的定位:科学与世界的关系,计算机科学与科学的关系,编程与计算机科学的关系,软件与硬件的关系。
2.计算机科学即不是科学,重点也不是计算机。
计算机科学不是科学,它不是理学,它更像是工程学,类似一门手艺或者艺术。
计算机也也不应该是重点,计算机只是承载思考的工具,这就好比粒子加速器不能代表物理学,显微镜不能代表生物学。
计算机科学的真正名称应该是思考的艺术或者思考的手艺。
3.剧中Rick如何设计学习目标?
方案A:从0开始构建
1)到一个平行宇宙,在这没有计算机,Morty的学习目标是在这里构建计算机科学。
2)发明计算机
3)发明基于计算机的编程语言
4)利用编程语言构建复杂系统
5)编程语言可以构建逻辑计算机
方案B:直接从LISP开始
1)Process就是精灵,Procedue就是咒语,学会了咒语,就可以让精灵替你做事情。你就拥有了魔法能力。
2)Rick就开始教Morty这种魔法。目的是可以使用这种魔法做一个业务。
3)业务可以先画个大饼,吊着Morty的胃口,教学顺序则可以和SICP一致了。
4)本质上就是找一个理由,让RICK的教学和SICP一致。 而SICP没有给出这个具体的项目目标。
方案C:分层,Layer System
1)设计大小合适的目标,作为一个独立完整的层。
2)层和层之间是支撑关系,但是彼此还独立。
3)解决的问题是:目标设计的大小合适。如果目标是重造计算机科学太大了。如果是没有目标的直接从LISP开始,读者会没有方向感。
方案D:计算器->通用计算器
1)从一个极简的加法器开始
2)各种计算能力:平方根,有理数
3)通用计算器=计算机
4)Rick会做一些脚手架,来为Morty接生,不会让Morty从0开始。
5)Rick带着Morty画一个圆,最终Morty可以咬上自己的尾巴,达到通透境界。
6)Rick一个人无法从零开始构建计算机科学,因为,最简单的起点最难理解,他必须经历足够多的复杂,才能理解简单。这就像一次浴火重生,一次轮回。这就像巴赫的哥德堡变奏曲,经过一个周期,回到第一首,同样的曲子不同的意境。
7)Morty想要学的是创造一个小宇宙就像之前Rick用来当电源的小宇宙。Rick说好,就创造了一个初级的半成品,这个宇宙还没有计算机科学,需要Morty帮助这个宇宙的人们造出一台通用计算机。为什么不让morty从零开始创造一个小宇宙呢?因为最开始的基础最难理解,必须要理解到足够的复杂之后才能理解,这个理解路径就像画一个圆圈,最难的是从底部开始画,比较容易的是从左边开始,画着画着就懂得了足够的复杂,再往前走就会碰触到那个底部的简单。所以真实过程是Morty在小宇宙中从半成品开始学习和构建,创造出了小宇宙中的小小宇宙,这时候morty就能理解最初的简单。在这个过程中Rick就是搞定半成品的脚手架、接生婆。Rick将Morty的认知接生出来。
8)第一阶段,Rick让Morty在自己创造的Lisp解释器之上构建计算器,
第二阶段,Morty需要让这些计算功能的代码跑在自己构建的Lisp解释器之上,虽然这个Lisp解释器是基于Rick提供的Lisp解释器。
第三阶段,Rick让Morty自己创造出支撑Lisp解释器的硬件(虚拟硬件,用LISP来模拟)。
4.通用视角:解释器。用解释器这个通用视角可以理解所有事情。通过这个视角可以明白Power来自原子的自动work,人能做的只是设计布线,让原子的力量可以传导到业务层。而原子的动力来自底层的解释器,即,元解释器。元解释器不可说,所以Pow come from GOD。
5.编程是一门艺术,这里的艺术是指,在程序设计期间,就可以想象出运行时的效果,编程者的水平就依赖想象的能力,也就是看见未来的能力。用解释器的视角来解释,就是每个人的大脑中的解释器品质不同。
这种人脑中解释器的构建,本质就是在打磨艺术品。所以真正的艺术品是Mind中的解释器,而看得见的东西只不过是它的外显。
6.作者的定位是什么?即书中实现的产品目标是什么?
1)产品目标是计算机科学。上帝视角
2)产品目标是计算机科学的教程,SICP视角
3)产品目标是创造LISP语言,魔法师视角。
7.Essential of Computer science
An Art of controlling complexity with the tool of Computer.
An Art of entropy reduction, which is the original task of life.
从抽象的视角来看,所有技艺的目的都是减熵,只不过使用的工具不同,画家用画布和画笔、厨师用食材和刀叉、木匠用木头和尺锯、作家用文字和笔纸、程序员用代码和计算机
8.Design book structure
Part I Calculate
Part II Universal Computation
Part I for basic purpose: calculate faster than human’s brain. (inner cycle)
Part II for extended purpose: control complex (outer cycle)
9.戏核:如何创造出通用计算器
2.故事框架
1.Rick的宇宙飞船没电了,发现是电池没电了。
2.宇宙飞船的电池是一个RICK创造的小宇宙(Matrix)
3.Rick&Morty通过类似耳机的设备接入到Matrix,想要排查问题。
4.这时候,Rick&Morty的肉身还在现实世界,只是精神通过耳机联接进入了Matrix。
5.问题所在原来不是Matrix,而是垃圾回收程序(GC)
6.GC是一个特殊的程序,GC运行在Matrix之外,GC是清理内存,Matrix根本不知道它的存在。
7.Rick想要退出到现实世界,再来修复GC,但是耳机退出功能无效了。因为GC将Matrix搞乱了,而耳机的CODE虽然是好的,但是运行要基于Matrix,所以无法正常运行。
8.Rick想要创造一个新的解释器,来支撑耳机运行。
(接入SICP的第4章)
9.为了测试解释器,需要创造一个应用程序,即,一个计算器。(测试驱动,即因为解释器所以构建应用OR因为测试需求的存在,所以构建应用)
10.计算器一步一步演进,越来越复杂。同时解释器也跟着一步一步演进,跟得上应用的复杂。因为应用要跑在解释器之上。(融合SICP第3和第4章,成为双线演进)
最开始Rick带着Morty写一个计算器,后面主要由Morty负责,Rick可以随便提要求,功能越来越难,例如:自然数运算,有理数运算,复数运算,微积分等。因为Rick会说,这些计算能力,耳机中都会用到。所以,测试用例必须通过,耳机的退出才能正常。(这样设计的好处是,不用解释耳机如何做出来的)
11.新解释器好了,但是Rick发现自己糊涂了。因为即便新解释可以解释运行耳机代码,但是自己并不能进入到解释器中被执行。
12.所以,Rick需要创建一个新Matrix,让自己链接进去,再在里面运行耳机退出。
13.而,新Matrix无法基于新解释器,因为新解释器基于旧解释器。而旧解释器很不稳定。
14.所以,Rick需要基于硬件,创造出一个LISP Machine。Lisp Machine就是一个硬件的Lisp解释器。
(接入SICP的第5章)
15.为什么LISP Machine的硬件可以正常运转,而旧解释器无法正常运行?
- 因为,硬件单元足够简单,没有被破坏。但是就解释器太复杂,无法稳定。
16.硬件单元的本质,也是LISP解释器解释出来的虚拟硬件单元。只不过这部分代码很稳定而已。也就是说,就的LISP解释器,只在解释硬件单元的部分是稳定的。
17.RICK联入新的MATRIX,然后退出到真实世界。
18.为什么进入到新Matrix,可以退出到最外层的现实世界,而不是退出到旧Matrix?
- 因为,退出功能的本质,是欺骗大脑,自己真的退出了,真正退出动作是大脑完成的。
- 因为,如果Rick在Matrix中自杀,会真的死掉,因为大脑相信自己死了。