By Jim Pascoe
This talk gives practical advice for learning and improving skills with modern C. The talk identifies five programming ‘mindsets’ that are key to C and describes how to develop each. By blending these mindsets together (and consciously recognising when to switch), programmers can continuously improve, which ultimately leads to one form of C++ ‘mastery’.
The talk begins by examining the imperative programming mindset, which includes the design of user-defined types. The talk then focuses on the mindsets which underlie C compile time programming, functional programming (with C), concurrency and performance. The differences between the various forms of thinking are distilled and practical guidance is given for how to cultivate each. The talk concludes by highlighting that there are many other mindsets which contribute to C++ mastery, for example, debugging, testing and optimisation.
This talk is intended to highlight the fact that C (and programming in general) does not consist purely of a single mindset. Moreover, software engineering requires many different ways of thinking to be blended together to produce the best possible solutions. The aim of the talk is to identify those mindsets that are key to C and to provide practical guidance for developing each. The talk is suitable for everyone and all levels of ability.