A look back: LANPAR, the first spreadsheet
Tech writers use all kinds of tools, including spreadsheets. But one spreadsheet you've never heard of is LANPAR, the very first spreadsheet.
Many people think of VisiCalc as the first spreadsheet, and while VisiCalc was the first spreadsheet on the desktop, it’s not actually the first spreadsheet.
Ten years before VisiCalc, two engineers at Bell Canada came up with a pretty neat idea. At the time, organizational budgets were created using a program that ran on a mainframe system. If a manager wanted to make a change to the budget model, that might take programmers months to create an updated version.
Rene Pardo and Remy Landau discussed the problem and asked “what if the managers could make their own budget forms as they would normally write them?” And with that, a new idea was created: the spreadsheet program.
The new spreadsheet was called LANPAR, for “LANguage for Programming Arrays at Random” (but really it was a mash-up of their last names: LANdau and PARdo).
A grid of boxes
LANPAR used a grid of cells, called “boxes.” Each box was referenced by a row and column: the box in the upper left corner was box 101 (think of this box address as row 1 and column 01), the box on row 1 and column 99 was box 199, and the box on row 999 and column 1 was box 99901. LANPAR supported up to 999 rows and 99 columns.
| 101 | 102 | 103 | 104 |
| 201 | 202 | 203 | 204 |
| 301 | 302 | 303 | 304 |
| 401 | 402 | 403 | 404 |
The patent application (filed in 1970, granted in 1983, now expired) highlights how the first LANPAR worked: users would enter box data into a file using plain text. Each row started on a new line, and boxes were separated by semicolons. The boxes could contain one of three kinds of values:
INPUTto prompt the user for a valueKto create a numerical constant, such asK3.14for the value 3.14- a calculation that references only other boxes, using addition (
+), subtraction (-), multiplication (*), division (/) and exponentiation (^)
As a simple example, a user might tally a list of numbers from 1 to 4 by writing the numbers on one line as boxes 101 to 104, and calculation on the next line in box 201:
K1 ; K2 ; K3 ; K4
101 + 102 + 103 + 104To calculate an average of these numbers, the user might also add a “count” value in a new row, as box 301, and reference that in a new box (such as box 302) to calculate the average:
K1 ; K2 ; K3 ; K4
101 + 102 + 103 + 104
K4 ; 201 / 301Forward references
The genius of LANPAR was that calculations could use forward references, by referencing calculations that were yet to be resolved. For example, a travel reimbursement might calculate the sum of values in each row (for example, each day of a business trip) while the first row calculated the overall total. To make the calculations easier to follow, I’ll use each box’s address as its value: for example, box 202 has the value 2.02.
| 201 + 301 + 401 | |||
| 202 + 203 + 204 | K2.02 | K2.03 | K2.04 |
| 302 + 303 + 304 | K3.02 | K3.03 | K3.04 |
| 402 + 403 + 404 | K4.02 | K4.03 | K4.04 |
LANPAR calculated cells in a loop; at each “pass” in the loop, LANPAR could perform box calculations in order until there were no more boxes to resolve. For example, on its first pass, LANPAR would identify that box 101 needs the values from boxes 201, 301, and 401. These aren’t resolved yet, so box 101 is skipped.
Continuing in the loop, LANPAR calculates box 201 as the sum of boxes 202, 203, and 204 (the value is 6.09), and box 301 as the sum of boxes 302, 303, and 304 (that’s 9.09), and box 401 as the sum of boxes 402, 403, and 404 (that’s 12.09).
On the next pass, LANPAR can now resolve box 101 as 6.09 + 9.09 + 12.09, or 27.27.
This process is called a forward reference. While we may not think about this as being an advanced concept in 2025, it was a very new idea in 1971. Forward references would not appear in other spreadsheets until the 1980s with Lotus 1-2-3.
Rene Pardo shared an excellent retrospective about how LANPAR was created, including its features. Click the video to learn more:
