Foundations: Programming and Abstractions
Alec Loudenback
Out of intense complexities intense simplicities emerge. - Winston Churchill (1923)
The next several chapters build up essential concepts that enable us to create sophisticated financial models while maintaining clarity and manageability. We’ll start with core programming building blocks - the vocabulary and grammar of communicating with computers. From there, we’ll explore different approaches to breaking down complex problems into simpler components through abstraction: functions, types, programming paradigms, and more.
Abstraction is a form of selective ignorance - focusing attention on what matters for a particular purpose while hiding irrelevant details. Just as financial statements abstract away the details of individual transactions to reveal the bigger picture, we’ll see how thoughtful abstraction in programming allows us to manage complexity by working at different levels of detail.
The goal is not to make you a computer scientist, but rather to equip you with the mental models and practical techniques needed to effectively leverage programming in your financial work. By understanding these foundations, you’ll be better equipped to design clean, maintainable models that can evolve with your needs.
Think of this section as building your modeling toolkit, one concept at a time. We’ll introduce ideas progressively, with plenty of concrete examples to ground the theory in practical application. The concepts build on each other, so take time to ensure your understanding before moving forward. Let’s begin with the fundamental elements of programming.