3 ms·
It's not one "toy" language. It's a series of languages that becomes gradually larger. It has the exact same syntax and semantics as the "real" Racket. If a l
by soegaard 3y ago
It's not one "toy" language.
It's a series of languages that becomes gradually larger.
It has the exact same syntax and semantics as the "real" Racket.
If a language is small, the compiler can give very precise beginner friendly error messages. I'll call someone who has programmed one or two weeks for a beginner.
As an example, in the beginner language all function calls begins with a name, so `((foo) 42)` gives an error message, that says function calls must start with a name. Note that beginners often use too many parentheses.
Later on when first order functions are introduced, the call `(foo)` might return a function, so `((foo) 42)` is okay.
The beginner friendly "function call must start with a name" message is now no longer true.
There are four language levels used in the book - and they follow the progression in the book.
- soegaard 3y agoAn experience report "On teaching how to design programs" from Norman Ramsey. https://www.cs.tufts.edu/~nr/pubs/htdp.pdf https://www.cs.tufts.edu/~nr/pubs/htdp.pdf I am quoting section 4.1. For over fifteen years I have taught programming languages using little languages (Kamin 1990; Ramsey 2016). With this experience as background, I cannot praise the Racket teaching languages highly enough. The language design is lapidary. I was especially impressed that functions in Beginning Student Language may not have local variables. At first I thought this restriction was crazy, but after observing students at work, I see that not only is the language simplified, 7 but without local variables, students are nudged to create helper functions—a notorious point of difficulty for beginning students