
Overview and Introduction to Lisp (1986) [video] - tosh
https://www.youtube.com/watch?v=XYKRVNQ_MqE
======
mattkellyshow
A really moving and inspirational quote from the opening of SICP:

"A computational process is indeed much like a sorcerer's idea of a spirit. It
cannot be seen or touched. It is not composed of matter at all. However, it is
very real. It can perform intellectual work. It can answer questions. It can
affect the world by disbursing money at a bank or by controlling a robot arm
in a factory. The programs we use to conjure processes are like a sorcerer's
spells. They are carefully composed from symbolic expressions in arcane and
esoteric programming languages that prescribe the tasks we want our processes
to perform."

~~~
ra88it
More than anything else, that paragraph is what kept me coming back when I
first started learning to program and struggled mightily. I lugged that huge
book around in my book bag for months, trying and failing to fully grok one of
the earlier chapters, until I found a professor who was willing to help me
with it. Ultimately we (the professor and I) were able to do a one semester
independent study focusing on the material from SICP.

I used to read and re-read that paragraph. I read it aloud to my parents and
to girlfriends, trying to find somebody to share my awe.

~~~
adamc
<3

Sometimes it is hard to find others who share an appreciation of the beauty of
mathemtics or computing. People look at me funny when I say programming is
every bit as much an art as writing a poem. Almost any human activity can be
an art.

~~~
lisper
> writing a poem

On that analogy, Lisp is like French. Other languages are like German.

(And before you downvote me please note: I am a native German speaker.)

~~~
mooss
That's funny because I am a native French speaker and I find German to be a
very pleasing language to speak out loud. The sonorities are oddly satisfying
to me.

Please note that I am nowhere near fluent in German. It just feels great,
especially the way words can agglutinate to form comically long words, while
still transporting meaning.

~~~
lisper
I don't dispute any of that. But French is still a better language for writing
poetry (IMHO).

~~~
mooss
I see. I kinda mixed up poetry and beauty.

------
cup-of-tea
This series is brilliant. Why don't they teach computer science this way any
more? I was so disappointed to learn that MIT switched from Scheme to Python
in Programming 101.

~~~
yorwba
Theoretically, all the same concepts could be taught in Python as well, but I
doubt they are doing that. Many of the more mind-bending things that are made
relatively easy in Scheme due to the uniform syntax and small core actually
become much more complex to do for Python (e.g. writing a self-interpreter).

~~~
bitwize
The reason why is because in the 80s it was useful to build up programs from
scratch. So you could build an introductory course around that and even use an
arcane language like Scheme, which the students are bound to almost never
encounter in real-world usage, to illustrate the principles. These days, to
teach someone real-world software development, you have to show them how to
find and use a library that does what they want, or maintain an already-
existing code base -- use cases for which Python is a much better fit.
Building a program up from scratch is almost never done.

~~~
hjek
> an arcane language like Scheme, which the students are bound to almost never
> encounter in real-world usage

Posted on a site running on MzScheme.

~~~
vram22
>> an arcane language like Scheme, which the students are bound to almost
never encounter in real-world usage

>Posted on a site running on MzScheme.

Posted on a site running MzScheme, that probably tens, if not hundreds of
thousands of people, read often, get useful info from, that is of help to them
in the real world, and that many people get jobs from.

------
peonicles
The entire series of 20 lectures (uploaded by MIT) is available here:
[https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PLE18841CAB...](https://www.youtube.com/watch?v=2Op3QLzMgSY&list=PLE18841CABEA24090)

------
tosh
I love the direct start on why "Computer Science" and "Geometry" are not ideal
at conveying what they stand for.

~~~
cup-of-tea
I love that too. It's a wonderful teaching style where you get another piece
of information for free along with the primary lesson. It makes it stick so
much better too because you have more connections in your brain. It's similar
to how I succesfully learnt French grammar which was to learn English grammar
at the same time. I came out with twice the knowledge and something which is
much more than the sum of its parts.

------
Divver
My First CS class at Berkeley (CS61A) was the last semester (Fall 2010, my
first semester of college) where it was taught it in Scheme.

After that they apparently switched the class to python.

My professor was Brian Harvey whose doctoral advisor at MIT was one of the
authors of the SICP book we used for the class.

It was a good book. One of the few CS textbooks I actually read. Many CS books
are pretty badly written imo.

But there are a few that I consider very well written. This book was one of
them.

~~~
Divver
As a side note,

Scheme and parenthesis hell when writing code on the midterms....

Also car caar cdr cddr etc etc (you can theoretically nest as deeply as
needed)

hahaha that class...

~~~
krylon
> Scheme and parenthesis hell when writing code on the midterms....

Writing code on paper sucks in many (all?) languages. At least the ones I have
tried. Python might actually have an advantage on that front, Haskell, too.

~~~
Divver
Yeah I agree with you.

But scheme especially when you have code like this:

(letrec ((even? (lambda (n) (if (zero? n) #t (odd? (- n 1))))) (odd? (lambda
(n) (if (zero? n) #f (even? (- n 1)))))) (even? 88))

The level of nesting can get rediculous.

Writing that on a midterm is harder than Python or java.

I’d say Python is nicest when writing out code.

------
qwerty456127
For a person who loves Scala, Haskell and Python and have heard a lot about
LISP (and even uses a DIY LISP notation to serialize some stuff in some
projects) yet didnt't have time to actually study LISP yet... In what parts
can LISP or Scheme be better than Haskell as a programming language from the
practical point of view? I.e. why should I choose to code a program in LISP
rather than in Haskell or some other functional language?

~~~
sifoo
Lisp trades some of the strictness and static typing of Haskell and Scala, and
the convenience of Python I guess; for more raw power. You won't really have a
clue what macros are capable of before you see it yourself, I wholeheartedly
recommend using Let Over Lambda
([https://letoverlambda.com](https://letoverlambda.com)) as a guide. The other
side of the coin is that you'll spend the rest of your days waiting for
mainstream languages to catch up, but that's true of Haskell as well to some
extent.

~~~
macintux
Thanks for the pointer, just ordered a copy.

~~~
aidenn0
Note that _let over lambda_ is ... let's say controversial among lispers. I
think it is very good at teaching how to write macros, but very bad at
teaching what macros one ought to write. It's a bit like that bit about making
ruby accept bare words in Wat[1]. The fact that lisp lets you do the things
that LoL presents is fine, learning how to do this is good. If you actually do
this in production code, that's bad.

1:
[https://www.destroyallsoftware.com/talks/wat](https://www.destroyallsoftware.com/talks/wat)
(45 seconds in)

------
Legogris
Another fun introduction to Lisp:
[http://landoflisp.com/](http://landoflisp.com/)

------
smoyer
A great video from a great course ... not much has changed since it was
recorded in 1986. (yikes - how I remember the hair-dos from those days)

------
qilo
This is from MIT OCW course _Structure and Interpretation of Computer
Programs_ [1]

[1] [https://ocw.mit.edu/courses/electrical-engineering-and-
compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-001-structure-and-interpretation-of-computer-programs-
spring-2005/video-lectures/)

------
leoc
Is there anyone out there who might be able to persuade Gerry Sussman to do a
HN AMA? That would be great.

------
tromp
At 1:05:20 one can see a bug where (average 1.5 (/ 2 1.5)) evaluates to 1.3333
rather than 1.4166

Nitpicking aside, I would have loved to have this sorcerer among my CS
professors!

~~~
junke
Note that in the very next slide, the value 1.41667 is actually there, as the
next tried value.

    
    
        (defun average (x y)
          (/ (+ x y) 2))
    
        (defun iterate (start)
          (loop repeat 3
                for val = start then (average val (/ 2 val))
                collect (list val (float val))))
    
        (iterate 4/3)
        ((4/3 1.3333334) (17/12 1.4166666) (577/408 1.4142157))
        
        (iterate 3/2)
        ((3/2 1.5) (17/12 1.4166666) (577/408 1.4142157))
    

Not sure if this is really a software bug, maybe a slide preparation bug.

------
simdiab
How did they display the lecture slides on the in-classroom television in
those days?

~~~
pjmlp
Most likely using overhead projectors.

It was quite some "fun" doing the printouts, and playing around to get them to
display properly.

~~~
vram22
Good question and answer.

>It was quite some "fun" doing the printouts, and playing around to get them
to display properly.

Ha ha, good one. I never had to do it (or had the privilege of doing it,
depending on one's point of view), but saw it being done some (as a junior),
for internal or client presentations at companies where I worked earlier.
Another name for it was "transparencies", IIRC. Ugh. Fiddly stuff. Something
like the difference between writing articles or books on paper (or typewriter)
versus using a wordprocessor or text editor, with all the attendant slowness
and rework in the former cases.

------
ilovegrimson69
Note the statement about geometry teachers disliking inductive definitions at
01:03:02
[https://www.youtube.com/watch?v=XYKRVNQ_MqE&t=1h3m5s](https://www.youtube.com/watch?v=XYKRVNQ_MqE&t=1h3m5s)

And then the same comment by another MIT professor 22 years later at 00:45:12
[https://www.youtube.com/watch?v=SXR9CDof7qw&t=45m12s](https://www.youtube.com/watch?v=SXR9CDof7qw&t=45m12s)

