The Little Schemer and The Seasoned Schemer are both beginner books using Scheme. The Reasoned Schemer uses Scheme + Minikanren, an extension of Scheme that allows for logical/relational programming (look up Prolog and Datalog as languages in the same vein). The Little Typer is the linked book covering type systems and, specifically, dependent typing. The Little Learner covers machine learning. The Little Prover uses the same format and has you develop proofs.
Little, Seasoned, and Reasoned are, IMO, the better books in the series to start with. I found the later ones to be good but very dense and not always as clear, had to step back a lot more and reread sections. That's mostly due to the material being much harder and more technical than the earlier books, not a quality issue with the writing itself.
My recommend reading order for someone with no Racket, Scheme, or Lisp experience wanting to tackle the series would be: Little -> Seasoned -> [Optional: Reasoned] -> {Any order: Prover, Typer, Learner}. I think Prover may be better before Typer, but it's been a while since I looked at either, so a soft recommendation of Prover -> Typer.
If you have some Racket, Scheme, or Lisp experience, I'd suggest to either skim the first couple books to get used to the format or skip them entirely and use Reasoned as your first book in the series.
The Little Schemer is one of my top two favorite programming books. But it's not something I'd recommend as a way to learn how to do the programmer job. It's fun and useful in the way that dropping acid is fun and useful, at least from what I've been told as a teetotaler who's never tried anything stronger than Tylenol. When I read that book, it has a long-lasting aftereffect on how I approach problem solving and maybe the world in general.
I have non-data-driven (but informed) opinions on how to pick up coding as a new skill. I think it helps to find a hobby space you're interested in that will motivate you to push through when you get stuck on something. There are some great platforms for live-tinkering with electronics, CircuitPython for example. Or web stuff, if there's a way to get into it in 2024 without being overwhelmed by frameworks and complexity.
Friedman's books are all great. All of them. But they don't work for everybody.
If you can be relaxed and think of the interaction as play, they're very good. If you're feeling more of a "serious business" mindset, it can be hard to get in the groove of his style.
There are a lot of jokes about food and encouragement to take breaks. If you can get into the learning as play mindset, I'd strongly encourage taking the recommended breaks. maybe grab a snack, but spend some time noodling around with the ideas in each section. I think that's the real point, food is a good excuse to pause and get your hands off the keyboard.
Racket should be easy to install. Big download button for a ton of platforms here - https://racket-lang.org
I believe HN still runs on the racket runtime. it may appear to be a toy, but thoughtful design can take you a long long way. it's well supported and a great way to get started.
The other classic is the wizard book - https://sarabander.github.io/sicp/html/index.xhtml the structure and interpretation of computer programs. This'll walk you up to and somewhat through compilation.
There are a ton of programming languages all with amazing assortments of features.
Scheme is much more "there's nothing left to take away". I think it's very much the undisputed champion in that regard. While still being able to ship software. Scheme may not be the optimal choice for all people in all situations (obviously). It's a spectacular place to start though. It may not turn out to be the language for you. That's totally fine! But it'll get you deep enough to figure out what you like and don't like. And, when it comes down to it, you can shape it into pretty much anything.
ProllyInfamous|1 year ago
Inially wasn't sure if your comment was "a joke," but thanks for the real introduction:
amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992/ [link to book]
Jtsummers|1 year ago
The Little Schemer and The Seasoned Schemer are both beginner books using Scheme. The Reasoned Schemer uses Scheme + Minikanren, an extension of Scheme that allows for logical/relational programming (look up Prolog and Datalog as languages in the same vein). The Little Typer is the linked book covering type systems and, specifically, dependent typing. The Little Learner covers machine learning. The Little Prover uses the same format and has you develop proofs.
Little, Seasoned, and Reasoned are, IMO, the better books in the series to start with. I found the later ones to be good but very dense and not always as clear, had to step back a lot more and reread sections. That's mostly due to the material being much harder and more technical than the earlier books, not a quality issue with the writing itself.
My recommend reading order for someone with no Racket, Scheme, or Lisp experience wanting to tackle the series would be: Little -> Seasoned -> [Optional: Reasoned] -> {Any order: Prover, Typer, Learner}. I think Prover may be better before Typer, but it's been a while since I looked at either, so a soft recommendation of Prover -> Typer.
If you have some Racket, Scheme, or Lisp experience, I'd suggest to either skim the first couple books to get used to the format or skip them entirely and use Reasoned as your first book in the series.
http://minikanren.org
masto|1 year ago
I have non-data-driven (but informed) opinions on how to pick up coding as a new skill. I think it helps to find a hobby space you're interested in that will motivate you to push through when you get stuck on something. There are some great platforms for live-tinkering with electronics, CircuitPython for example. Or web stuff, if there's a way to get into it in 2024 without being overwhelmed by frameworks and complexity.
jfoutz|1 year ago
If you can be relaxed and think of the interaction as play, they're very good. If you're feeling more of a "serious business" mindset, it can be hard to get in the groove of his style.
There are a lot of jokes about food and encouragement to take breaks. If you can get into the learning as play mindset, I'd strongly encourage taking the recommended breaks. maybe grab a snack, but spend some time noodling around with the ideas in each section. I think that's the real point, food is a good excuse to pause and get your hands off the keyboard.
Racket should be easy to install. Big download button for a ton of platforms here - https://racket-lang.org
I believe HN still runs on the racket runtime. it may appear to be a toy, but thoughtful design can take you a long long way. it's well supported and a great way to get started.
If Friedman doesn't work out for you, the racket docs link to how to design programs - https://htdp.org/2024-8-20/Book/index.html Which is also pretty darn good.
The other classic is the wizard book - https://sarabander.github.io/sicp/html/index.xhtml the structure and interpretation of computer programs. This'll walk you up to and somewhat through compilation.
There are a ton of programming languages all with amazing assortments of features.
Scheme is much more "there's nothing left to take away". I think it's very much the undisputed champion in that regard. While still being able to ship software. Scheme may not be the optimal choice for all people in all situations (obviously). It's a spectacular place to start though. It may not turn out to be the language for you. That's totally fine! But it'll get you deep enough to figure out what you like and don't like. And, when it comes down to it, you can shape it into pretty much anything.
Yeah, I hope you enjoy the little schemer.
gorjusborg|1 year ago