Google Tech Talks March, 5 2008 ABSTRACT Both by accident and by design, C++ supports a number of different styles and approaches to programming. Its evolution from C gives it obvious support for a procedural systems programming style based on C idioms, but past, present and future language support opens up a wealth of other approaches and idioms, including object-oriented programming, generic programming and some elements of functional programming. This diversity is both a strength and a weakness. It can lead to code that is crisp and well matched to its problem. But it can also lead to code that is at best considered an exercise in groundless post-modernism or, less favorably, an unmaintainable and incoherent mess. This talk examines some of the styles and approaches, including their key strengths and accidental complexities, as well as consequences of and techniques for combining them. Speaker: Kevlin Henney Kevlin Henney is an independent consultant and trainer based in Bristol, UK. Kevlin’s work focuses on software architecture, programming languages and development process. He has been a columnist for various magazines and online publications, including SearchSoftwareQuality.com, The Register, C/C++ Users Journal, C++ Report, JavaSpektrum and Java Report. With Frank Buschmann and Doug Schmidt, he is coauthor of two volumes in the Pattern-Oriented Software Architecture series: A Pattern Language for Distributed Computing and On Patterns and Pattern Languages.