In this episode, I talk with Shriram Krishnamurthi. We cover his introduction to functional programming, Racket and #lang, Static vs Dynamic Typing, Bootstrap and Pyret, How to Design Programs, and much, much, more.
Our Guest, Shriram Krishnamurthi
ShriramKMurthi on Twitter
shriram on Github
cs.brown.edu/~sk/ Shriram’s University of Brown Page
parentheticallyspeaking.org Shriram’s Blog/Essays
blog.brownplt.org Brown PLT Blog
Announcements
Strange Loop 2022 is taking place September 23rd and 24th in St. Louis, Missouri. Visit thestrangeloop.com to keep up to date and to register.
RacketCon is back in person for its 12th year. Hosted at Brown University in Providence, Rhode Island, RacketCon will be October 28th-30th. Visit https://con.racket-lang.org/ for more information.
Some of you have asked how you can support Functional Geekery, in that vein, Functional Geekery now has a Patreon Page.
If that is one of the ways you would like to show your support, you can find out more at https://www.patreon.com/fngeekery.
Topics [@1:31]
Welcome Shriram
Brown University
PLT Scheme Family
How To Design Program
Bootstrap
Pyret
How Shriram got into programming
MIT
Structure and Interpretation of Computer Programs
“From then, it was just like unicorns, and I’ve been in the future ever since.”
Dan Friedman story
Rice University
Matthias Felleisen
Matthew Flatt
Robby Findler
Why Shriram didn’t work with Matthias in Grad School
Bob Harper
Practical Foundations of Programming Languages
Daniel Jackson
Alloy
Moshe Vardi
Dynamic vs. Static Typing and Shriram’s view on Types
Pyret as an optional typing experience
Haskell
Perspectives from a Programmer versus a Verification Person at heart
TeJaS: Retrofitting Type Systems for JavaScript
Gradual Soundness: Lessons from Static Python
“We do not fully understand programmer thought processes.”
“What would happen if we tried to crowd-source language design?”
“Give people the language they want.”
#lang
typed/racket
Plait language
PLAI
Retrofitting types systems onto existing dynamic languages
Rust
Pyret built with types in mind from the beginning
“We want you to live in a rich world of expression, not an impoverished world […] of data types you can count on one hand.”
How To Design Programs
Little Schemer
SICP as a magic trick
“It’s almost like the dual of SICP.”
“Go ahead and type. Let’s see what you can do.”
Making traceability as central as possible
Kathi Fisler
Data-Centric Introduction to Computing
Bootstrap
Emmanuel Schanzer
Trying to introduce computing to school
Using exiting teachers to teach computing in existing disciplines
Teaching students by them creating a video game as a way to teach math
Kathi Fisler’s presentation at LambdaDays 2021
All of Bootstrap’s programming is purely functional
Pyret as a no-research language
Focus on the user experience
“There are teachers that have built up a pedagogy around the use of error messages.”
“I’m left-handed, and I sometimes joke it’s [parenthetical syntaxes] the same sort of thing.”
Building as a language that runs in the browser for zero hassle
WeScheme
Tool and Language Building’s relation to Racket
“If you were deeply conservative, you wouldn’t be using Racket.”
Scribble
LaTeX
“These are the same people who, if their programming language didn’t give them separate compilation, they would just be up in arms.”
Mystery Languages
The Curse of Lisp
The Bipolar Lisp Programmer
“We have lost track of this very foundational fact, that programming is a kind of super-power. It’s the ability to make worlds and to sort-of bend things to our will, that is almost scary.”
Roman Numbers #lang
Racket is a language as a service
FrTime
Translated FrTime to JavaScript, resulting in Flapjax
“Everything is a language.”
RacketCon 2022
Making a pitch for “our ignorance.”
As always, a giant Thank You goes to David Belcher for the logo design.