In the past I've made claims like "software is math"...and I usually get taken to task over it. I acknowledge that others, particularly humanists and social scientists, might be uncomfortable with such a reduction. Math and computation are not the same thing. And certainly the *experience* or *usage* of computers is a broad arena, spanning many fields including sociology and anthropology, and not merely reducible to boolean logic or symbol manipulation. Given time it would be necessary to define these terms more clearly and show how they are related. That said, I consider math, logic, and computation to be intimately connected, often so intimately connected as to justify reducing one to another. So for the time being I'm tempted not to ameliorate the debate but in fact to push this point further.

Similar to algebra, software combines variables and operations together to manipulate symbols and the values they represent. Most of these operations are drawn from logic (for example, comparing the truth value of two expressions) or from arithmetic in the form of addition, subtraction, multiplication, and division. In code, these variables and operations are typically grouped into larger, more complex data types and structures. Yet while math may remain as a pure figment of abstract imagination, computer software is a special kind of symbolic abstraction in that it exists in physical form, as a set of executable operations in electricity, metal, plastic, glass, and silicon. Always bound to physical hardware, computer science thus tends to be more of a practical science than its mathematical cousin, indelibly marked by questions of finitude, physical affordance, and pragmatic operation.

This realization once led media theorist Friedrich Kittler to pen a now notorious essay titled "There Is No Software," arguing just that: software has no autonomous existence per se, since algorithms are always already embedded in physical devices. Kittler was wrong empirically, of course--there is software--and his short piece was clearly tailored to be more provocative than accurate.

But I suspect Kittler was also wrong philosophically; in order to understand computers we must directly engage (not try to eliminate) the realm of logic and mathematics, which resides within what Marxism calls the superstructure and what psychoanalysis calls the symbolic order. In sum, I prefer not to reduce software "down" into the material base but keep it "up" within the domain of mathematics, logic, formal abstraction, language, and the symbolic. Here I mimic the cultural turn in twentieth-century Marxism: sometimes being a good materialist means updating one's definition of materiality.