Share this:

2 Replies to “De-Nerding Programming”

Creating incentives to simplify is the highest leverage activity.
When Ray Ozzie took the helm from Bill Gates at Microsoft, I hoped I would be able to get through to him with this proposal, even though my only connection to him was via our work at PLATO in the 1970s:

Don’t underestimate the power of this kind of “lossless compression prize” to expose UI issues:

By approximating the Kolmogorov complexity of an entire software base, from UI to the silicon, you expose, in stark relief, all the “warts” that stand out at _all_ levels, from device drivers to UI. It completely obviates all arguments about “programming language paradigms” by relentlessly focusing on reducing the complexity of bringing the Turing machine and the human into consilience. The fact that you are starting out with an obscene UI should not blind you to the fact that approximating the Kolmogorov complexity forces you to identify the _underlying_ UI operations that the crap UI is attempting to approximate in kludge after kludge. So what you end up with is reifying a minimal complexity virtual UI, in terms of which the crap UI is implemented.

This doesn’t solve everything, but it has the virtue of starting with the reality of existing software in a way that has a minimal “argument surface” in judging who is actually making progress in reducing the complexity of our software environment — including the UI. The fact that it also results in easier to analyze operating systems, device drivers, databases, etc. should not be held against the main idea.

Feynman said that every physicist should have a sign with the number “137” hanging on their door to remind them of how little the physics community really knew — to keep them humble. To physicists, 137 is an embarrassment that they all know about but, like the crazy aunt in the attic, no one wants to talk about.

There is a similar humbling and embarrassing aphorism that all computer language designers should hang on their doors:

“Miles and Kilometers are not data types and Distance is not an abstract data type.”

Whenever I run across “type theory” as the theoretic foundation for programming languages (meaning all the time), I bristle. Bertrand Russell said his theory of types was “…not really a theory but a stopgap.” “Type theory”, as the basis for formal verification, has built an impressive edifice on this bad foundation. Type theories, and resulting programming language design, seem a kind of cargo cult, ritualistically pursued by later minds.

My question to programming language designers is simply this:

Why the elaborate “type theories” while empirical dimensions of the real world are ignored in formal foundations to the point that we have billion dollar investments in space probes going to waste because someone failed to do the appropriate conversion from miles to kilometers?

After a 40 year career as a programmer dealing with life and death issues in nuclear reactors and automated ordnance and aerospace inspection, it is difficult to express my frustration.

Adding “units” and “dimensions” as an afterthought to programming languages evinces a deep philosophical problem not just in programming languages, but in the foundations of mathematics. As Bertrand Russell said of his now-long-forgotten “relation arithmetic”:

“I think relation-arithmetic important, not only as an interesting generalization, but because it supplies a symbolic technique required for dealing with structure. It has seemed to me that those who are not familiar with mathematical logic find great difficulty in
understanding what is meant by ‘structure’, and, owing to this difficulty, are apt to go astray in attempting to understand the empirical world. For this reason, if for no other, I am sorry that the theory of relation-arithmetic has been largely unnoticed.”

Although I was able to provide some support in revival of Relation Arithmetic while at HP’s “Internet Chapter II” project, that effort was quickly killed.

The $500M funding for “Internet Chapter 2” was urgently required to import more H-1bs. And, no, that’s not just a bitter old man talking — I was specifically ordered not to hire Tom Etter, whose mathematical background was critical to the effort to bring relational dimensions we are all familiar with into the foundations of mathematics thence programming languages, and to hire instead H-1b workers. There is something going on here that won’t stand the light of day and no one dares talk about it for reasons that are now glaringly obvious.