Mental Models and Parallel Program Maintenance
Once upon a time programmers were taught to write sequential programs, with the expectation that new hardware would make their programs perform faster. In the early 2000s, the authors hit a power wall; the energy output of a chip with increased processor speed has become untenable. Today, all major chip manufacturers have switched to producing computers that contain more than one CPU; parallel programming has rapidly moved from a special-purpose technique to standard practice in writing scalable programs. Taking advantage of parallel processors often entails using concurrent software, where multiple threads work simultaneously.