[FOM] Computer Scientists visa vie Mathematicians - "constructors"

Dennis E. Hamilton dennis.hamilton at acm.org
Wed Jan 29 14:38:35 EST 2020


A clarification and then reflection on the extensive reliance on encoding in
computer science and system engineering.

I said,

> |  let A(k, c1, c2, c3)
> |      = let B() = A(k-1, B, c1, c2)
> |          in if k < 1 then c2() + c3() else B()
> |   in let x1() = 1,
> |             x2() = -1,
> |             x3() = 0
> |         in A(10, x1, x2, x3)

[ ... ]

> The reconciliation of bindings is in the c2 and c3 that are involved when
c2()+c3() is finally evaluated in an instance of B( ) and the instances of B
those are bound to, their instances of A, etc.

The form c2() + c3() occurs in an instance of A evaluation, not B().  My
bug.  The closure of B that binds to parameters of the instance of A in
which the B occurs is passed as a parameter of the recursive invocation of A
in B's definition.  It is the unraveling of all that which makes evaluation
of A(10, x1, x2, x3) rather tricky.

Reflection
-------------

Lawrence Paulson said

> ... coding one thing in terms of another is as natural as breathing to a
computer scientist.

I trust my example with something as rudimentary as ap(sr, xr) suggests how
much encoding is prevalent in programming and application of digital
computer software.   Because one can express computational procedures at
higher levels of abstraction and rely on the computer to transform that to
something acted on by the underlying processor, the complexity and demands
of proper encoding are mainly suppressed.  Such layering makes for
practicable establishment and use of computer-based applications.  But even
something seemingly straightforward, such as distribution of encoded texts
via Internet email lists can be tripped up by lack of adherence to
encoding-agreement protocols that developers of any one of intermediary
processes could be unaware of (or that have evolved since the software was
produced).

The prospect of software defects is also well-known, as are the challenges
of maintenance and evolving of applications over time.  Program behavior can
be confounded by imperfect interpretations/representations of theoretical
entities at lower levels that baffle the unwary, including unexpected cases
involving rational approximations and, sometimes worse, such as modular
arithmetic (with easily-surpassed modulus) passed-off as representation of
integers.   The challenge of representing social and economic relationships
is one that has us look beyond mathematics and be concerned about the
politics/attitudes reflected in our electronic artifacts.

Nevertheless, interpretation/representation of mathematical structures of
one sort in more-primitive (but universal) computational structures  and
expressed in terms of the higher abstractions provides extensive power to
within denumerability, the reliability of the computer itself, and
resource-exhaustion limitations.  It is a tremendous accomplishment of
mathematically-supported engineering, including application to the
confirmation of designs of computers themselves.

We wouldn't be having these internet-mediated conversations were that not
the case.

 - Dennis




More information about the FOM mailing list