Jeremie Pelletier wrote: > Andrei Alexandrescu Wrote: > >> Steven Schveighoffer wrote: >>> On Mon, 03 Aug 2009 18:00:59 -0400, Andrei Alexandrescu >>> <[email protected]> wrote: >>> >>>> http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ >>>> >>>> >>>> >>>> (Don't tell anyone, but I plan to rewrite it.) >>>> >>>> Andrei >>> Wow, my head's spinning :) >>> >>> That's a lot of data/concepts in one chapter. Have you considered how >>> this chapter will be for a newbie programmer? >> Like K&R, TDPL is intended for people who already know how to program in >> another language. Knowledge of a specific language is not recommended or >> required. The preface will make that clear. >> >> Some reviewers are still concerned that I discuss topics a bit too >> advanced in the first chapter. I was suggested to adapt The Case for D >> instead of this first chapter. >> >>> *disclaimer: I'm not an expert on teaching or writing books. >> Well you are an expert on reading books and that's what matters here. >> >> >> Andrei > > I agree that your preview, while being really insightful into D, is gonna > make the head of beginners explode. For example, you dive rather headfirst > into variables, using immutable and auto before even talking about variable > types. > > I for one believe the market for such a book is mostly beginner to > intermediate programmers. I only needed the language reference on the > digitalmars website to learn about the syntax and semantics of D, and reading > the code in the runtime and phobos gave more than enough examples to get > comfortable using the language.
I think it's a hard problem: how do you write a book that's accessible to beginners without alienating experienced programmers? I'm personally of the mindset that beginners should most definitely not be attempting to learn D as their first language. Languages like D, C, C++ are horribly unsuitable because they force you to understand how the machine works before you can learn to program; except that they force you to learn to program in order to understand how the machine works. I've seen too many *university students* (and we're talking second and third year students) struggling with both because they don't quite understand how the machine works and don't quite understand how C works; the two work together to sabotage their understanding. I think something like Python or even, yes, BASIC is more appropriate because it reduces the size of the problem down to "how do I correctly sequence the actions I want the computer to perform, and how do I express those actions?" I personally don't think TDPL should worry too much about absolute beginners; they'll be better served by a different type of book for a different type of language. That, and they'll take one look at templates and run screaming. I still have trouble explaining the difference between compile-time arguments and run-time arguments to experienced programmers, let alone novices!
