Facts to know before CS61A

最近開始看 CS1 入門經典 SICP,搭配 Teach Yourself CS 推薦 UC Berkeley Brian Harvey 開設的 CS61A (Spring, 2010) 課堂錄影。這裡記錄上了第一個小時踩到的坑 (! xD),以及這堂課有哪些特點、為什麼覺得自己有可能繼續上下去。

Scheme 是主要使用的語言

第一個小時,Harvey 快速介紹了 Scheme 這個語言。Scheme 是 LISP 家族的成員之一,它是一個容易學習、互動的語言,看看 Scheme 寫起來是什麼感覺:

1
2
3
4
5
6
7
8
> 3
3

> (+ 2 3)
5

> (first 'hello)
h

寫法和熟悉的語言不太一樣之外,我覺得滿好理解的 👍🏼

CS61A/SICP 使用 Scheme 做為主要使用的語言是希望大家把時間花在 “Computation” (計算) 的本質,而非語言細節,我有被說服 xD

但是,等等,等一下,那個 (,教授!) 為什麼我打 (first 'hello) 它一直跳 error 給我啦 😭

The 坑: simply speaking, 少了一些東西

長姿勢欸。首先 Scheme 有超多實作 (implemetations),schemers.org 這個網站有列出來,開始安裝 Scheme 後,我至少遇到 4 種不同的實作:

  1. CS61A 推薦 STk
  2. 最常見的 mit-scheme
  3. Replit 使用的是 BiwaScheme
  4. exercism 建議裝 Chez Scheme

裝哪個都沒關係,因為 (first 'hello) 還是跑不出來啊啊啊 (捶電腦)。後來在 Brian Harvey (及其快樂夥伴) 寫的一本書 Simply Scheme: Introducing CS 的附錄 C 找到了一個這樣的東西,上面寫到:

Many of the procedures we talk about in this book aren’t part of standard Scheme; we wrote them ourselves. Here is a listing of the definitions of those procedures.

標題是 “Scheme Initialization File”。

終於出了名為 first 的 hell 坑。(到現在,fist 還硬硬的)

最後

即使看過各種軟硬兼施 、情緒勒索 、鼓吹學習 CS 底層的說法,至今仍說不上有很大的動力,原本以為原因就像以前學線代,不覺得以後用得上的那種消極感,但今天發現了第二個原因,原來使用的語言 a.k.a. 學習路上的關注點也是一個影響點,當門檻降低一點,accessibility 也就跟著提高了。

身為還沒入 SICP 教的 Type 2 工程師,還沒什麼成果或學習心得可以分享,只好貼一篇 Harvey 寫的文章,告訴你 Why SICP matters,或是看 Denny 的翻譯 #10 為什麼「SICP」仍然重要

然後,加減說一下,學 SICP 前,真的可以多學一點英文唷,史上最棒的投資沒在誇張捏。


  1. 1.這一篇裡所有講到的 CS 都是 "Computer Science"。