• If it compiles, it should be correct. • It should be easy to use and change. • It should run fast enough. • It should be testable.
I'm sure we could all extend this wish list indefinitely with desirable properties of code. The question is, how to do we apply this beyond small areas of local concern?
How can we deal with the complexities of common cross-cutting concerns like IO, networking, concurrency, logging, handling time, or dealing with hardware quirks? How can we write code and enable our teams to write code that really achieves zero-cost abstraction at the scale of subsystems? How do we move beyond "easy mode" code reviews recommending using algorithms over raw loops, to cultivating a sensibility for code structure that moves us closer to the above goals? What techniques are available to achieve a declarative style at scale?
These are the questions I'll address in this talk, with practical advice; case studies; and an exploration of what it means to structure code and APIs declaratively, how to do so, and what the benefits are.
View Slides
Ben has been programming in C++ for this whole millennium. He spent just over 20 years in the games industry working for companies like EA and Blizzard; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. After getting more interested in modern C++, in the teens he started giving internal company talks and then talks at various conferences, spreading ideas about types, algorithms and declarative and functional techniques.
In 2018 he left the games industry and worked in finance for a short spell, writing high-frequency trading platforms using the most modern C++ that compilers could support. Now he is a Principal Engineer at Intel where he puts monads inside your CPU.