C++ Logo

sg20

Advanced search

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

From: Guy Cpp <guy.cpp.wg21_at_[hidden]>
Date: Sat, 23 Nov 2019 14:45:46 +0000
Hello everyone.

For those of you who don't know me, my name is Guy Davidson and I am the
Principal Coding Manager at Creative Assembly, the UK's oldest and largest
game studio. I have been there for 20+ years and my role has a significant
educational component: I help our programmers become better programmers, I
visit universities and recruit graduate interns, and I serve on advisory
boards.

Particularly, I serve on the IGGI <http://www.iggi.org.uk/>advisory board.
This is a doctoral research programme targeting research into game AI. As
part of their doctorate, students are placed in game development studios.
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.

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

Received on 2019-11-23 08:48:19