Source: Asian Scientist, Jan 2016
These days, Lamport wants to impart the following message to programmers: using mathematics allows you to approach coding in the way an architect would approach designing a building—both precisely and abstractly.
“Science requires precise thinking, and mathematics is what has developed over a couple of millennia as our best way of thinking precisely,” he said.
Programmers are taught to think about problems in terms of programming languages when instead, he maintained, problems should also be thought of at a more abstract level. “Most programmers who lack [the ability to think abstractly], they just sit down and write code and it’s like somebody trying to build a table [without first thinking of] the concept of the circle. Just think, well, just cut out a piece of wood that’s sort of like this, with no idea why would cutting it out this way be better than cutting it out in a different way,” he explained.
Indeed, Lamport is adamant that programmers should think about and write down what a program is meant to do—its ‘blueprint’ or specification—before they actually start coding.
A mathematics-based programming language that Lamport designed, TLA+, is based on the idea that the best way to describe things formally is by using simple mathematics.
And you don’t even need to be a mathematician to execute his programming language, he said. “The math you need is really very simple. Most people learn almost all of it in high school these days. But what you need to be taught is how to use that math to describe the systems you’re building.”