Modeling data types is a critical aspect of programming: coming up with the right data representation can mean the difference between clear, efficient code, and an unholy mess of spaghetti code with tons of forgotten edge cases.
At the same time, there’s a fundamental tension between what’s commonly known as ““the OOP approach”” and ““the FP approach””, where the former introduces a tight coupling between data and behaviors, and the latter does the exact opposite.
In this talk, we explore both by attempting to represent and interpret a (very simple) programming language using ““the OOP approach,”” observing the pain points, and seeing what different set of properties we get by fixing them. By the time we’re done, we’ll have explored a large chunk of the design space, and learned lessons on the various tradeoffs one makes by choosing one approach over the other.
Importantly, we try to stay away from oversimplifications such as FP good, OO bad. We hope to demonstrate that both approaches are interesting and valid, and choosing one should be a matter of context rather than religious belief.
Nicolas writes code for JPMorgan, where we use Scala to make some very complicated things seem very simple.
After too many years as a Java programmer and a thankfully brief stint in marketing, Nicolas discovered
Functional Programming through Scala and fell in love. Since then, he’s made it his mission to learn and explain
the scary bits, by focusing on practical applications.
Nicolas is also the author and sole maintainer of a few useful OSS libraries,
such as kantan.csv.