> [Excel is] the world most widely deployed programing environment.

It’s curious to note, then, how utterly peculiar of a programming environment it is: it is a first-order (pre-LAMBDA) purely functional array dataflow language with a sometimes-graphical interface and little to no capacity for any kind of abstraction.

Because of the last point, I would perhaps call it half a programming environment (if programming = make a computer do stuff + assemble simple doings into larger ones, Excel only does the first part). This is alleviated by a clever choice of basic datatype: a two-dimensional array of crufties over which scalar operations (usually) propagate automatically; this affords a rich set of operations that are not so low-level that the absence of abstractions or side effects would be crippling and at the same time not so high-level that you’d have an impulse to drill down into their inner workings and change something. In particular, you can’t store these arrays as elements inside other arrays: the layering is impermeable.

That this is a clever choice of datatype has been noticed elsewhere: witness APL, MATLAB, or even in some sense SQL. Among of all of these, though, Excel is distinguished by how very little it can actually do from a programming perspective (as opposed to a practical perspective or even a primitive-counting perspective). It’s almost like someone sat down and decided to see how little programming functionality a practical tool could contain to still qualify as programming, ditched everything else, then slashed half of the result.

But if it’s a shamelessly minimal programming language (if it qualifies as one at all), it’s quite striking to consider how rich of a programming environment it is. You get intermediate results. You get visual indication of where the values used in the computation came from. You get help for every function as you type it in. You get to change the inputs, or any other detail, and be dropped into an impeccably updated state of your program. You get to see your changes propagate, live, without messing around with REPLs, reloading notebook cells, or restarting hung servers. You get more IDE for your money than CLion and Mathematica combined. On a computer from 1997.

I mean, of course Excel is cheating. If you read papers on “visual programming”, and “differentiable computation”, and “provenance”, and “incremental recompilation”, and all the official names for all that jazz I just described—you’ll see that Excel avoids all the hard problems the academics are struggling with by not having the respective features. (It’s well known that everything gets easier in a purely functional language or without first-class functions, for example.) It even insulates the programmer from the problems of naming and of factoring (and thus avoids having to provide attendant features) by not allowing names or factoring.

Now, I’m not saying that Excel is somehow lacking in features or that it is a pleasant programming environment—it both has a tremendous amount of features and is a pretty miserable programming environment past a very low complexity ceiling. But, for all that is holy, why isn’t everybody trying to figure out how to cheat even harder?