As much as we’ve abstracted and industrialized programming, under the hood it’s still math. The underlying mathematics of software drive our programming languages and our algorithms, providing tools and concepts we use to build code.
Code is complex, a knot of functions that execute in different ways at different times. We can think that it works, we can see that it works, but can we prove that it works? It’s possible to use some of the concepts at the heart of functional programming to design languages that produce code that’s mathematically provable, so we can use static analysis techniques to understand how our code will run under various starting conditions.
Having provable code is important when we want secure code. We need to be able to see where code violates type safety, where there’s a risk of unplanned halting or memory overruns. We know how code failures can affect the security of our applications, so we need to be able to prove that our code can never get into states that break our security model.
When we look at the cutting edge of computer science, we can see the intersection of math and code in experimental tools and languages that aim to implement some of these techniques. One such project is being worked on by Microsoft Research and the French national research center, Inria.