LAMBDA: The ultimate Excel worksheet function

Post by Andy Gordon and Simon Peyton Jones on LAMBDA giving Excel users the ability to define functions.

Ever since it was released in the 1980s, Microsoft Excel has changed how people organize, analyze, and visualize their data, providing a basis for decision-making for the millions of people who use it each day. It’s also the world’s most widely used programming language. Excel formulas are written by an order of magnitude more users than all the C, C++, C#, Java, and Python programmers in the world combined. Despite its success, considered as a programming language Excel has fundamental weaknesses. Over the years, two particular shortcomings have stood out: (1) the Excel formula language really only supported scalar values—numbers, strings, and Booleans—and (2) it didn’t let users define new functions.

Until now.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Finance Reaction: "oooohhh"

My finance clients were thrilled with this new way to overuse Excel.

For my own taste, I find it annoying that Excel doesn't publicly document whether it's a strict or lazy language. Part of the reason is probably that "it depends" on a few edge cases, notably Real-Time Data Servers (promises) and VBA calls.

Language evolution pressure

As I have written previously, the languages evolve in the same direction under complexity pressure. The confirmation comes sometimes from unexpected places. I'm waiting until they add objects and dependency injection to excel as well.

I *really* like spreadsheets

I *really* like spreadsheets (may be not so much excel).

Yes, typical spreadsheet users don't know about programming languages, theory, etc. They just want to munch numbers, or create a small database to track their music collection. Nothing wrong with that. All the power to them.

I would argue that combining visual basic and excel is not a typical use-case, but rather an atrocious one that goes against the grain of the purely functional reactive substrate that are spreadsheets.

Spreadsheets is programming: we should help spreadsheet users to be more powerful, but only if they want to, and without visual basic, thank you.

Excel will never change

The only question is whether MS is up to creating a new online/JS spreadsheet to compete with Google (like Visual Studio to VS Code).

Anyone remember "Dataflow" languages?

I have often thought that spreadsheets could be used as a substrate or organizing principle for some kind of programming language. In fact one could make a good case that spreadsheets actually ARE a special case of programming language.

Human brains that don't do well with one-dimensional text that has lots of nesting levels, can often organize things better when presented with a table of values and a well-defined way to derive each from other values.

Dataflow languages are by nature reactive and functional. Change an input, the computation gets done and intermediate values change as necessary, and the outputs change. Which is a lot like spreadsheets in the first place.

Thing is, even though I believe this idea is driven by a good and useful impulse, I don't think this particular idea is good design. It drops out of the dataflow paradigm by introducing exactly the features of linear programming languages that tend to give humans the most confusion and trouble. In a dataflow language the way to achieve clear and consistent abstraction is with a "subroutine" that is just another page in the same language and the way to achieve I/O with the underlying system is via "cells" that are defined in terms of values that may change in the external world or which result in output to the external world when written.