A Systematic Approach to Programming
We show how to systematically implement a mental representation of an algorithm. The first step is to write down how the algorithm proceeds on a set of concrete inputs and then generalize the literals in these examples. Then, the control flow graph is synthesized from the generalized examples. The final step is to determine the edge predicates of the control flow graph, which determine the execution path through the control flow graph. This method does not rely on a particular programming language. Compared to classical programming methods this approach provides a higher level of confidence that the program works as intended without requiring the full rigor of a formal proof. Additionally, semantical programming errors can be immediately spotted.
READ FULL TEXT