If you have read any of my limited Bio information, you may have noticed that I am a Software Engineer. It was my first career, from which I took a hiatus for about a decade to do other things. One of those other things was becoming an ordained Anglican priest.
I was recently reminded of a somewhat whimsical paper I wrote in seminary, while working on my MDiv and preparing for the priesthood.
Our assignment was to write a letter to a fictional friend, explaining the Trinity in some creative imagery. The doctrine of the Holy Trinity is and to some extent has always been one of the more gnarley in Christianity.
Drawing on my first career of software development, my paper sought to use Object-Oriented concepts to shed light on this great mystery of faith. In a series of posts (Three would be the right number, no?), I will somewhat adapt that paper to this different forum, and to my ever-growing and evolving understanding of both the Trinity and Object-Oriented programming and design. Hopefully you will find this exercise somewhere between amusing and thought-provoking.
Dear Christian, thanks for your letter. It's always great to hear from you. It sounds like your CompSci career is really taking off, congrats on your new job! It sounds like they really value your design and coding skills.
You asked some interesting questions about the Trinity. Of course, you are wrestling with a topic that your namesake Christians have wrestled with for centuries. Here's an idea: let me make use of your OO skills and knowledge, to see if they can shed any light on the topic.
The first point to hold onto about the Trinity is that it says that God is One. Three parts but one whole. That unity, that One-ness is key; don't lose that piece.
In the Trinity, Christians are not claiming to worship three gods; we insist that there is one God, and only one. There are no others, nor can there be. There is only one such divine Being, and this one Being has created the entire universe and everything in it.
This one God, Christianity proclaims, is a particular, identifiable Being. It is not an abstract notion of divinity, but a specific entity that we can know, and know about, because if has self-revealed some things.
This immediately brings up questions about what has been revealed, how it was revealed, how we can know it, etc. But let's set them aside, they are topics for another day that will take us away from our Trinity topic.
Now, let's turn to Object-Oriented programming and design. For starters, think of the Singleton design pattern. What are some of the characteristics of a Singleton?
A Singleton is a Class with exactly one Instance.
A Singleton is global in scope, spanning the whole of the application's ecosystem.
From the perspective of our application's sub-system, this Singleton object is never created or destroyed, but always exists as this single thing. It is certainly not created by our sub-system, because programmatically the Singleton has a private constructor. The individual components of our system do not create the Singleton, but they access it through a well-defined access method.
So in our Object-Oriented software world, God is like a Singleton. God has just one single instance. There is only one God.
This one God is also global in scope. Universal even. Spanning all of time and space.
Just as a Singleton is not created by our sub-system, so God is not created by us, but has provided a well-defined interface to God. Again, this is the orthodox Christian position - individual results may vary!
Analogies are never perfect, especially for a mystery like the Trinity, and this one is no exception. For example, in OO, the Class defines the Object, meaning it gives shape to what information and actions a given object instance is bounded by. Whereas in God’s case, the Object in many ways defines the Class. Christian theology would say that there is no God-state which is not entirely defined by the God who is One.
Next time I write, we can dig into the Trinity's Three. If the Trinity says God is One, how can Object-Oriented software design analogies shed light on the flip side that says that God is Three?
I was recently reminded of a somewhat whimsical paper I wrote in seminary, while working on my MDiv and preparing for the priesthood.
Our assignment was to write a letter to a fictional friend, explaining the Trinity in some creative imagery. The doctrine of the Holy Trinity is and to some extent has always been one of the more gnarley in Christianity.
Drawing on my first career of software development, my paper sought to use Object-Oriented concepts to shed light on this great mystery of faith. In a series of posts (Three would be the right number, no?), I will somewhat adapt that paper to this different forum, and to my ever-growing and evolving understanding of both the Trinity and Object-Oriented programming and design. Hopefully you will find this exercise somewhere between amusing and thought-provoking.
Dear Christian, thanks for your letter. It's always great to hear from you. It sounds like your CompSci career is really taking off, congrats on your new job! It sounds like they really value your design and coding skills.
You asked some interesting questions about the Trinity. Of course, you are wrestling with a topic that your namesake Christians have wrestled with for centuries. Here's an idea: let me make use of your OO skills and knowledge, to see if they can shed any light on the topic.
The first point to hold onto about the Trinity is that it says that God is One. Three parts but one whole. That unity, that One-ness is key; don't lose that piece.
In the Trinity, Christians are not claiming to worship three gods; we insist that there is one God, and only one. There are no others, nor can there be. There is only one such divine Being, and this one Being has created the entire universe and everything in it.
This one God, Christianity proclaims, is a particular, identifiable Being. It is not an abstract notion of divinity, but a specific entity that we can know, and know about, because if has self-revealed some things.
This immediately brings up questions about what has been revealed, how it was revealed, how we can know it, etc. But let's set them aside, they are topics for another day that will take us away from our Trinity topic.
Now, let's turn to Object-Oriented programming and design. For starters, think of the Singleton design pattern. What are some of the characteristics of a Singleton?
A Singleton is a Class with exactly one Instance.
A Singleton is global in scope, spanning the whole of the application's ecosystem.
From the perspective of our application's sub-system, this Singleton object is never created or destroyed, but always exists as this single thing. It is certainly not created by our sub-system, because programmatically the Singleton has a private constructor. The individual components of our system do not create the Singleton, but they access it through a well-defined access method.
So in our Object-Oriented software world, God is like a Singleton. God has just one single instance. There is only one God.
This one God is also global in scope. Universal even. Spanning all of time and space.
Just as a Singleton is not created by our sub-system, so God is not created by us, but has provided a well-defined interface to God. Again, this is the orthodox Christian position - individual results may vary!
Analogies are never perfect, especially for a mystery like the Trinity, and this one is no exception. For example, in OO, the Class defines the Object, meaning it gives shape to what information and actions a given object instance is bounded by. Whereas in God’s case, the Object in many ways defines the Class. Christian theology would say that there is no God-state which is not entirely defined by the God who is One.
Next time I write, we can dig into the Trinity's Three. If the Trinity says God is One, how can Object-Oriented software design analogies shed light on the flip side that says that God is Three?
Blessings until next time,
Steve