Ramsey - Radical Computer Science #6
“When we’re building programming tools, we’re building human experiences.”



Mariko Kosaka - How to Be a Compiler

  • Eventually became Processing

Mariko’s “SVG by Numbers” - https://kosamari.github.io/sbn/

Logo Interpreter - http://calormen.com/jslogo/
  • Mindstorms, by Seymour Papert. Seminal text on teaching computer programming to kids.

Baku’s compiler - https://github.com/baku89/ramsey-mal

rl.on
  • “read line” - have a lot of conveniences built in for people using terminal

A lot of languages don’t have a REPL: C++
  • more dynamic languages have REPLs, more static langs don’t

“We’re imbuing meaning on what the user has done.”
  • “That decision happens in the ‘read’ phase.”

This class: parse symbols and lists, and evaluation.

“The roommate getting a bagel” metaphor
  • If Bryan’s going to the deli and asks if you want a bagel and you say ‘yeah’…
  • Bryan gets to the deli but there’s three kinds of bagels…
  • So Bryan comes home and sets your house on fire.

Building parsers is the same thing^^^^

Error messages are man-made.

The “silent error”:
  • Bryan comes home. “Where’s my bagel?”, you say. “You are already have your bagel.” or “You hate bagels.”, says Bryan.

Adding the ability to read strings to your parser.

Important Javascript(?) syntax: