The Young Man And The C
Many experienced high-level language programmers do not learn C or C++ well until they suddenly need to write an FFI extension, make an emergency patch to an existing C or C++ codebase, re-implement the bottleneck component in the application stack in a fast language, take an attractive job with a low-level programming component, or otherwise move from their comfortable language of choice and swallow the Red Pill of coding closer to the machine. How do you use your existing skills in this very different environment?
If you are already a programmer, you don't need to be taught how to program, and your google-fu is strong for looking up detailed syntax. Instead, this will be a crash course in your three hardest hurdles, which are usually not taught systematically: leveraging your object-oriented design skills in a non-OOP language, managing memory manually, and handling exceptional conditions without help from the compiler. We will focus on plain C because C++ is too complex to cover well in a single talk, but much of the material will apply directly to C++. Perhaps surprisingly, some of it will even make you a better programmer in your favorite comfortable, higher-level language.