God and Nature Fall 2023
By David Owen
For students in an introductory computer programming course, one early challenge is to learn the difference between x = y and x == y. Both are read the same way, as “x equals y.” Neither has the meaning familiar from high school algebra. In algebra, x = y was a fact, potentially useful for simplifying a more complex equation. In a computer program, x = y is an assignment statement: the value of y will be copied to x, overwriting whatever value x had before. And x == y, in a computer program, is not a fact but a Boolean expression whose value is true if x and y have matching values, or false otherwise.
Things get more difficult later on, when students (of the Java programming language, for example) must learn the difference between the Boolean expressions x == y and x.equals(y). Having previously learned that x == y means “true if x and y have matching values, or false otherwise,” students learn that this definition applies only to variables whose data type is one of the primitive types built into the language. If x and y are object variables (variables whose data type is a reference type, defined as an extension to the language),
x == y means something different. For object variables, if x == y is true, it means that x and y refer to the same (single) object. They aren’t just equal, they are identical! To compare object variables, x.equals(y) is instead the expression typically used, the one that means “true if x and y have matching values, or false otherwise.”
For students in an introductory computer programming course, one early challenge is to learn the difference between x = y and x == y. Both are read the same way, as “x equals y.” Neither has the meaning familiar from high school algebra. In algebra, x = y was a fact, potentially useful for simplifying a more complex equation. In a computer program, x = y is an assignment statement: the value of y will be copied to x, overwriting whatever value x had before. And x == y, in a computer program, is not a fact but a Boolean expression whose value is true if x and y have matching values, or false otherwise.
Things get more difficult later on, when students (of the Java programming language, for example) must learn the difference between the Boolean expressions x == y and x.equals(y). Having previously learned that x == y means “true if x and y have matching values, or false otherwise,” students learn that this definition applies only to variables whose data type is one of the primitive types built into the language. If x and y are object variables (variables whose data type is a reference type, defined as an extension to the language),
x == y means something different. For object variables, if x == y is true, it means that x and y refer to the same (single) object. They aren’t just equal, they are identical! To compare object variables, x.equals(y) is instead the expression typically used, the one that means “true if x and y have matching values, or false otherwise.”
What does it mean to say that distinct persons share a single identity? |
Here I would like to suggest that this distinction, between equality of reference (x and y refer to the same thing) and equality of value (x and y refer to things with matching values) may be helpful in thinking about the doctrine of the Trinity. Growing up in a Christian family, attending church for as long as I can remember, I am familiar with various analogies meant to help make sense of the Trinity: the unity of three distinct persons is, for example, compared to water as ice, liquid water, or steam; or to the shell, white, and yolk of an egg; or to the three leaves of a clover. As a young person I remember wondering, why do people say that the Trinity is a mystery? These analogies make sense to me. Am I missing something?
Looking back, I would say, yes, I was missing something. The water analogy suggests that God is a single person able to assume different roles. A similar example would be to say that I am a child of my parents, a parent to my children, and a spouse to my wife. This is not mysterious; I can be all of these things and still be just one person. Analogies like this lead us to believe that the Father, Son, and Holy Spirit are not three distinct persons after all, but three names or roles assumed by a single person. On the other hand, the egg and clover analogies suggest a set of distinct parts that fit together to form the whole. This, again, is not mysterious but rather common in our everyday experience. A shell alone is not an egg, however; a leaf alone is not a clover. Analogies like these lead us to believe that God is something like a perfectly coordinated team or committee, three parts held in balance by each other—but each taken alone would be incomplete.
Analogies meant to remove a barrier to faith, by demystifying the Trinity, oversimplify it and leave us believing something a bit different from the doctrine developed and affirmed by the early church. According to the Athanasian creed:
We worship one God in Trinity … neither confounding the Persons, nor dividing the Essence. For there is one Person of the Father; another of the Son; and another of the Holy Ghost (1).
The Father is God; the Son is God; and the Holy Ghost is God. And yet they are not three Gods; but one God (1).
The Father, Son, and Holy Spirit are three distinct persons, yet they share a single divine identity. What does it mean to say that distinct persons share a single identity? Perhaps it is something like a computer programmer saying that two object variables have distinct values (x.equals(y) is false), but also saying that those two variables refer to the same single object (x == y is true). It would be fair to describe a data type with this sort of behavior as mysterious, to be sure—but it is mysterious in a way that I would argue is analogous to the mystery at the heart of the historical Christian doctrine of the Trinity. Like the water analogy, it suggests the unity of the parts; like the egg analogy it suggests their distinctiveness. The problem with it, of course, is that it is a logical contradiction!
What good is an analogy like this? If the doctrine of the Trinity is difficult or even impossible to understand, is there any value in trying to clarify the way in which understanding it is difficult or impossible? I think there may be value in such analogies. As my colleague Doug Phillippy pointed out in a recent issue of God and Nature:
When fallen human beings seek to understand an infinite God, they often impose their imperfect understanding of reality on him. In the process, God can be trivialized, made to look more like his creation than the infinite being he is (2).
Phillippy points out that when God spoke to Job, the result was that Job moved from confidence to humility. Objectively, Job understood God better than before; God had spoken to him directly, after all. But what God said made Job see his ignorance and his dependence on God for any possibility of understanding. When Christians affirm the doctrine of the Trinity, it should not be as a confident claim that we understand it, but as a humble attempt to worship God in a way that is faithful to the way God has revealed himself to us.
Depending on one’s tradition, affirmation of the Trinity might be part of a creed, a song, or some other aspect of worship. I think of the hymn, “Holy, Holy, Holy,” and the words at the end of the first verse, “God in three persons, blessed Trinity.” It would be possible for me to sing these words without thinking much about them, as if this were a simple statement of something I know and understand about God. Or I might see it as an opportunity to reflect on my very limited understanding of all that God is, to recognize my dependence on God for that understanding, and to express gratitude and wonder at what he has chosen to reveal to us.
References
- “The Creed of Saint Athanasius,” in The Book of Common Prayer. New York: The Church Hymnal Corporation, 1979, pages 864-865.
- Phillippy, Doug, “In Pursuit of the Infinite: Living in Paradox 3/3,” God and Nature, Spring 2023.
Dr. David Owen teaches computer science at Messiah University in Grantham, Pennsylvania. He has studied testing and verification strategies used for a distributed software system, hardware design, graphics programing, computer vision, and the design of programming languages. He is also interested in how experience with technology influences our view of God and what it means to be human. David loves music and enjoys riding and repairing old bicycles.