> I have also written this book with working programmers in mind. Many of them may have not had a formal computer science education, or at least one that included a proper introduction to programming languages. At some point, like that 90% of students, some of them become curious about the media they use. I want this book to speak to them, gently drawing them away from the hustle and bustle of daily programming into a space of reflection and thought. - Shriram Krishnamurthi, Brown University
Great course, I took it a few years ago while working full time and loved it. I recommend this right alongside SICP for the engineer who wants to dig deeper.
SICP is mainly a book about how to structure systems. It also tells you how languages work, but in far less detail.
PLAI (this book) teaches you how languages work. It also tells you a bit about how to structure systems, but that is not its goal. In part that is not a goal because of the existence of books like SICP and, increasingly, DCIC [https://dcic-world.org/].
You are right. I have now binged 2/3 of PLAI. It is really nice in how it draws the landscape of programming languges and how they work. It of course also has an advantage being a newer book, programming languages and their theory have progressed quite a lot since writing of SICP.
Also it is some how pedagogically really nice, very approachable and readable.
am i the only one for which programming language textbooks, papers, blog posts, etc. in racket are really hard to follow? the fact that the languages that is being operated on often looks exactly like racket makes it really hard to separate the two if i wanted to follow the tutorials in any other language.
Sorry side track totally. as part of my degree is under a Chicago School professor, who I respect but still his work find puzzling. Can this be a counter-example … just like many others open source project. The problem of public good i.e. those unlike fish cannot be eaten. He went on to do work on trademark, copyright and patent. Well copyright is what open source rely upon he would say. But what is the incentive of doing it. Would the total output less because of this … he would ask.
The question as normal here: why not say sell it and give the money to something you like, like charity.
I'm afraid I don't really understand this question. I am interpreting it as, "Why is the author giving it away for free instead of charging money for it". If that is not what you meant to ask, sorry!
Anyway, if that is what you meant to ask: Well, I'm the author, so my answer may have some substance (-:.
I have a good job and it pays me to have impact. I can have much more impact by giving away the book to people interested in learning. [º]
[º] This is not 100% true. Over the years, people have told me they value a book more if it costs something. I am not looking to please them.
In particular, I grew up in India and we could not afford fancy (but great) Western textbooks. If there's a student like me right now (whether in India or Indiana) who wants to learn from my book but for whom its cost is an obstacle, that would make me very sad. That's why all the books I have (co-)authored have been available for free.
I’d buy a paper edition if it were available to “support the cause”.
The last programming language book I bought the author got two sales because Amazon didn’t follow the delivery notes where I specifically said don’t leave it on the porch or it will get stolen and one of my sketchy neighbors got a free copy. Almost got a third sale as well but I happened to be home and tracking the delivery driver so managed to get it off my porch before the neighbors saw it.
why not say sell it and give the money to something you like, like charity.
Per the author's website ( https://cs.brown.edu/~sk/ ), he is a dedicated educator. Maybe he explicitly or implicitly intended the publication of this work under a Creative Commons license to be an exercise of charity (in the "love your neighbor" sense), kindness, goodness, and/or generosity.
At the end of the day, somebody needs to do the work in order to create good. Adding layers of transactions can only reduce, not increase efficiency.
If you, a person who knows something, want to achieve a public good in educating others on that thing, then the most efficient way of achieving that is just spreading the knowledge yourself. If you sold your knowledge in a book, and then used the money to pay someone else to write a book teaching the same thing, and then distributed that for free, you can only have lost efficiency.
It's like asking "Why should I pay for college instead of working to make money to pay someone else to go to college and then teach that information to me": It's absurd, because it introduces entirely unnecessary transactions.
[Programming Languages: Application and Interpretation](https://www.plai.org/)
From the preface;
> I have also written this book with working programmers in mind. Many of them may have not had a formal computer science education, or at least one that included a proper introduction to programming languages. At some point, like that 90% of students, some of them become curious about the media they use. I want this book to speak to them, gently drawing them away from the hustle and bustle of daily programming into a space of reflection and thought. - Shriram Krishnamurthi, Brown University
Never heard of Pyret[0] before. Looks good. This data-centric introduction to computing is also rather interesting [1].
[0](https://www.pyret.org/) [1](https://www.dcic-world.org/)
Maintainer of the interesting language pyret.
To be accurate, Pyret is a collaboration (primarily) with Joe Politz and Ben Lerner and they deserve most of the credit for it.
Interesting in what sense? Language outline at https://www.pyret.org/docs/latest/A_Tour_of_Pyret.html
one of the best thought-out syntaxes i have seen in a programming language, for one.
Ok maybe I'm a weird type, but I got really excited when the first thing they teach you is how to write a test/assertion.
I thought you were talking about this one.
https://en.m.wikipedia.org/wiki/Esoteric_programming_languag...
lexi lambda of "Parse, Don't validate" fame has compared this favourably with SICP (https://cseducators.stackexchange.com/a/7481).
Great course, I took it a few years ago while working full time and loved it. I recommend this right alongside SICP for the engineer who wants to dig deeper.
What does SICP offer that this book does not?
SICP is mainly a book about how to structure systems. It also tells you how languages work, but in far less detail.
PLAI (this book) teaches you how languages work. It also tells you a bit about how to structure systems, but that is not its goal. In part that is not a goal because of the existence of books like SICP and, increasingly, DCIC [https://dcic-world.org/].
Oh wow. If I was an educator, this book "A Data-Centric Introduction to Computing" is what I would put in front of people first.
Everything you do in software is in service of moving and munging of data, programming paradigms are tools secondary to that.
You are right. I have now binged 2/3 of PLAI. It is really nice in how it draws the landscape of programming languges and how they work. It of course also has an advantage being a newer book, programming languages and their theory have progressed quite a lot since writing of SICP.
Also it is some how pedagogically really nice, very approachable and readable.
>How SMoL Becomes Large
30 seconds into opening the textbook and I already like it.
am i the only one for which programming language textbooks, papers, blog posts, etc. in racket are really hard to follow? the fact that the languages that is being operated on often looks exactly like racket makes it really hard to separate the two if i wanted to follow the tutorials in any other language.
I went through the previous version with Rust. It is almost entirely language agnostic. It could be in sign language.
If you look at the book, you'll see that is not what it does, and for this reason.
In case anyone has missed it, the author is in this thread and has replied to a great number of comments/questions.
https://news.ycombinator.com/user?id=skrishnamurthi
this looks invaluable for self taught prog like me. anyone who read this before can share their experience?
An incredible project. Your motivations resonate with me. Thanks for sharing.
Does anyone have suggestions with where to find more exercises? I notice the book pdf has like ~38 total, but was curious where one would find more.
See https://cs.brown.edu/courses/csci1730/2022/assignments.html
Great work.
Sorry side track totally. as part of my degree is under a Chicago School professor, who I respect but still his work find puzzling. Can this be a counter-example … just like many others open source project. The problem of public good i.e. those unlike fish cannot be eaten. He went on to do work on trademark, copyright and patent. Well copyright is what open source rely upon he would say. But what is the incentive of doing it. Would the total output less because of this … he would ask.
The question as normal here: why not say sell it and give the money to something you like, like charity.
I'm afraid I don't really understand this question. I am interpreting it as, "Why is the author giving it away for free instead of charging money for it". If that is not what you meant to ask, sorry!
Anyway, if that is what you meant to ask: Well, I'm the author, so my answer may have some substance (-:.
I have a good job and it pays me to have impact. I can have much more impact by giving away the book to people interested in learning. [º]
[º] This is not 100% true. Over the years, people have told me they value a book more if it costs something. I am not looking to please them.
In particular, I grew up in India and we could not afford fancy (but great) Western textbooks. If there's a student like me right now (whether in India or Indiana) who wants to learn from my book but for whom its cost is an obstacle, that would make me very sad. That's why all the books I have (co-)authored have been available for free.
On the first edition's site [https://cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-0...] you can see the different models by which I have made the book available. They have netted me some modest revenue. But there's always a free option.
I’d buy a paper edition if it were available to “support the cause”.
The last programming language book I bought the author got two sales because Amazon didn’t follow the delivery notes where I specifically said don’t leave it on the porch or it will get stolen and one of my sketchy neighbors got a free copy. Almost got a third sale as well but I happened to be home and tracking the delivery driver so managed to get it off my porch before the neighbors saw it.
I can't understand why anyone try to stolen a programming book...
I haven’t read any of your books yet, but I can’t overstate how much I respect your stance on pricing and impact. Thank you!
At the end of the day, somebody needs to do the work in order to create good. Adding layers of transactions can only reduce, not increase efficiency.
If you, a person who knows something, want to achieve a public good in educating others on that thing, then the most efficient way of achieving that is just spreading the knowledge yourself. If you sold your knowledge in a book, and then used the money to pay someone else to write a book teaching the same thing, and then distributed that for free, you can only have lost efficiency.
It's like asking "Why should I pay for college instead of working to make money to pay someone else to go to college and then teach that information to me": It's absurd, because it introduces entirely unnecessary transactions.
> The question as normal here: why not say sell it and give the money to something you like, like charity.
Giving away the book is a charitable donation to the entire software industry. That is giving his money away to something he likes.
That's a lovely way to put it.
Imagine if he sold the book to raise money for a charity that publishes books for free.