The phone rang at 4:01 in the morning.
“I’ve got something for you!”
“Is that you, Fabian? Where are you?”
“New York City, where else? Empire State of Mind, cuz! Look, I’ve designed a programming language.”
“I’m sorry to hear that.”
“You won’t be. I’ve totally solved the concurrency problem. See, in my Profit programming language, when a function returns a value, what it really turns is a placeholder. Only when it’s read does the system guarantee that the value has actually been calculated.”
“That’s called a future!” I said, sitting up in bed, “And I agree that it’s a great—”
“It’s called an IOU,” interrupted Fabian, “It stands for Indeterminate—Object Unknown.”
“OK,” I said as I started up my laptop and put on water for coffee. “But I totally get it: You gain a lot of scheduling flexibility if your guarantees about processing are initially weak and you return a placeholder. Then at some point you call get_future, which blocks until the value is available, recursively triggering any other required processing.”
“You call DUE, which stands for Delay Until Evaluated, and I’d appreciate it if you stopped interrupting me with your unimaginative terminology. What are you, a C++ programmer? Now, if I may continue… When you call DUE on an IOU, it turns into CASH. CASH stands for CASH All Sub-Hierarchies.”
“I think I’m beginning to see where you’re going with this. OK, so how do you handle composability? If an IOU can’t be turned into CASH when you call it DUE, you want to be able to use spare processing power to CASH the other IOUs you happen to be holding.”
“That’s where my system shines! That’s the job of the BANC! It Balances All Nebulous Concurrency! The BANC subsystem is constantly evaluating all the IOUs in the system and converts them to CASH on an as-needed basis. It’s extraordinarily sophisticated, allowing the number of outstanding IOUs to greatly exceed the total processing capability of the computer at any time.”
“Not bad! What kind of resource allocation algorithm does the BANC use? They all have drawbacks…”
“I’m way ahead of you! Any kind of centralized system is provably inefficient under certain circumstances! Instead, you need the system as a whole to be controlled dynamically. To do that, the BANC system issues what are called OPTIONs, which are time-bound IOUs referring to other IOUs. When an OPTION is CASHed, it doesn’t produce a value, though. It allocates a computational resource like CPU time or disk access.”
“For that to work, you’d have to have an awful lot of OPTIONs flying around the system. Wouldn’t the resources dedicated to this BANC system, which never produces an actual value you’re trying to calculate, be a drag on the system as a whole?”
“Nonsense! Even if the BANC system consumed a ridiculous percentage of the resources available, the fact that it allows so many IOUs to be handled while efficiently managing CASH guarantees overall efficiency! In a sense, it’s more valuable than any single computational value.”
“Well, I’m not sure if that makes sense—”
But Fabian was on a roll and didn’t appear to hear me. “See, most of the OPTIONs are, in fact, never CASHed. They’re just nodes in a lock-free graph that’s constantly being updated by autonomous agents.”
“But if the OPTION system itself crashed—”
“Can’t happen! The OPTION system itself is managed by a subtype called Computer Detouring OPTIONs. CDOs are wired to the interrupts of the computer, so they’re guaranteed to activate. It’s a perfect system!”
“What if a whole bunch of CDOs fire simultaneously?”
“I’m not following you.”
“Well, what if you created a cycle in a graph of CDOs?”
“Wouldn’t happen. CDOs are only activated very rarely. There’d never be a contention issue.”
“Well, it might be unlikely, but what if it did?”
There was a long pause before Fabian spoke again. “You and your ‘theories.’ I’m telling you, this system was designed by the very best minds in the business. Nothing can possibly go wrong. Why don’t you download it and see for yourself?”
He read me a URI, which I typed in to my browser. “Well?” he asked.
“Seems to be responding kind of slow.”
“Let me check the server.” There was the sound of distant clicking. Then a long silence.
“Let me call you back in a minute,” said Fabian. The phone clicked off. I haven’t heard back from him since.
Larry O’Brien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.