73: Design Patterns: Interpreter.
The interpreter behavioral pattern allows you to solve common problems by expressing those problems in a simple language.

The interpreter behavioral pattern allows you to solve common problems by expressing those problems in a simple language.
The command behavioral pattern allows you to represent an action that you want to perform as an object that can be copied from place to place and performed at a later time if you want.
The chain of responsibility behavioral pattern allows you to setup a series of possible results that you can initiate from a single location without worrying about what code will provide the result. Usually this pattern describes a single outcome but there can be more.
Why are universities still teaching bubble sort?
The proxy structural pattern introduces another object that your code uses instead of the actual object. This might seem pointless but there are some good reasons why you might consider this.
The flyweight structural pattern allows you to represent more items in your application as class instances without using up all your computer memory.
The facade structural pattern provides a simplified way for you to interact with a more complicated set of interfaces.
The decorator structural pattern allows you to add new behavior to object instances dynamically. That means an object can change its behavior at run time. The interesting thing is that your objects do not even know they have been changed.
What is the rule of three? And related to this: What is the rule of five? And what is the rule of zero?
The composite structural pattern allows you to build elaborate objects from smaller objects and not worry about how big they get. You can treat your composite objects as if they are all the same.
The bridge structural pattern allows you to separate an interface from its implementation. Maybe you want to start out doing something one way and then change later. Or maybe you want to share an implementation. Or, if you're using C++, you can hide how you're doing something. This is a subtle pattern with a lot of potential.
The adapter structural pattern allows you to change the interface of an object. This lets you reuse code that would not normally fit into your design.
The abstract factory creational pattern allows you to organize different sets of classes that work together so they get created together. This lets you change from one group of classes to another by configuring a different abstract factory.
What is the best way for somebody to learn another programming language?
The builder creational pattern allows you to hide all the details needed to create a complicated object behind simple steps that another object will direct. This lets you change either how things get built or the steps that are used independently of each other.
The prototype creational pattern is great for creating objects that you may not know about ahead of time. If your program allows users to build complex objects from simpler components and then needs to build more of these complex objects or if your program loads plugins at runtime, then it can benefit from this design pattern.
The singleton creational pattern is simple and often used. It is actually used a bit too often so this episode will give you some caution and provide some ideas to modify this pattern when needed.
When you learn how to make use of design patterns, your software will become more flexible and easier to maintain as new features are added. This episode introduces patterns and then describes the factory pattern.
What is syntax and what does it mean for somebody learning a new programming language?
Both C++ templates and C# generics serve a similar purpose. But where C# uses constraints to enable generics, C++ instead uses the compiler to enable templates. And C++ includes the ability to create templates base on values which will enable you to do things unheard of in C#. Most C# developers do not even know what they are missing.
If you ever find yourself wanting to duplicate code with just slight changes to adapt it to use a different type, then you will appreciate C# generics. Generic programming is sometimes called template programming because it allows you to write code that will be used later to generate the actual specific code.
Errors will happen. The question is how will you deal with them? The QA Friday from 2015 Dec-11 talked about this question. This episode explains C# exceptions and how they are different from C++ exceptions.
Errors will happen. The question is how will you deal with them? The QA Friday from 2015 Dec-11 talked about this question. This episode explains C++ exceptions. C# also has exceptions. But C# is different enough to need its own episode.
What advice can I provide to help you debug your code?
Recursion is powerful and takes a bit of getting used to. It is like splitting your thoughts into multiple tasks that are all similar and waiting on the next thought to complete. I know, it sounds complicated. This episode should help you understand this topic that scares and confuses a lot of people.
Enumerations allow you to name different related options. The names can refer to a single option or you can use what you now know about bits to combine them into flags. With flags, you can have multiple enumeration options that you can work with as a single value.
You can do more with bits than just turning them on or off. This episode will show you how to shift bits left or right for either really quick multiplication or division or to maneuver them into place.
Working with individual bits does not just give you a way to pack lots of true or false values into a small space. This episode will show you how to isolate bits so you can work with them individually or in groups. This is called masking.
Are strings also a collection? And how are characters represented?
Hexadecimal gives you a better way to represent binary numbers. In one of the very early episodes, I explained how bytes are composed of eight bits. On some platforms, a byte might actually be more than eight bits. The real problem though is even eight bits are hard to read. The zeros and ones blend together. Hexadecimal allows you to work with four bits at a time and is much easier to read.