Wrong name for the header files.

master
Zed A. Shaw 7 months ago
parent 0edb58d46f
commit 6a777e4c2d
  1. 2
      PPP3/README.md

@ -30,7 +30,7 @@ This is dumb as hell but it's working for now. If you have a fancy way to tell V
## Criticisms of PPP3
1. **Bad support code and future proofing.** This book is attempting to teach C++23 (the 2023 version of the standard) in a world that doesn't correctly support 2023. To make this work he has these header files `PPP3.h` and `PPP3_support.h` and other random files you're supposed to include with no explanation on how to _actually_ use them. When I try use them (they're included in this repo) they don't compile. I could spend the time to make them work, but it's actually easier to just take his code and make it work without these headers.
1. **Bad support code and future proofing.** This book is attempting to teach C++23 (the 2023 version of the standard) in a world that doesn't correctly support 2023. To make this work he has these header files `PPP.h` and `PPP_support.h` and other random files you're supposed to include with no explanation on how to _actually_ use them. When I try use them (they're included in this repo) they don't compile. I could spend the time to make them work, but it's actually easier to just take his code and make it work without these headers.
2. **Nothing actually works as written.** Not a single example given in the book actually compiles. Header files are skipped even when they'rr essential to the code's function. He just assumes you'll use `PPP.h` but that doesn't even include everything correctly, and as I said, his files don't even work without a mythical advanced compiler from the future. Also, relying on `PPP.h` means people don't learn the real includes needed to make the code work.
3. **No full sample code available.** Normally in this situation I'd go find the sample code download or see if there's a github repository of the code, but all of his links to sample code on the [his website for the book](https://www.stroustrup.com/PPP3.html) are dead and sometimes labeled "TBD".
4. **Disjointed incomplete examples.** There's all kinds of examples that feature code from one part of the system that relies on another part that either doesn't exist or isn't explained well. A good example is the calculator, where you're making a parser. In Chapter 5.6 he has code for parsing the calculator language that all use a `Token_stream` class, but only implements the `Token_stream` _after_ all the parsing code. This means that none of the parsing code he's talking about actually works until you get to the `Token_stream` later, which is backwards. Many examples are also progressively improved versions of functions but that require later code to even work.

Loading…
Cancel
Save