The first day, for example, will kind of force you to figure out how to parse arguments, how to loop, how to convert strings into ASCII... all basic, practical tools that you will need sooner or later anyway. Now it's your job to pick up a Rust reference, look around for the tools that you need, and use them to solve an actual problem.
That's how I got very comfortable with D.
http://jordi.inversethought.com/blog/advent-of-d/
If you do this for Rust, I'd love to see a blog post like the above.
This is not specific to this github site. I've recently read the O'reilly Programming Rust Book, not a single exercise in it, and the official The Rust Programming Language Book also doesn't have any.
Could you expand on bit on what you see as the difference between an "exercise" and the "projects" that the book includes?
- Guessing game: https://doc.rust-lang.org/stable/book/second-edition/ch02-00...
- I/O: https://doc.rust-lang.org/stable/book/second-edition/ch12-00...
- Web server: https://doc.rust-lang.org/stable/book/second-edition/ch20-00...
There's also some exercises scattered at the end of various chapters, but not with the header "exercise"
- Control flow: https://doc.rust-lang.org/stable/book/second-edition/ch03-05...
- Collections: https://doc.rust-lang.org/stable/book/second-edition/ch08-03...
Sometimes they are even inlined with the text:
> Try modifying Cacher to hold a hash map rather than a single value.
> try introducing more generic parameters to increase the flexibility of the Cacher functionality.
- https://doc.rust-lang.org/stable/book/second-edition/ch13-01...
The second list of examples you gave does seem like the right sort of thing. I'm guessing the earlier commenter overlooked those because they're listed under the header "Summary," which kind of screams "skip me."
Hm, we certainly expect that this is possible. If this is too hard, we need some tuning!
For example, it's not like somebody's going to start TRPL, see "Let's make a guessing game," stop there and successfully make a guessing game — they don't know any Rust at that point! Similarly, IIRC we're not introduced to most of the IO functionality before the IO project, and so on.
Jake lists both kinds above; it's true that the project chapters are "follow along", but there are also suggestions for doing some extra stuff on your own.
Regardless, I think your overall point is correct: tons of projects is certainly not how we've structured the book. It is a thing some people want and would find useful. We'll see in the future.
The first few chapters actually mention and explain some of those gotchas (like ownership in regards to returning from functions or accepting a reference). The difficulty probably lies in not outright explaining everything, but not making the reader feel completely lost at the same time.
Then again, questions can always be added later on and if the basic reading material is good (which it is!), it's only going to make an already good source even better. I guess that's meant to say thanks for the Rust book.
On the surface, LYAH looks a lot more polished. It has nice drawings, less typos, seems like an actual book rather than a gathering of notes and thoughts turned into teaching material. But the exercises in LCTHW are amazing. They always challenge my knowledge in a way that often makes me realize that I didn't understand anything from the prior paragraph.
In LYAH I usually tried following along in GHCI to get an intuitive idea of the functions and patterns used. Yet, whenever I sit down to just build something that, while using the same features, deviates from the example code quite a lot, I often notice glaring holes in my understanding of the topics.
And so, bottom line, I want teaching material to ask hard questions which challenge my assumptions and perceived understanding. As a beginner, I can't come up with such questions on my own. Just presenting me with already assembled programs and going through them line by line just doesn't work (for me at least).
https://codeprep.jp/books?tags=&sortBy=createdAt&keyword=Rus...
The exercise style is "fill in the blank" so it's not as rigorous for learning, but still fun to get a sense of different language concepts.
In order for me to learn anything, I need some form of "homework". If you want to teach me a new language, a new framework, I need to "get my hands dirty".
Working through exercises makes sure I actually understand what I am reading, and sometimes it even shows me I don't understand what I thought I did.