Dan Bricklin's Web Site: www.bricklin.com
Was VisiCalc the "first" spreadsheet?
It was the combination of many things including its "programming by example" user interface and its influence on others that made VisiCalc special.
Why am I writing this?
Every once in a while Bob Frankston or I get an email discussing something which they claim relates to "spreadsheets before VisiCalc" or saying that "VisiCalc really wasn't first". This article is to address those type of issues and explain what I understand people to mean when they call VisiCalc the "first electronic spreadsheet".
Each of the writers usually has some valid point about a particular program that they or someone else created or proposed. Most of these were not something that Bob or I had seen. However, with the years of experience we had at the time we created VisiCalc, we were familiar with many row/column financial programs. In fact, Bob had worked since the 1960's at Interactive Data Corporation, a major timesharing utility that was used for some of them and I was exposed to some at Harvard Business School in one of the classes.
First of all, we did not invent the word "spreadsheet". The name "spreadsheet", or more commonly in the early days, "electronic spreadsheet", was applied to VisiCalc precisely because it was like the paper spreadsheets, such as the ones I did as a student at Harvard Business School. (The command tree illustration in the History section was written on the back of such paper.)
The special thing about VisiCalc was not that it was the first row/column tabulation program. There were many such programs of various sorts prior to VisiCalc.
The things that are viewed as special about VisiCalc, as I understand it, include:
It was interactive in a WYSIWYG way:
Point to change a value
Instant automatic recalculation based on formulas stored in the cells referencing other cells
The input, definition, formatting and output were all merged into a natural, program-by-example interface
The UI and design has stayed with us. For example, the combination of:
Labels and formulas distinguished by first character typed
Minimal-keystroke formula entry: type "1.1*" then move the cursor then type "-1" to enter a formula. The goal here was to make it worth using the first time you needed an answer (instead of a calculator and paper) in a way that would let you benefit the next time by just changing a few values and recalculating. If the input style did not let you "teach" the computer by doing the calculation, people may not have used it.
A1, B1, SUM(A1..A7)
Numeric and text formatting
Status and formula lines
Replication of any range to any other range, with absolute and relative references
It ran on an affordable, personal machine, so it was accessible to all. (Most prior financial forecasting tools ran on timesharing systems and cost >$1000/month or used card input.)
It shipped and was successfully marketed to the right people and was widely used by them productively and was recommended by them to their friends.
It was a catalyst to the personal computer industry, by introducing personal computers to the financial and business communities and others. Many people cite VisiCalc as the thing that turned them on to the interactive possibilities of computers.
Most subsequent spreadsheets are directly descended from it; so much so that a user's VisiCalc data files could be moved ahead from product to product without much change or retyping.
It is the combination of all these things that made VisiCalc unique and special.
In his book The Third Apple [link to Amazon], Jean-Louis Gassée (then of Apple Computer, now of Be, Inc.) wrote about his February 1981 first encounter with VisiCalc. In the chapter "In the Bridal Suite at the Hilton" he says:
I don't know why, but I was assigned the bridal suite... It was in this inimitable decor that I married Visicalc... So Visicalc offered itself to me on the screen: a sheet of ruled paper with rows and columns... So Visicalc was the thing I had dreamed of making ten years earlier... That was the day I realized that you didn't have to be a programmer any more to use a computer. Visicalc was a phenomenal revolution... Approximations, trial and error, simulations -- Visicalc is an intellectual modeling clay. It lets you program without knowing it.
The Third Apple, pages 23-29, translated from the original French
Bob Frankston, comparing VisiCalc to some early accounting programs, writes:
But VisiCalc was not an accounting program at all, it just made it possible for people to do accounting. Programs that were overly tuned for such function (Javelin, Lotus Improv, etc.) completely failed...What made VisiCalc novel was the ability to not only interact but have it learn by example. Again, VisiCalc doesn't summarize or do anything, it is just a tool to allow others to work out their ideas and reduce the tedium of repeating the same calculations.
David Reed, in response to seeing a draft of this article, writes:
The metaphor presented by VisiCalc was not just a "user interface" in the sense of a display and a bunch of commands, but gave an enormous amount of expressive power in the visual structure and in the context of natural interaction when constructing a formula or a collection of related formulas...I think the two most powerful key ideas that VisiCalc had were the following (and these did not appear in prior art, and were not properly understood by contemporary and even later systems like Target PlannerCalc, Analytica's Reflex, Multiplan, and Javelin):
Programming-by-example: typing in formulas where "variables" were indicated by pointing to and selecting other cells in the spreadsheet. These "cell references" were included in formulas and when they changed, the value of the formula would recalculate based on the new value. Since formulas could be defined in cycles, etc. a natural looping/iteration could be constructed.
The "Replicate" command, which allowed the construction of iterative calculations in a natural way by adjusting the formula cell references either to follow "relatively" to the displacement of the formula or "absolutely" to define a global parameter that affected all cells.
The nice thing about the "replicate" style of iteration construction is that it allows for regularity, while not requiring it (any individual formula in the repetitive structure could be overridden as a special case).
The financial modeling tools that constructed arrays with a separate formula definition language didn't have anywhere near the flexibility of the VisiCalc metaphor. And they didn't have "programming by example".
Also rather neat was the "range" concept, which allowed any rectangular subgrid to serve as the operand to a variety of aggregate functions. Range references, unlike traditional programming arrays, could overlap, and also followed the relative/absolute rules when formulas containing them were copied. This allowed for very interesting and powerful recurrence relations to be represented naturally and obviously in the programming-by-example metaphor.
The programs prior to VisiCalc, including the programs at RapidData and Interactive Data Corporation, were important, but it was the "personal computerness" of VisiCalc that seems to be what most people find important. It, along with word processing (one of the product classes from which it was derived), helped define the "personal productivity" segment.
VisiCalc's User Interface influence has survived many years
Some screenshots may help show how much has survived. Here is a screen shot of VisiCalc on the IBM PC which was virtually identical to the version on the Apple ][:
The screen has a command area at the top where the cursor location was displayed, as well as the formatting setting for the cell and its formula. The main area has rows and columns labeled A, B, C across the top and 1, 2, 3 down the side. The cursor highlights a cell which displays the calculated results. There are commands, including those to blank a cell, clear the sheet, delete, insert, and move rows/columns, edit the contents of a cell, format a cell for text or numbers as left/right justified, currency, etc., global settings for all cells for formatting, etc., printing, copying of cells with the copies modifying the references to be absolute or relative, save and load, locked titles synchronized with the scrolling, and multiple windows into the same data. The entire sheet was stored in a single file. To change a cell, you move the cursor to it with the arrow keys (the original design used a mouse, but the PCs of that day did not have a mouse) and then type the new value. The first character of what you type determines how the contents are interpreted.
Here is a screenshot of Microsoft Excel 97, shipped about 18 years after the first VisiCalc:
There is a command area at the top, with similar commands. In fact, the "/" key enters the command mode just like VisiCalc, and "/IR" inserts a row and "/WS" splits the window at the cursor, similar to VisiCalc. The format of the current cell is displayed, as is the location and the contents. The main area is labeled the same and works very similarly. To change a cell, you move the cursor to it with the arrow keys and then type a new value.
Much of the reason for this similarity comes from the strength of the design but also from the fact that Excel (the dominant spreadsheet of the late 1990's) needed to follow the conventions of 1-2-3, the spreadsheet that was most important during the major adoption years of PCs. (1-2-3 was actually one of the reasons for that major adoption, I believe. The relationship between 1-2-3 and VisiCalc is a whole other topic which I won't get into in this piece.) 1-2-3 followed, by choice where the developers felt it was best, many of the conventions of VisiCalc. (They didn't mindlessly follow them all, of course.)
To put this in perspective, here is the standard file listing program of VisiCalc's day on the normal command environment (similar to many systems, like OS/8 from DEC, Unix, etc.):
You typed something like "dir *.com" after a ">" command prompt, then got a simulated "printout" that scrolled, and then another ">" prompt. To rename a file, you type a new command, such as "rename oldname.ext newname.ext" (or is it "rename newname.ext oldname.ext"?).
Here is the common way today to find files:
You can scroll through a hierarchy, sort by clicking on column headings, rename a file by pointing to it and typing, etc. Quite a change.
Hopefully this long discourse is helpful in putting VisiCalc in perspective.
© Copyright 1999-2015 by Daniel Bricklin
All Rights Reserved.