美文网首页
Recreating SICP 1 : 从一个计算器开始

Recreating SICP 1 : 从一个计算器开始

作者: 牛头酋长 | 来源:发表于2020-07-15 08:43 被阅读0次

    0.前言

    为了表达计算机科学的全局定位感,我将以SICP(Structure and Interpretation of Computer Programs)为内核,用故事的形式来进行重构。

    故事的人物原型采用动画片:Rick & Morty

    Rick & Morty

    1.我想学点本事

    Morty家的车库是Rick的工作室。

    Rick正在调试传送抢,一旁的Morty看得入了神。

    Morty: Rick,你是怎么造出那玩意的?

    Rick:你是白痴吗?当然是靠科学。

    Morty:能给我讲讲吗?

    Rick:Oh,Morty,你放弃吧,你的智商不适合学那玩意,你就跟着我就好了。

    Morty:那我去找书看吧。

    Rick:No!Morty!不要看那些垃圾!那里面充满了谎言。

    Morty:啊,真的吗,你怎么知道?

    Rick:我可是全宇宙最聪明的科学家。你为什么想学这些?

    Morty:我忽然发现我什么也不会,如果你死了...我想学点本事,以后也好养活自己。

    Rick:...算了,还是我来教你吧。

    Morty:Oh!太好了Rick!你是全宇宙最聪明的人,一定能教会我的。

    Rick:我有点后悔了,我竟然给自己找了一件最难的事。

    Rick:那么,从明天开始,除了吃饭和睡觉,所有时间都得跟着我学习!我要把你榨干!你同意吗?

    Morty:周末可以看电视吗?

    Rick:不可以!一分钟都不能休息。以你的资质,如果不舍弃一切,All in Learning,你还是会是现在的你。那么,你同意吗?

    Morty:好...好吧,我同意!

    提纲:

    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语言,魔法师视角。

    4)产品目标是创造出通用计算器。上帝视角,可迭代。

    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.戏核:Rick&Morty一步一步创造出通用计算器

    10.戏的骨架:

        1)Rick带着Morty进入了自己创造的宇宙,但是弄坏了传送抢,出不去了。所以要在这个宇宙创造出通用计算机,再用通用计算机创造出传送枪。

        2)Rick知道传送抢的代码,但是不知道计算机的代码,一样和Morty一起从头创造通用计算器。

        3)思考:为什么要让Rick和Morty一起陷入小宇宙,因为有代入感,有不确定性,看到Rick的挣扎。否者Rick只是在一旁指点,读者提不起兴趣。

        4)既然如此,从开头就不要设计成Morty想学东西,直接就让Rick和Morty陷入困境,必须创造出通用计算器才能走出去。 

        5)Rick创造了一个小宇宙,发现里面有个人有问题,需要kill掉他,自己进了进去,但是传送枪坏了出不去了,得重新创造出通用计算机。

        6)Rick不会从零开始,而是从一个半成品开始。本身的宇宙就是lisp构建的,所以可以使用lisp来进行编程。需要在这个lisp的世界构建出自己的lisp解释器。

        7)如何绕过硬件部分,进入软件的构建?即如何从计算器开始?

    未完待续......

    相关文章

      网友评论

          本文标题:Recreating SICP 1 : 从一个计算器开始

          本文链接:https://www.haomeiwen.com/subject/nsnrhktx.html