BETA
This is a BETA experience. You may opt-out by clicking here

More From Forbes

Edit Story

Software Is Just Math. Really.

This article is more than 10 years old.

I'm happy to see this post in defense of software patents because the debate has been dominated by software patent critics of late, and a healthy debate is constructive. Still, I don't think Nilay Patel's arguments stand up to close scrutiny. I'm going to focus on two of his specific arguments.

First, Patel makes the common argument that the patent system's value comes from the way it encourages disclosure of useful technologies. This seems like an argument for software patents that could only be made by someone who's never developed software (which Patel concedes he hasn't). I've known and worked with a lot of computer programmers over the years in a lot of different parts of the software industry, and I've never met a computer programmer who finds patent filings a useful source of technical information. A typical patent is written in dense legalese. This style, combined with the tendency invent new terminology for standard concepts, makes searching the patent database almost impossible. Patents are often not released to the public until years after the original application, by which point the technologies described are often out of date. And most important, the typical patent has very few of the technical details a programmer would actually be interested in. Most importantly, the patent office doesn't require the disclosure of source code.

Maybe there's an industry out there where engineers study patent filings to understand how patented technologies work. But that's not how things work in the software industry.

Patel's second argument is more philosophical:

Look a little closer and it’s easy to see that the boundaries between “just math” and “patentable invention” are pretty fuzzy. Every invention is “just math” when it comes right down to it — traditional mechanical inventions are really just the physical embodiments of specific algorithms. Consider the TurboTap long-necked draft beer nozzle, which was developed by a University of Wisconsin student named Matthew Younkle and granted US patent #7,040,359 — it pours beer faster and with less foam because of its long shape and internal structure. (I’ve conducted extensive… testing.) Isn’t that just a clever application of fluid dynamics? Where do you draw the line between the math that enables the invention and the invention itself?

When people say that software is math, they mean that in the most direct, literal sense. This:

a = 2

b = 3

print a+b

Is a computer program that, if evaluated by a Python interpreter, performs a computation (2+3) and produces the output (5). And it's also, obviously, a mathematical algorithm.

You can say the same thing about all software that has ever been written. A computer program is a sequence of symbols that a hardware device interprets as the steps of a mathematical algorithm. Every program takes some inputs, applies some mathematical operations, and produces some outputs. Microsoft Windows does this. Google's search engine does this. The software that controls your car's fuel injector does this.

Of course, real-world software is more complicated than my example above. A real program might take a billion input values, perform a trillion calculations on them, and produce a billion output values. The input values might be derived from real-world measurements, such as keystrokes, mouse movements, or the contents of your hard drive. The outputs might be numbers represent complex data structures: images, sounds, network packets, etc. And of course computers are extremely fast, so they can perform more calculations in a second than you could in a lifetime using pencil and paper.

But conceptually, there's nothing remotely fuzzy about the distinction between physical objects and software. A computer program is a sequence of symbols represented by strings of 1s and 0s. A physical object is a collection of atoms. The distinction couldn't be clearer or more fundamental.

True, we have mathematical models that approximate the behavior of many physical systems, and in some cases (like quantum mechanics) it does so with extremely high precision. But a model of a system (even an extremely accurate one) is not the system itself. You can simulate a nozzle with a computer program, but loading fluid dynamics equations into your laptop won't turn it into a nozzle. To create a nozzle, you need physical substances like steel and plastic. Hence, a nozzle isn't math, and it's eligible for patent protection. A web browser, spreadsheet, or video game is just math, and therefore it's not (at least according to the Supreme Court's precedents) eligible for patent protection.