A programming language is a notation in which every statement has precisely one meaning and precisely one effect. x = x + 1 does not mean different things depending on who writes it or what mood they are in. It increments a variable. The meaning is the operation. Nothing is left over. Read through Wittgenstein's framework, programming languages are the clearest realization of the dream of perfect language: a notation in which meaning is determined by form, in which saying and meaning have been collapsed into a single act. They worked beautifully for instructing machines. They failed at expressing human thought — and the failure, read precisely, is what makes the AI language moment philosophically consequential.
The history of programming languages is, from a Wittgensteinian perspective, the history of increasingly sophisticated attempts to narrow the gap between human intention and formal specification without ever crossing the fundamental line. Grace Hopper's A-0 compiler in 1952, FORTRAN in 1957, COBOL in 1959, C in the 1970s, Java in the 1990s, Python in the 2000s — each language made the formal specification slightly more hospitable to human thinking, reduced the cognitive distance between what the programmer meant and what the code expressed. Each remained within the Tractarian paradigm: meaning as form, understanding as structure, communication as specification.
COBOL is the paradigmatic case of the disguise that could not succeed. MOVE A TO B has the surface appearance of an English sentence. The appearance is decorative. The sentence performs a single unambiguous operation; context contributes nothing; purpose contributes nothing; the speaker's intention contributes nothing beyond what is explicitly encoded in syntax. Making a formal language look like English does not make it function like English, because English functions the way it does by virtue of the form of life its speakers inhabit — a form of life no formal language embodies.
The consequence of this structure was civilizational. For fifty years, every human who wished to use a computer had to reshape their thinking into a form the machine could parse. The cognitive tax of this reshaping was the cost of living inside the Tractarian machine. The regime had gatekeepers — programmers, database designers, specialists who had learned the machine's language and could perform the translation it demanded. The gatekeeping was not malicious; it was structural. It divided the world into those who could speak the machine's language and those who could not.
The language interface does not abolish programming languages. They still run beneath. What changes is who crosses the barrier. The human stays in natural language; the machine translates from use to form on the human's behalf. The Tractarian notation is still there, doing its work. But the human no longer needs to inhabit it — and the question of what this does to the relationship between thought and code is one the Ludwig Wittgenstein — On AI volume makes central.
The line from the Tractatus to modern programming languages runs through Turing's 1936 formalization, von Neumann's stored-program architecture, Grace Hopper's 1952 compiler, and the subsequent proliferation of high-level languages. Each realized the Tractarian commitment that meaning is form at progressively more convenient levels of abstraction.
Meaning as operation. In a programming language, the meaning of a statement is exhausted by what it does; there is no residue of context or intention.
Universality with poverty. Formal languages are expressively universal — anything computable can be expressed — but communicatively poor, unable to express why the computation matters.
Disguise without transformation. COBOL's English-like surface does not make it function like English; the formal interior remains Tractarian.
The translation cost. For fifty years, every user of a computer paid the cognitive tax of reshaping thought into form the machine could parse.
Still beneath. The natural language interface does not replace programming languages; it mediates between natural language and their execution.