00 - preface

preface

This is the start of the accelerated C++ tutorial. It is aimed at people who already know multiple programming principles (best suited for people who have experience with other C-family languages, especially Java and C#) and would like to learn another language without the need to go through all the boring stuff while at the same time not being afraid they accidentally skipped something important.

Because the tutorial is laid out per feature rather than step-by-step (which is more suited for beginners) it is easier to search around and may also be a good refresher if you are coming back to C++ after a longer break or never really focused on learning C++ itself and suddenly heard of a specific language feature for the first time.

You should already be familiar with:

  • how programs work in general (command line, working directory, return code and related concepts)

  • what is an IDE and what it does for you

  • difference between source code and machine code

  • core concepts behind programming language constructs (loops, user-defined types, functions, etc.)

  • some advanced programming language features (polymorphism, exceptions, reflection, etc.)

The core idea behind this tutorial is not to explain why/what common features do in C++ (you should already understand them) but how they are used and what is C++-specific. Good examples of such things are for-each loops and lambda expressions - while most languages have them each has a different syntax and slightly different semantics.

The tutorial will also point out many common mistakes that people coming from other languages may commit. There are absolutely lots of commonly encountered mental shortcuts or "rules of thumb" that simply do not apply to C++ or are often misexplained. A lot of mistakes can be classified as "writing C in C++", that is, not using the full power of the language and doing more error-prone manual work that can already be handled by C++ language features or the standard library.

TODO tooling link? How to setup environment?