[FOM] Object-Oriented Formal Mathematical Languages

Dennis E. Hamilton dennis.hamilton at acm.org
Fri Apr 30 15:24:43 EDT 2004


[re-edited for the moderator - no change to content of version distributed
off-list and already responded to on-list]

I find the characterization of OOP as commonly understood in computer
science to be seriously incomplete, if it allows one to assert that

	the theoretical foundation of Object-Oriented
	Programming can be rather Foundations of Mathematics

One of the great barriers between computational systems as we know them and
mathematically-founded systems is the absence of well-definedness in OOP
(and other) systems.  It is not a fact, when writing in programming
languages (even many so-called functional ones), that one can count on

	x = y and f = g implying f(x) = g(y)

where x, y are computational "variables" and f, g are computational
"procedure" (instances) and = is some sloppy sense tolerated in
computational settings.  This can be reconciled (by explicit treatment of
state and memory), but then one has moved to the mathematical model of the
computational system, something the computational system does not itself
express in ordinary practice.

An important difference between OOP objects and mathematical (systems of)
objects is that OOP objects have states and history behaviors and so do the
OOP objects that are supplied to their methods for usage.

I find that, as much as OOP and common programming languages have notations
that are intended to masquerade as mathematical expressions, this
significant gap remains.

It might be more appropriate to think of objects in OOP as little simulated
computers, with the interactions among them more akin to what we think of as
interactive protocols, not functional application.

 - Dennis

PS: It doesn't help that even the simple computational objects are commonly
not the well-behaved mathematical ones that the OOP nomenclature suggests.
One can start with what computational systems speak of as integers when what
is at hand is a modular arithmetic with remarkably-small modulus.  (This is
not a universal failing, but it is a consistent one in the dominant OOP
languages with origins in the C Language.) - dh

 -----Original Message at
<http://www.cs.nyu.edu/pipermail/fom/2004-April/008137.html> -----
From: Victor Makarov
Sent: Thursday, April 29, 2004 07:59







More information about the FOM mailing list