Addams Family Code

If the Addams Family had a programming language, it would probably be COBOL. Just like the Addams’s, it should be something old, dark, and a little funky. Shows like “Wednesday”, “Supernatural”, and the Harry Potter movies reference hidden worlds lurking just below the surface phenomena of the real world. A dark world, hidden from the brightness of the normie world, with its arcane set of governing principles. In IT, this is the world of the mainframe and COBOL. Lurking in the shadows, it powers the hidden world behind each swipe of your credit card. The normie world web may take your order on Etsy, based on a friend’s Instagram, but the money is moved and the shipments routed by the dark, obscure COBOL and mainframe world.

I’m not an expert in COBOL but lately it has become a little obsession. It’s a very different kind of language with very different goals. C, Java, C++, Go, Rust, JavaScript, Python, etc, seek to be general purpose languages usable for any type of problem. Extension to different domains means languages have to provide for concurrency, network communications, and include substantial standard libraries. They want to span the gamut from a user-facing application, to operating system extensions, to web services, to blinking lights on micro-controllers, and in fields ranging from artificial intelligence to basic system services. All without leaving that language.

COBOL is meant to talk about business related concepts, like managing information customers, money, vendors, and accounting. COBOL eschews much of what has made modern languages modern. There are no concurrency primitives. The language lacks a significant standard library. There’s no pretense of embedding COBOL into your coffee maker or writing an expert system in COBOL. Anything fancy requires you to provide a library to do it in some other language. COBOL cares about business, understanding, and stability. The version of COBOL most often seen in books and examples is COBOL 85, with minor extensions added prior to 2002.

But the biggest difference is the target user. While Python is (at first) easy to understand, it is meant to be a gateway to software development. These languages want the user to think about problems like a computer programmer; to express the relationships that make solutions extensible; and apply mathematical precision to general problems with a (preferably) sparse, symbolic language. For example, designing such a perfect arrangement of types and interfaces that conditional statements like ‘if’ are never needed. All the pieces are in an orderly harmony and their chakras are aligned with the universe.

COBOL doesn’t seek to shepherd an accountant into the enlightened light of computer programming. It leaves the accountant to suffer as accountant. All the twists and turns and arbitrary changes in law, contracts, or negotiations, no matter how irrational, are accommodated in its verbose, English-like language. All the odd, special cases find acceptance, even when they turn the best reasoned object model into a shattered pile of rubble. All family members are mostly human except there’s a disembodied hand. Everyone is buried in the family plot, except uncle Knick-Knack, whose in a closet along with his summer and winter wardrobes. It accommodates these changes by growing its code around the problem like a tree twisting its way around an inconvenient stone wall.

In as much as the Addams Family or Harry Potter is fiction, it is also fiction to believe that the business of human affairs can be mathematically modeled. New laws are passed, temporary incentives created and destroyed, other opportunities arise, or there are unanticipated changes. These things may play out over years, decades, or generations. Change hammers away at the sleek, modern edifice, until it resembles the dilapidated, dark, and forbidding gothic mansion where the Addams’s dwelt. Or a Hogwarts, where the expansive grounds are full of turns and unanticipated twists. While normie languages and programmers might find this world horrifying, it is delightful and expected to COBOL.