V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asanelder
V2EX  ›  程序员

想看 SCIP, 铁子们有没有推荐的打开姿势?

  •  1
     
  •   asanelder · 2021-02-02 20:13:02 +08:00 · 4247 次点击
    这是一个创建于 1150 天前的主题,其中的信息可能已经有所发展或是发生改变。
    终于按耐不住自己的好奇心了, 下定决心, 干它!

    但干它之前, 想问问铁子们, 2021 年了, 这本书有没有正确的打开姿势?

    俺怕自己看偏了, 消磨了兴趣

    另外, 有没有铁子说一下, 为什么要看这本书捏? 看之前和看之后, 有啥不同?
    34 条回复    2021-02-04 09:28:30 +08:00
    Rasphino
        1
    Rasphino  
       2021-02-02 20:18:36 +08:00
    不懂就问,什么是 SCIP ?只听说过 SICP
    dalibaxiaoliba
        2
    dalibaxiaoliba  
       2021-02-02 20:19:14 +08:00
    直接看就好了,还么看就有疑问么...
    IsaacYoung
        3
    IsaacYoung  
       2021-02-02 20:21:49 +08:00
    SICP
    6.S081
    CS143
    misaka19000
        4
    misaka19000  
       2021-02-02 20:26:23 +08:00
    干就完事儿了
    asanelder
        5
    asanelder  
    OP
       2021-02-02 20:47:53 +08:00
    @Rasphino #1 哈哈, 一直拼错
    @dalibaxiaoliba #2 准备就着 mit 的视频看了
    @IsaacYoung #3 看 http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ 没问题吧
    @misaka19000 #4 奥力给!
    darksword21
        6
    darksword21  
       2021-02-02 20:48:58 +08:00
    顺势安利 emacs
    Accessing
        7
    Accessing  
       2021-02-02 20:57:46 +08:00   ❤️ 1

    在没有上下文环境的情况下,不要用缩写
    否则给人的感觉就是这家伙在装
    Accessing
        8
    Accessing  
       2021-02-02 20:58:15 +08:00
    真的装了其实也挺好的
    拼错了可就全毁了
    catsoul
        9
    catsoul  
       2021-02-02 20:59:41 +08:00   ❤️ 1
    据扯,凌晨 1 点 45 分左右,在南墙根儿点一盏烛灯(没有烛灯可用煤油灯代替,电灯不行),人在对角线盘腿坐下,闭幕诵念 108 次“天灭 Vim,用 Emacs 包平安”后,以左手是指轻触舌尖后翻书,修炼方可获得最大功效(逃
    imzhazha
        10
    imzhazha  
       2021-02-02 21:14:28 +08:00 via Android
    我不是计算机专业的,当年接受了知乎上的建议,上手就是这本。有啥正确的打开姿势,看就完事了。
    asanelder
        11
    asanelder  
    OP
       2021-02-02 21:16:44 +08:00
    @Accessing #7
    @Accessing #8 这个缩写应该是学计算机的都知道, 只是俺一直在拼错(逃~~~)
    @darksword21 #6
    @catsoul #9 这个为啥能和 emacs 产生关系呢? 二位铁子?
    gricn
        12
    gricn  
       2021-02-02 21:21:27 +08:00
    借着在这问一下,直接看书和配合 MIT or Stanford 的视频比,有哪些差别?
    gricn
        13
    gricn  
       2021-02-02 21:22:11 +08:00
    我的个人感受目前只有一个,push 自己的学习进度
    KousukeSakurako
        14
    KousukeSakurako  
       2021-02-02 21:23:15 +08:00   ❤️ 2
    http://composingprograms.com/
    我看的这个, 虽然后来又把原版书也读了一遍
    墙裂推荐, 没什么好说的
    dc25b
        15
    dc25b  
       2021-02-02 21:40:48 +08:00
    我是有点懒。。把伯克利的 CS61a 做了一遍,所有 lab 加 project,算是浅尝辄止吧。
    gowk
        16
    gowk  
       2021-02-02 21:56:19 +08:00
    asanelder
        17
    asanelder  
    OP
       2021-02-02 21:59:05 +08:00
    @qidada4880 #14
    @gowk #16 感谢铁子给的资源, 看了一下, 好东西
    546L5LiK6ZOt
        18
    546L5LiK6ZOt  
       2021-02-02 22:41:45 +08:00
    我就是题主说的消磨了兴趣的人,已经看到了第 4 章。
    我觉得如果作为编程入门,SICP 是一本很好的书。我看的时候,一直在后悔入门学的还是谭浩强的 C 语言设计。
    但是编程久了,SICP 里面讲的一些理念自然早已理解,我看的时候感觉有点无聊,最近刚打算放弃读下去。
    oneforallsoft
        19
    oneforallsoft  
       2021-02-02 22:47:09 +08:00 via Android
    像 mit 一样 所有该系本科生入学前都应该看完
    zwpaper
        20
    zwpaper  
       2021-02-02 22:47:46 +08:00 via iPhone
    emacs 是因为 lisp
    levelworm
        21
    levelworm  
       2021-02-03 01:12:05 +08:00 via Android
    我觉得别纠结做完练习,练习里头有一些算法的东西,还有一些比如什么电子工程的玩意。我觉得可以找名校课程跟着他们的作业和实验就好了。
    levelworm
        22
    levelworm  
       2021-02-03 05:25:15 +08:00 via Android
    话说大家有没有兴趣搞个 discord 一块看?最好是跟 CS61A 而不是看书,因为习题实在太多了。周末可以视频或者音频聚一次,大家总结一下经验和问题,平时就文字讨论,如何?
    1490213
        23
    1490213  
       2021-02-03 07:32:50 +08:00 via Android
    直接看就行了,能有啥问题?只是后面几章需要多花点时间琢磨一下而已。
    xpresslink
        24
    xpresslink  
       2021-02-03 10:04:48 +08:00   ❤️ 1
    楼主是要干以前 scheme 版还是现在的 python 版?

    scheme 版, 百度 《计算机程序的构造和解释( SICP 中文第 2 版)
    https://download.csdn.net/download/a19980115/10289121
    https://github.com/huyubing/books-pdf/find/master

    python 版
    https://wizardforcel.gitbooks.io/sicp-py/content/
    namelosw
        25
    namelosw  
       2021-02-03 12:13:55 +08:00   ❤️ 7
    除了第五章没看完其他都看得差不多了. 一些打开方式:

    * 快速扫一遍, 确认真的想读. 很多人读过了大呼上当, 其实前半本书很多东西都跟日常工作对应.

    * 看完了就忘是最没意义的, 尝试避免这点, 不然还不如不看.

    * 从快到慢多看两遍效果比较好. 不然上来精读总也看不到后边, 前面其实都不重要.

    * 找个时间心气高的时候一口气看一两章, 然后接下来的几天里努力把第三章啃完

    * 看二三章之后如果看不下去了, 可以回顾一下, 拿一些现代的工具比较一下, 思考一下优劣. 比如里面的 data directed 和 Java 的扩展机制比有什么优劣. 再比如第三章既介绍了 map 和 flatMap, 又介绍了 stream, 这两个能不能合并起来呢? 其实合并起来就是 Reactive extension.

    * 第三章的结束是一个重点: OO 和 FP 思想的区别. 可以找一下原教旨的 OO 语言比如 Smalltalk 玩一玩, 感受一下和 Java 有什么不一样的. 然后再找个现代函数式语言试试, 比如 Elixir(易)或者 Haskell(难).

    * 看完要做题, 但是卡住了直接跳到下一道, 基本上做上一半或者三分之一就代表你大概理解了, 赶紧趁热乎看后续章节, 别纠结. 某些题一看就很花时间就跳过, 或者上网看一下思路.

    * 第四章第五章基本就不是第一轮看的. 大部分人都会看两三章就放下了, 然后过几个月就全还回给书了. 所以二刷的时候可以快速温习一下前三章.

    * 第四章看完可以试一下 Prolog/Datalog, 比如 Datomic 数据库.

    * 四五章看到后面觉得不着地可以再去看 crafting interpreters 看, 前半本跟第四章对应, 后半本跟第五章的一部分对应.

    * 学不学 Emacs 都行, 不学 Emacs 就用 Racket, 里面有 SICP 的 language pack. 但是如果看不下去书的时候又没啥好做的可以折腾一下 Emacs, 然后折腾烦了再看书. 切忌把 Emacs 当前置条件, 同时学两个东西很容易互相卡住.

    ---

    大概列一下提纲, 感兴趣的同学可以大概扫一眼是不是真的感兴趣:

    * 五章五个主题, 这五个主题描述的是和编程语言相关的主要话题, 一个编程语言的重点是它如何处理原语, 组合, 抽象.

    * SICP 的特点是扔掉现实世界, 在一个极小的 LISP 世界里从 0 开始构建所有关于计算机的基础知识.

    * 前两章讲介绍了 LISP 原语 /组合 /抽象, 第一章是函数抽象, 第二张是数据抽象(最终引向多态)

    * 前三章和规模化软件开发相关, 也就是日常我们说怎么写可维护可扩展的软件. 第三章说的是引入状态之后编程会变得复杂, 就有了函数式和面向对象两种互相矛盾的思想. 面向对象是把状态拆散, 函数式风格是不分状态而靠函数组合模块化(横切纵切), 他们各有合适的场景, 比如量子物理模拟用面向对象就没有意义, 书里的逻辑电路模拟用函数式风格就特别难写.

    * 第四章先讲了怎么用 LISP 实现 LISP 解释器, 这样对 LISP 的实现就有了一半的理解. 后面套用 LISP 解释器的套路, 可以把 LISP 改造成风格不同的 LISP, 也可以改造成其他语言, 可以解决风格迥然不同的实际问题(既然没有最好的语言, 只有最适合的语言, 那么最好的语言就是可以变成最适合语言的语言).

    * 第四章借用了很多 LISP 原语, 所以只有一半理解, 第五章从头实现一个假想的电脑: 固定逻辑计算机, 寄存器, 汇编语言, 重新实现解释器, GC, 最后再重新给这套假想的电脑实现一个到假想汇编的编译器 (最后一个作业是用 C 重写一遍…).
    levelworm
        26
    levelworm  
       2021-02-03 13:07:11 +08:00 via Android
    @namelosw 其实我一直好奇直接看第四章第五章行不行。当然事先把基本语法过一遍。
    no1xsyzy
        27
    no1xsyzy  
       2021-02-03 13:53:58 +08:00   ❤️ 1
    @levelworm 如果有软件工程的底子应当是没问题的,但不确定是否有部分前面直接疏通过去了
    Kirsk
        28
    Kirsk  
       2021-02-03 13:54:03 +08:00 via Android
    这本书我都搞不懂好在什么地方 只看了目录就不想看了 大概太菜
    namelosw
        29
    namelosw  
       2021-02-03 15:05:09 +08:00   ❤️ 1
    @levelworm 我觉得能看懂代码就完全没问题. 这本书前面都在讲上层建筑, 后面讲基础设施, 走的两个方向, 关系的确不大.
    hurryning
        30
    hurryning  
       2021-02-03 15:12:38 +08:00
    干就完了
    asanelder
        31
    asanelder  
    OP
       2021-02-03 15:44:27 +08:00
    @546L5LiK6ZOt #18 俺就是好奇这书到底有没有说的那么神
    @zwpaper #20 soga!
    @levelworm #21 不纠结
    @xpresslink #24 打算就是 scheme 原汁原味
    @namelosw #25 铁子给的建议好啊, 大大减轻了俺的抵触心理. 书就应该这么看! 俺现在越来越期待了

    有一个问题, 现在函数式语言可不可以用 Scala?
    namelosw
        32
    namelosw  
       2021-02-03 18:55:36 +08:00
    @asanelder 这本书很多内容用 Scala 很难写, 因为 Scala 是静态类型语言. 宏也没有 LISP 那么简单好用.
    日常用 Scala 函数式风格肯定是没问题, 毕竟向 Haskell 对齐的语言.
    levelworm
        33
    levelworm  
       2021-02-04 02:21:59 +08:00 via Android
    @namelosw 多谢那我之后试试看过了第一章然后直奔第四章。Python 的那个倒是挺好懂的。我觉得我还是不习惯 scheme 比如说没有循环,所以得重练下第一章某些习题。
    asanelder
        34
    asanelder  
    OP
       2021-02-04 09:28:30 +08:00
    @namelosw #32 ok
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3254 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 14:00 · PVG 22:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.