Gods, Coding, and Abstractions

Looked at in a certain way, writing programs is mostly an epic battle against complexity. It doesn’t take long for any reasonably ambitious project to get too big to fit in any one person’s head, and, once it’s reached that stage, it never gets any better. Because complexity is a tide that never goes out. Once you’ve written an air traffic control system, it’s not like the next air traffic control system you write is going to be easier. Just the opposite. It’ll probably be orders of magnitude harder.

But things can be massaged into a state of obscured complexity — which is to say, perceived simplicity — by good abstractions. These days, if you want to establish a connection to a server somewhere, you don’t have to know anything about the details of TCP/IP, or packets, or networks. You just say connect and — poof! — magic happens.

Which brings me, oddly enough, to God. Or gods. There was a time when gods were stand-ins for the bewildering complexity of the world we live in. When the giant yellow ball in the sky disappeared for several terrifying seconds in the middle of the day, or mountains exploded and smothered entire countries in ash, or oceans rose up and drowned continents — it was a lot easier to abstract all of that stuff away behind a vaguely ubiquitous and all-powerful god than speculate on the actual mechanisms that caused it. Or even know that those mechanisms exist.

Before monotheism cornered the market on faith, the relationship between things we didn’t understand and the gods we worshiped were pleasantly direct. You had gods of oceans, gods of war, gods of beauty, storms, death, fertility, etc. So — if the river didn’t swell at the appointed time and your crops withered, you didn’t have to worry much about the mechanics of that cataclysm. You had a god to blame, or curse, or beseech.

And — far more importantly — you didn’t have to face the pitiless amorality of a world that lets things like that happen. When that ancient ruined farmer asked why the river decided to lie fallow a year, I’m pretty sure it would have been easier for him to believe that he’d displeased the river god Hapi. because the alternative is that it happened for no reason at all. The notion of existential meaninglessness is far more terrifying than the anger of invented gods. Gods have intelligence, and will. If they’re good, they can be appeased. If they’re bad, they can be opposed. Either way, you can do something about it. We’re just not equipped to deal with the notion of a giant void of intent at the core of the universe — this well of uncaring absence that we live in isn’t something we can fight, much less defeat. There’s nothing to fight. It’s like declaring war on rain. What good can it possibly do?

Anyway — eventually, the welter of targeted, domain-specific gods (shallow abstractions, all) collapsed into a series of one true gods. And then those monolithic gods began to experience their own, internal contractions, as the puny hu-mans they oversaw began to figure out the whats of their world. We don’t need a god to explain eclipses anymore. We know what makes the ground shake, and we understand that bolts of lightning are massive discharges of static electricity, not divine javelins. Religion is fighting desperately against this encroachment of rational thought into its domain, but it’s a losing battle.

Gods are still relevant, though, and probably always will be, because science and rational thought can’t really help with the why. Why does disease devour so many people every year? Why are there so many homeless children? Why do people starve? Why are there wars? Why do we die?

God answers those questions. Or rather, he doesn’t answer them, he abstracts them away. We aren’t meant to understand all of these horrors as individual, random, disconnected events, he tells us. It’s all part of a plan — a plan that isn’t disclosed to us, that will never be disclosed to us, and that we couldn’t possibly understand even it even if it was. We don’t have to understand it. When our fathers die, and we ask for a reason, god says because I wish it to be so. There’s no need to ask the next logical question, because we’ve left the realm of logic. We’ve entered the divine.

So I guess the analogy I started all this out with is kind of crappy. Divine abstractions aren’t like programming abstractions at all: they’re meant to conceal the things we don’t know, not simplify the thing we do. We needed Helios not because we didn’t want to think about the chemistry of the sun, but because we couldn’t. By the same token, we need a God to tell us that our lives have purpose and meaning not because we don’t want to go to the trouble of finding it ourselves, but because there’s nothing to find. No purpose. No point. No meaning.

Which is to say: the delicate scaffolding of meaning is something we have to invent, and erect, and maintain. And we often to do it through the medium of an omnipotent, all-seeing, inscrutable, irascible god. God may smite us every so often. He may give devils free reign, burden us with laws that contradict our deepest desires, inflict disease and sorrow and death. But he’s there, an oasis of intent in the center of a dark, uncaring void. And he has a plan.

2 comments ↓

#1 Joseph Schmitt on 08.17.08 at 9:55 am

This is definitely the best essay I’ve seen you write on this blog yet, and it’s the best overall one I’ve read so far this year. It’s well thought out, intelligent, and relevant. Keep up the great work.

#2 lapsed.cannibal on 08.17.08 at 7:10 pm

Thanks Joseph. Much appreciated.

Leave a Comment