C++ Logo


Advanced search

Re: [SG20] I've been asked to write a book

From: Yehezkel Bernat <yehezkelshb_at_[hidden]>
Date: Sat, 23 Nov 2019 21:41:16 +0200
I agree with the comments about the too wide topics that probably are
better to not be covered in a single book.

I also want to point to C++ Premier (5th edition) by Lippman as a very good
book IMHO. It doesn't assume any background in C++, C or programming, and
it teaches modern C++ (C++11) in a very natural way. Upgrading later to
C++14/17 should be easier task. (C++20 - will see...). This book may help
to cover "learning programming" and "learning C++" targets, and then you
have to fill only the "learning game development" point.

Another point I'd like to comment about:

> start with the CPU and work upwards: registers and the program counter,
objects, functions and function templates, classes and class templates,
modules and libraries

I'm sorry, but from my experience in teaching (which is probably inferior
to yours), this seems to be the wrong approach, especially with beginners.
It may work with more experienced audience, but even there I'd be more
skeptic about such an approach.
Anyway, if you think this is a good idea, maybe you want to give a look at
nand2tetris project to see their approach for giving students a perspective
on how things work from the lowest level building up until reaching a
high-level language.

For sg20 minutes, I'm not sure if there is one place were they are all
found (I'm not sure if they all even presented as papers in mailing). I
guess the only way is to search the archives here for "telecon minutes".

Last but not least, I'd like to mention the relevant sg20 papers:
P1389 - Standing Document for SG20: Guidelines for Teaching C++ to Beginners
P1725 - Modular Topic Design


On Sat, Nov 23, 2019 at 8:47 PM chuck.allison via SG20 <
sg20_at_[hidden]> wrote:

> On my shelf is a book entitled Mathematics For Game Programming. It's
> good, laden with examples in context for its field. It assumes, however,
> that people already know programming and the rudiments of game programming,
> and that they already have a background in traditional mathematics.
> I can see a book entitled Modern C++ For Game Programming being
> successful. Were I to author it, I would assume readers had a background in
> at least C++98, and some familiarity with game programming. I would caution
> against trying to introduce C++, especially with only a Python background.
> We have found at my university that after using Python for CS1 and CS2, we
> need an entire course introducing students to C++ because the memory model
> is so different. Value semantics are difficult to grasp for such students.
> I suggest a narrow focus. Otherwise, "insane" may be an apt descriptor.
> There is a lot of C++20 that isn't needed in game programming, right?
> Chuck Allison
> Sent from my Samsung Galaxy smartphone.
> -------- Original message --------
> From: Balog Pal via SG20 <sg20_at_[hidden]>
> Date: 11/23/19 8:52 AM (GMT-07:00)
> To: sg20_at_[hidden]
> Cc: Balog Pal <pasa_at_[hidden]>
> Subject: Re: [SG20] I've been asked to write a book
> On 11/23/2019 3:45 PM, Guy Cpp via SG20 wrote:
> The professors on the board have all bemoaned the lack of targeted C++
> texts that they can point their students to, both undergraduate and
> post-graduate, and are keen for me to write The Book on learning C++ from a
> game-developer viewpoint.
> Don't wanna rain on your parade, but this doesn't sound too promising. IME
> - learning programming
> - learning C++
> - learning game development
> are very distinct things. And better not be mixed. Maybe the first two to
> some level, tut that's it. Especially these days.
> It's not very rare that on forums I visit someone pops up with a question
> like 'I want to write games, I'm a complete noob, how should I start." And
> after we skip the gut reaction of "just forget about it and get an actual
> life", the suggestions are like grab a Raspberry Pi and hack something, or
> get Unity, get a ton of samples, try to do some modifications, do that for
> a long time until ... Then many years later if the guy is still around
> and interested he may learn C++ and maybe join a shop that uses it for
> games too.
> Having said that, you writing *a* book can still be a good idea. I just
> suggest to be very very careful on what scope you grab and what target
> audience you expect. Lately I see we have serious shortage on good books
> related to modern C++, also with its application to particular problems.
> Lately I tried to lobby for tutorials on the upcoming major C++20
> features. With not much success, authors of them agree that it would be
> great to have, but don't see the resources to make that happen -- maybe you
> could make a detour in that direction. What would serve a way larger
> community than game developers.
> And if you really want to stay tied to games, I'd probably go with
> audience already familiar with C++?? (whatever version you believe is
> mostly used), and write on how to use C++ better in some common challenges,
> how to modernize, pick up the new stuff, etc.
> I really enjoy writing prose, examples of which you can see on my blog
> <http://hatcat.com>, and I am keen to pursue this commission. I have
> plans and ideas, but of course the committee has a study group devoted to
> education, and it would be foolish of me not to canvas opinions, advice and
> even assistance from SG20.
> Currently, my approach is to develop a table of contents, pitch to
> publishers, and write some prose. It's with the first part that I would
> most appreciate assistance.
> Here are some considerations.
> - The approach I would to take is to teach by abstraction; start with the
> CPU and work upwards: registers and the program counter, objects, functions
> and function templates, classes and class templates, modules and libraries.
> While developing this framework I can introduce the remaining topics as
> tools for supporting these abstractions.
> - C++20 is a big update and a good place to drop anchor. However, there is
> scope for future editions as the standard continues to mature.
> - Without standard graphics and audio I'm going to have to come up with a
> suitable sandbox for reader experimentation; the console is not really fit
> for purpose in this context. The graphics proposal has a web assembly
> implementation, so I may be able to use a browser-based environment.
> - I will need plenty of exercises for the reader.
> - Game devs are extremely performance conscious. Exceptions and RTTI are
> not things that we use in game code, although possibly in the tools that we
> use to make our games. There is an informal dialect of C++ that game devs
> (and indeed most of the SG14 constituency) use.
> - The standard library has an unfair reputation in this constituency. I
> will treat it as an equal citizen, while also discussing profiling and
> highlighting the 80/20 rule.
> - I'm not convinced that I can treat this as an introduction to
> programming as well as C++. I may have to assume that the reader is already
> familiar with Python or something similar. However, having visited many
> code clubs and so on, it does seem that the biggest motivation among school
> age folk for learning to program is to write games.
> This does feel like an utterly insane thing to do on top of my day job and
> existing committee projects. However, it's a book that needs to be written,
> a book that I wanted to have when I was learning C++, and a book that I am
> able to write.
> I would welcome any input, and also minutes of SG20 meetings so that I can
> get up to speed with discussion and become more involved in this study
> group.
> Best regards,
> Guy
> --
> SG20 mailing list
> SG20_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/sg20

Received on 2019-11-23 13:43:55