Programs as mathematical objects
From Wikipedia, the free encyclopedia
John Backus argued that if computer programming is to turn more into a science (let alone an engineering discipline) and less of an art, it first has to become a truly mathematical discipline. And in order to become a mathematical discipline, he claimed, it is important to find a way to make the space of programs a mathematical space with respect to the program-forming operations (functionals) over that space, as distinguished from the space of values and the value-forming operations over it (functions).
Informally, a mathematical space S is a set Sobj of the objects themselves and a set Sopr of operations on Sobj which map (Sobj)n into Sobj and are interrelated by algebraic laws.
The most useful laws are those that display some kind of symmetry, such as the distributive law that relates two operations OA and OB in a manner which OA, combining values formed by OB, is expressed as OB combining values formed by OA. Other, somewhat less useful, laws may display a symmetry that relates more than two operations.
The more and more useful laws present on Sopr, the "stronger" is their algebraic structure and the mathematical structure of the space S.