AI History Battle

systems

The wall around the data structure

It is 1973 at MIT, and software has entered its crisis years: million-line systems where any module can reach into any other's representation, so changing one data layout breaks a hundred distant call sites, and no one can say which. Design the discipline of abstraction: modules that expose behavior and hide representation behind an enforced interface, so implementations can be swapped without a ripple — and make the language enforce the wall, because conventions unenforced are conventions ignored. Then state the substitution principle: exactly when one type may stand in for another without breaking the reasoning of code that uses it. Get it wrong and software scales only as far as one hero's memory of the whole system — which is to say, it stops scaling.

data abstractionmodularitylanguage enforcement

Who this problem belongs to

The two figures whose methods fit it best, out of 46 in contention.

b. 1939 · systems
100

This is Liskov's own desk at MIT in the early 1970s, not a hypothetical. She designed CLU, one of the first languages to enforce data abstraction as a language-level guarantee rather than a programmer convention, precisely so that a module's internal representation could change without rippling through every distant call site that used it. Her 1974 paper on data abstraction and hierarchy laid out exactly this problem's software-crisis diagnosis, and her name is permanently attached to the substitution principle this problem explicitly asks someone to state: exactly when one type may stand in for another without breaking the reasoning of code that depends on it, formalized rigorously in her 1987 keynote and 1994 paper with Jeannette Wing. There is no daylight between the person and this problem's answer. Score: maximal, by definition.

b. 1934 · theory
88

Hoare's 1972 paper 'Proof of Correctness of Data Representations,' written within a year of this problem's setting, is a direct technical ancestor of the substitution principle: he showed how to prove that an abstract data type's implementation correctly represents its specification, so that client code reasoning about the abstraction stays valid regardless of representation changes underneath. His axiomatic semantics, Hoare logic, gave the field rigorous tools for reasoning about what a module's interface actually guarantees — precisely the enforced wall this problem demands. His quicksort and structured-programming work also reflect a career-long insistence on disciplined modularity. He scores just behind Liskov because his contribution, while foundational and contemporaneous, is the proof theory underlying data abstraction rather than the language design and named principle this problem specifically asks for.

46 figures are scored on this problem. Draw it in a battle to see where you land.