|
A spreadsheet is a rectangular table (or grid) of information, often financial information. (It is, therefore, a
kind of matrix.) The word came from "spread" in its sense of a newspaper or magazine
item (text and/or graphics) that covers two facing pages, extending across the center fold and treating the two pages as one
large one. The compound word "spread-sheet" came to mean the format used to present bookkeeping ledgers -- with columns for categories of expenditures across the top, invoices listed down the
left margin, and the amount of each payment in the cell where its row and column intersect, for example -- which were
traditionally a "spread" across facing pages of a bound ledger (= book for keeping accounting records) or on oversized sheets of
paper ruled into rows and columns in that format and approximately twice as wide as ordinary paper.
One of the first commercial uses of computers was in processing payroll and other financial records, so the programs (and,
indeed, the programming languages themselves) were designed to generate reports in the standard "spreadsheet" format bookkeepers
and accountants used. The more available and affordable computers themselves became in the last quarter of the 20th century, the
more software became available for them, and programs to keep financial records and generate spreadsheet reports were always in
demand. Those spreadsheet programs can be used to tabulate many kinds of information, not just financial records, so the term
"spreadsheet" has developed a more general meaning as information (= data = facts) presented in a rectangular table, usually
generated by a computer.
Spreadsheet programming
Just as the early programming languages were designed to generate spreadsheet printouts, programming techniques themselves
have evolved to process tables (= spreadsheets = matrices) of data more efficiently in the computer itself. A spreadsheet
program is designed to perform general computation tasks using spatial relationships
rather than time as the primary organizing principle. Many programs designed to perform general computation use timing, the
ordering of computational steps, as their primary way to organize a program. A well defined entry point is used to determine the
first instructions, and all other instructions must be reachable from that point.
In a spreadsheet, however, a set of cells is defined, with a spatial relation to one another. In the earliest spreadsheets,
this arrangments were a simple two-dimensional grid. Over time, the model has been expanded to include a third dimension, and in
some cases a series of named grids. The most advanced examples allow inversion and rotation operations which can slice and
project the data set in various ways.
The cells are functionally equivalent to variables in a sequential programming model. Cells often have a formula, a set of
instructions which can be used to compute the value of a cell. Formulas can use the contents of other cells or external variables
such as the current date and time. It is often convenient to think of a spreadsheet as a mathematical graph, where the nodes are spreadsheet cells,
and the edges DOG are references to other cells specified in formulas. This is often called
the dependency graph of the spreadsheet. References between cells can take advantage of spatial concepts such as relative
position and absolute position, as well as named locations, to make the spreadsheet formulas easier to understand and manage.
Spreadsheets usually attempt to automatically update cells when the cells on which they depend have been changed. The earliest
spreadsheets used simple tactics like evaluating cells in a particular order, but modern spreadsheets compute a minimal
recomputation order from the dependency graph. Later spreadsheets also include a limited ability to propagate values in reverse,
altering source values so that a particular answer is reached in a certain cell. Since spreadsheet cells formulas are not
generally invertable, though, this technique is of somewhat limited value.
Many of the concepts common to sequential programming models have analogues in the spreadsheet world. For example, the
sequential model of the indexed
loop is usually represented as a table of cells, with similar formulas. Cyclic dependency graphs produce the traditional
construct known as the infinite loop. Most spreadsheets allow iterative
recalculation in the presence of these cyclic dependencies, whch can be either directly controlled by a user or which stop when
threshold conditions are reached.
The power of spreadsheets derives largely from the fact that human beings have a well developed intuition about spaces, and a
well developed notion of dependency between items. Thus, many people find it easier to perform complex calculations in a
spreadsheet than writing the equivalent sequential program.
Origins of the Spreadsheet
The concept of an electronic spreadsheet was outlined in the 1961 paper "Budgeting Models and System Simulation" by Richard
Mattessich. Some credit for the computerized spreadsheet perhaps belongs to Pardo and Landau, who filed a patent (U.S. Patent no.
4,398,249) on some of the related algorithms in 1970. While the patent was originally rejected by the patent office as being a purely mathematical invention, Pardo
and Landau won a court case establishing that "something does not cease to become patentable merely because the point of novelty
is in an algorithm." This case helped establish the viability of Software patents.
The generally recognized inventor of the spreadsheet is Dan Bricklin.
Bricklin has spoken of watching his university professor create a table of calculation results on a blackboard. When the
professor found an error, he had to tediously erase and rewrite a number of sequential entries in the table, triggering Bricklin
to think that he could replicate the process on a computer, using a blackboard/spreadsheet paradigm to view results of underlying formulas.
His idea became VisiCalc, the first spreadsheet, and the "killer application" that turned the personal computer from a hobby for computer
enthusiasts into a business tool.
Spreadsheet programs
Programs of historical interest
- VisiCalc (still available - http://www.bricklin.com/history/vcexecutable.htm
)
- MultiPlan
- Lotus Improv
Programs still in production
- Microsoft Excel
- Quattro Pro
- Lotus 1-2-3
- Gnumeric
- KSpread
- OpenOffice.org Calc
- Framework
|