An open API service indexing awesome lists of open source software.

https://github.com/begriffs/mother-structures

Programming via abstract math
https://github.com/begriffs/mother-structures

Last synced: 8 months ago
JSON representation

Programming via abstract math

Awesome Lists containing this project

README

          

In 1950 the Bourbaki group of mathematicians (particularly Jean
Dieudonné) published an article called "The Architecture of Mathematics"
which introduces the motivations behind Bourbaki's multi-volume
work "The Elements of Mathematics." I'd like to conceive a similar
architecture of computing, with a primordial software library of "mother
structures" that can combine to efficiently distill any program.

At the center of our universe are found the great types
of structures, ... they might be called the mother structures ...
Beyond this first nucleus, appear the structures which might be
called multiple structures. They involve two or more of the great
mother-structures not in simple juxtaposition (which would not produce
anything new) but combined organically by one or more axioms which
set up a connection between them... Farther along we come finally to
the theories properly called particular. In these the elements of
the sets under consideration, which in the general structures have
remained entirely indeterminate, obtain a more definitely characterized
individuality.
— [The Architecture of Mathematics](http://mduchin.math.tufts.edu/UCD/111/readings/architecture.pdf)

Programming is a young field and deeply affected by its mercantile
allure. Developers create most code without concern for the fundamental
patterns and problems involved. The myopic redundancy of this code is a
vicious cycle. The new code accommodates faults of the old.

Nothing is more necessary to the culture of the higher
sciences, or of the more elevated departments of science, than
meditation; and nothing is less suited to meditation than the structure
of democratic society. ... Everyone is actively in motion: some in
quest of power, others of gain. In the midst of this universal tumult -
this incessant conflict of jarring interests - this continual stride of
men after fortune - where is that calm to be found which is necessary
for the deeper combinations of the intellect?
— Alexis de
Tocqueville, Democracy in America

In particular the requirements to cobble shoddy software are quite
meager. Most devs are ignorant, especially of math which they know as an
irrelevant highschool potpourri of numerical techniques. What we have in
math is actually a centuries-old dialog of the most widely applicable
structural rules imaginable, rules that cover our software applications
as a trivial side effect.

The truths of arithmetic govern all that is numerable. This
is the widest domain of all; for to it belongs not only the actual,
not only the intuitable, but everything thinkable. Should not the
laws of number, then, be connected very intimately with the laws of
thought?
— Gottlob Frege, Foundations of Arithmetic

I am curious how to write programs using the concepts from abstract
math. Can our programs manipulate topologies, groups, and orders
directly? How useful are algorithms expressed entirely in these terms?
Can we operate on quotient structures?

I don't want this investigation to devolve into crippling type theory
banalities or academic drivel. The concepts involved are sharp and
lively and the resulting programs should be too. I hereby promise to
never present any esoteric implementation of the factorial function.

Striving after this noble goal doesn't come cheap. Every day spent in
this investigation is a day I make myself less familiar with the latest
trends, a less attractive employee. However my thoughts of doing this
project and the urge have recurred for years.

I had only to will to go -- but to will powerfully and
wholly, not to turn and twist a will half-wounded this way and that,
with the part that would rise struggling against the part that would
keep to the earth.
— St. Augustine, Confessions