The Most Important Software Innovations (2021)
29 points by veqq
29 points by veqq
Some things I would add to the list:
Hindley-Milner, ie parametric/generic types definitely deserve a place.
Probably also Wadler+Blott typeclasses/traits.
Optimizing compilers, Fran Allen’s pioneering work. Dunno if continuations should be lumped in with SSA or not.
Macro generators, Strachey’s GPM, Mooers’ TRAC, etc.
I thought we might see declarative systems in the list (eg: nix, k8s, terraform). It maybe it wasn’t prominent enough when this was updated in December 2021. Or maybe it’s just obvious, and I’m just easily impressed.
I wonder if Wheeler would lump those in with the 1977 innovation "Make (automated build system using dependencies)"? There's a machine-readable specification, the user makes a request, and the computer figures out and runs the delta of tasks required to achieve it.
I don't think Wheeler's that kind of guy as there's no Prolog, but declarative systems have been around for ages; Windows NT used Small Prolog for network configuration.
In 1965 on Wheeler's timeline:
J.A. Robinson developed the concept of “unification”. This concept - and algorithms that implement it - become the basis of logic programming. No patent identified.
That would cover Prolog. It might also cover some of the stuff @fanf mentioned like Hindley-Milner, but I admit I'm not an expert in this area.
From Wheeler's criteria at the top, it sounds like he's looking for the first appearances of important ideas rather than a hall-of-fame approach for their implementations. Which is still kind of fuzzy because what constitutes a "separate" idea versus an evolution of a previous one? (So some judgement calls are still unavoidable. But I admire how thoughtful he was in drafting his criteria!)
Cuts off at a rather odd spot in time. But it is also the nature of such lists to be subjective and incomplete. I would add:
data structure R&D did not magically stop in 1980
Oh! We have to mention of structured data types: records, pointers, leading to algebraic data types. McCarthy and Hoare around 1963.
Databases (relational algebra and SQL) are on the list dated 1970.
Missing the lambda calculus, from 1936! It is a model for:
this is a fun intellectual exercise! i do wonder how many of these things will be around in 20 years and in what form
Distributed version control is on the list, dated from 1991.
Wasm is a combination of p-code (1966) and secure mobile code (1992). There’s another line back to UNCOL (1958, vapourware) via ANDF (1990ish, unsuccessful) and AS/400 TIMI (1988) which are distinguished from p-code by trying to be language-independent as well as target-independent.
I might generalize jails/containers to "virtual machines in general", particularly hypervisors that allow efficient sandboxing of OS-level things. I view containers as an evolution of that idea.
Virtual machines have been well known for decades (since VM on the 360), but lightweight OS virtualization/containers feels much more recent. I think patient zero there is jails, but I'm wondering if there's prior art?
I would argue all of this is already on his list, except maybe the cryptography stuff.
He either lumps it in as a child of RSA or skips all other cryptography. I dunno which.
My take: