Computer Programming and Thomistic Theories of the Mind

In Thomistic thought, the human mind begins to shape itself in response to the immediate environment of that human being. Various perceptual, mental, emotional, and social skills are built to work with that immediate environment. That human being may enter other environments to which he can respond, enriching his mind and even other components of his body. After all, many of our skills are in our fingers and our legs and not ‘just’ in our brains or minds. You can think of Vladamir Horowitz or Fred Astaire but you can also watch the typing skills and response times to screen events of many skilled programmers.

If all goes well, that developing human being may become aware of the universe, or the Aristotelian Cosmos if he was born in prior centuries. If all goes still better, he may become aware of that universe as a world, a moral narrative ordered to the purposes of God. As that shaping process matures, his mind becomes an encapsulation of that totality but still mostly functions in his specific environments.

What does this have to do with programming computers? A lot to this quite amateur programmer because I work best with computers when I’m able to play around at bottom levels, building up specific skills and tools before I move to a top-down design of one of my small and simple projects.

The experienced programmer can probably see where I’m headed — towards exploratory programming using a language with ‘functional’ aspects but more general capabilities. My favorite such language is Common Lisp though I also do some programming in Emacs Lisp, the extension language to Emacs, which is my editor and calendar/diary/planning tool and much more. I’ve also programmed in Perl and other languages, beginning with card-punched fortran back in the mid-1970s and going through BASIC, PL/I, APL, and SAS matrix language, before I hit GNU-Linux and found a variety of ‘dynamic’ languages. At that point, programming became a sometimes fun diversion.

Recently, when I got the hang of exploratory programming, I was just working on a simple check-balancer. I had decided it would take more time to learn how to use a modern financial software package than it would to write the simple pieces I need and expand gradually as new needs arise. And those bloatware packages would force me to do things differently than I want to do them. Using this project as a learning experience and a form of mental play, I took my time in the early stages of that check-balancer project and found that the lisp experts were right. I’d soon enough written a lot of little functions to read my personal data files and to retrieve specific values on one or more records, to manipulate dates for easy comparison, to test if a record was a deposit or balance, etc. At some point, I moved to the top and found the balance functions and functions for reporting on important information were easy to write. And they had a different feel to them than earlier versions I’d written in a standard imperative style — in both Perl and Common Lisp. They were cleaner though undoubtedly not ‘lispy’ enough for a professional.

This was a toy program by the standards of real programmers, though I might expand it into a class-oriented program that handles a broader variety of financial information, but it’s been a fun learning experience, especially since it seems to confirm my biases about the best way to develop complex mental structures, a mind or a computer software system. They aren’t the same, not even the same sort of entity, but they’re similar in certain interesting ways. Yet again, the experience probably has enriched my mind and what I learned has probably changed the way I think in general.

Build tools and skills from the ground up and then you’ll be ready to build the more grandiose structures, whether it’s a computer system, such as a financial analysis system, or an important component of the mind, such as what I call a worldview, a specific and disciplined philosophical and theological system which attempts, within mortal limits, to provide a way of seeing a world, that is, of seeing the universe as a morally well-ordered narrative, ordered to God’s purposes. A worldview in that sense would be more than a component of the mind, it would essentially be the mind.

Serious software systems and serious systems of thought aren’t toys. Though sometimes fun to work on and usually fun to finish, they require hard thought, creativity, and disciplined effort if they are to be worth much. If those requirements are met, even a failed effort can be worth much, leading to better results in the future, at least to the persistant programmer or philosopher.

Certainly, this movement between bottom-up construction of tools and skills and the top-down schematizing isn’t just for intellectual fields. My father was a highly skilled mold-maker. When he was given a design and specs for a new mold, he would first study that paperwork and then he would start constructing jigs and other specialized tools. He would build up to the point where he could re-examine the design and specs and make his plans for the actual machining of the very expensive block of mold-quality steel.

The Thomistic view of how the human mind develops corresponds quite well to the working methods of skilled computer programmers, though not necessarily to the working methods of those poor souls who sit in warehouses blindly coding towards a goal they may not understand and aren’t allowed to explore. They may not even know in a general sense what that goal is. That Thomistic view of the mind also corresponds well to the working methods of a skilled machinist, but not necessarily to those of a worker feeding stock into a computer-controlled milling machine. Nor does it correspond to the increasing number of engineers who ‘understand’ top-down without having any machining skills or the most rudimentary of electrical installation skills. (In recent years, MIT has had remedial courses to teach their electrical and electronic engineering students the basics of wiring simple outlets and switches.)

Explore from the bottom, from the details, building up mental skills and metalworking skills or animal husbandry skills, and then start to organize from the top, speculating on a worldview or a way to write programs that write programs or a way to machine a complex machine or a way to organize a self-sustaining chicken farm that treats the chickens as living creatures. Then you can return to the bottom to improve your skills and tools once you know better what is needed. Really, you should return to the bottom and then go back to the top repeatedly as part of a dynamic way of dealing with dynamic environments and with a dynamic universe.