## Illustrating Mathiness - Code Analogy

The key to understanding mathiness is to recognize how a formal language can interact with natural language.

The source code for a computer program has formal statements written in a language like C that will be interpreted by a compiler. It will also have comments and messages written in natural language that will be read by a person. Compared to mathematics, source code is easy to analyze because the statements in the two languages are kept separate.

Suppose you look at the source file for a program. The C statements are impenetrable, but the comments say things like, “find all the multiples of 2 and exclude them, then find all the multiples of 3 and exclude them, … stop when you have excluded all numbers that are multiples of smaller numbers and print the largest number that is left.” After reading the comments, you get the impression that the code implements a prime number sieve. You compile the code. The compiler returns no errors. You run the code. When it stops, it prints a message on your screen: “17 is the largest prime.” You think that the code demonstrates that 17 is the largest prime number.

Then a friend who knows C looks at the code and tells you, “This code, which could have been written in a way that made it much easier to understand, actually implements a bubble sort, not a prime number sieve.”

This source file contains the code version of mathiness. Quoting from my AER paper:

mathiness uses a mixture of words and symbols, but instead of making tight links, it leaves ample room for slippage between statements in natural versus formal language

In this example, the comments and display message give the reader a misleading sense for what the formal code actually does. But because the formal code is opaque, the reader has no way to know that they are misleading. A reader who trusts the comments and the message will reach a false conclusion–that there are only a finite number of primes.

The source code is clearly misleading, but imagine the scholarly exchange that it will generate:

“Your code is wrong. There is no largest prime.”

“The program does not say that there is a largest prime.”

“When it terminates, it displays the message ‘17 is the largest prime’.”

“That means that 17 is the largest prime from this list that the code sorts, not that there is a largest number in the set of all prime numbers.”

“What do you mean ‘the list that the code sorts’? There is nothing in the comments about a list or a sort.”

“Its all there in the C code. Didn’t you read it?”

…

If you have ever tried to engage in a discussion with economists who are relying on mathiness, the pattern will be familiar. Even questions of simple logic can turn into a never-ending game of whack-a-mole.