Draft of a potential tutorial/help document


#1

I started writing this a few days ago after a few people mentioned some potential interest in C++11 topics being covered.

Rather than writing the whole thing, I thought I’d write a few topics and then get some feedback to see what people think (which is what this thread is for).

The document can be found in this github repo:

(Essentially I’m testing the water to try to decide what sort of guides would be useful.)


Notes:

If anyone answered yes to wanting a guide to the stdlib, please check out http://en.cppreference.com/w/cpp before deciding if that’s actually necessary - the documentation there is exceptional.

If anyone needs this in a different format because they don’t have anything that can read .odt files then let me know and I’ll add a new format (e.g. .docx/.md).

I don’t know whether to refer to this as a document, project, tutorial or some other term, so I’ll settle with calling it a ‘document’ for now.

I haven’t forgotten the PEX tutorials, I hope to address those before next week.


Feedback Request

I’d like a bit of feedback on how useful this is to decide how best to add to it, when to call it ‘finished’ and whether I’d be better doing some separate explanations/tutorials on some of the other subjects.

Questions:

  • Are the covered topics useful?
  • Which topics did you find most useful?
  • Which topics did you find least useful?
  • Which unfinished topics do you most want finished?
  • Are there any unfinished topics that you aren’t interested in?

Pokitto is on the way, what games should I make?
#2

Even if there are plenty of material in internet of this subject, I will be reading this when finished. I am using some of the C++11 features, but the others are unclear or seem not so useful. In that respect, it would be nice also to know when and where a particuar feature is used in practise.


#3

It looks very promising.
stdlib features will be appreciated too.
There’s a lot of topics an some of them I think will have rare application on small app for Pokitto. So my suggestion is to focus on the most used/useful args for our community.


#4

In general some things are of greater use to library developers than programmers, but it helps to have an idea about things even if you don’t know them in great detail.

I think the number one thing fitting that description is templates.
Even if you don’t understand how to define templates, you need to at least know how to use them and the basics of how they work to be able to use the stdlib effectively.

I don’t cover templates in depth in this document since they predate C++11 (though the hardest item on the list is a new feature of templates), but I may consider giving an overview of them elsewhere if there’s interest in doing so.

I do cover some of the use cases, but I think there are probably only a few things that need discussion about when to use them (like scoped enums) since a number of features are self explanatory (like nullptr, static_assert and range-based for loops).

It’s hard to say at this stage which topics are more likely to be used.

Normally virtual functions and dynamic memory allocation are avoided in embdedded systems, but I suspect it’s only a matter of time before someone tries to use those, in which case some of the harder topics will be important.

I can honestly say there’s only three features on the list that I’ve never used. Admittedly there are one or two of the more advanced topics I think would be unlikely to be used (especially the most advanced topic).

Overall I think all of the ‘easy’ things and most of the ‘medium’ things are crucial, and depending on whether people are using virtual functions or dynamically allocated memory, two of the ‘hard’ topics and one of the ‘very hard’ topics could be pretty important.

Hrm, I think the stdlib deserves its own tutorial if the documentation at en.cppreference.com is not enough on its own.


#5

I have just updated the document with a few more filled in sections. The ‘easy’ sections are almost complete.


#6

I cannot open odt on my iPad. I will look at it later on PC.


#7

What formats can you open? I’ll upload an alternative.


#8

At least md is fine


#9

I’ve added a .md version.


#10

Thanks! This is excellent information. I have already learned a lot from it.


#11

@Pharap : fantastic stuff. Reading now.

You should consider a career in teaching, if you’re not doing it yet.


#12

Oddly enough I’ve been told that several times in the past few years.

I’m not sure I could put up with the marking and/or misbehaving students though. :P


#13

I wasn’t working on this yesterday because I’d been helping out an unpublished Arduino project.

I’ve just finished the easy section, but I’m starting to rethink things a little.

I suddenly realised range-based for loops require knowledge of iterators and when I started to explain them I realised they’re actually more complicated than I thought, which in turn got me thinking whether I should cut out all the hard bits and make some more in depth tutorials later on.

So I’ve decided to upload what I’ve done and stop to get some feedback before I decide what to do next.
To get some feedback I’m going to update the main post with some new questions and decide what to do next after I get a bit more feedback.


#14

@Pharap :I now know why I like the tutorial you’ve written so much. Unlike other tutorials I’ve read on these things, you actually go through the trouble of explaining why a certain language feature has evolved. And it helps to understand the concept. Most tutorials jump straight into “this is the doodad and this is how its used” and I’m left mostly wondering why should I bother with it, and go back to my old ways.


#15

Yeah, I think it’s important to understand a bit about the history of a language, particularly in C++'s case. People often forget that programming languages evolve over time.

(Likewise, understanding the history of computers helps explain how they have evolved and why they’re the way they are.)

I think there’s two reasons I like to go into the rationale behind things:

Firstly, because I often run into people who I find aren’t using certain features where they’d be useful, so I find myself trying to convince those people.

Secondly, because I still remember what it was like before I learnt to program. (Unlike a lot of people I had never written any code until I went to college.)


#16

we want the medium-part! :nerd_face::crazy_face::raised_hands:


#17

I promise I’ll get back to this soon. I’ve been sidetracked with other projects.

Thanks for letting me know there’s still interest in this though.


#18

I have recently added two more sections to this.
String Literals and Range-Based For Loops.
Hopefully I will find the motivation to write some of the others.