Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Spreadsheet implementation technology : basics and extensions
Sestoft P., The MIT Press, Cambridge, MA, 2014. 336 pp. Type: Book (978-0-262526-64-7)
Date Reviewed: Mar 10 2015

Although this excellent and absorbing book is about the technology that underlies the implementation of spreadsheets, reading it has done much to enhance my understanding, confidence, and comfort in spreadsheet use--by virtue of my having gained much insight into what is, or might beneficially be, “under the hood”--and the thought with which it is, or might be, designed.

The risks in using spreadsheets, especially for the untutored (in other than mouse-clicking and button-pushing) such as myself, are greatly amplified versions of those risks in the use of calculators in the latter’s heyday. The spreadsheet-as-black-box leaves even the very careful user with the uncomfortable feeling that, among several other things, significant loss-of-numerical-significance errors have vitiated the results, even if these “look good.” (To be fair, the same concern extends to algorithms that are realized quasi-sequentially in procedural languages, but these don’t confront the programmer straight “out of the box” with the massive parallelism that characterizes spreadsheets.)

As I understand it, VisiCalc was the first spreadsheet software for personal computers; it was available to me on my TRS-80 Model II (circa 1980), as it was available to Apple II users. (I believe Apple II was VisiCalc’s original personal computer platform.) My use of spreadsheets from then to the present day--VisiCalc, Lotus, Excel, and OpenOffice--can best be described as sporadic, unenthusiastic, uncomfortable, and comparatively sparse over the years, partially due to personal taste reasons along several axes: the huge increase in dimensions, that is, the number of rows, columns, and sheets; the explosion of features, such as conditional evaluation and inter-sheet dependency options; and the rules for display, including hidden columns and multi-coloring. (Though I don’t fancy myself to be in the majority, I also don’t think I’m alone in this.) The quiz show factoid that spreadsheets are a (sensationally popular) realization of functional programming--which is a very good thing by virtue of its lack of the side effects that characterize procedural language programming--serves to mitigate, but not eliminate, the cognitive burden on the spreadsheet programmer when she strays too far north, south, east, or west from the current cell. To paraphrase former Speaker of the House Tip O’Neill, “All cognition is local.”

But I am not the only one for whom the use of medium-to-large spreadsheets engenders anticipation of (mostly hidden) incorrect results that look correct and are carried as inputs to further calculations, that is, more rows, columns, and perhaps sheets. Aside from the nearly billion or so pure spreadsheet users such as myself, there is, for example, the European Spreadsheet Risks Interest Group (EuSpRIG.org) that will hold its 16th annual conference in July of this year. The impetus is, of course, the accumulation of real-world “consequent damages” attendant upon the unchecked (in both senses of the word) use of spreadsheets.

This 11-chapter book is well sized, well written, and well organized. Its pages also bring fundamental parts of computer science (CS) to the reader--an attribute that is a pleasant surprise in a book with “spreadsheet” in its title. The preface lists these as “pedagogical side benefits” of this book, and I certainly endorse that characterization. Figure 1.10, for example, displays (the semantics of) spreadsheet formula evaluation rules using inference-rule notation (similar to that found in, for example, Huth and Ryan [1]), complete with premises, conclusions, semantic turnstiles, and such set-theoretic predicates as set-membership. The rules are labeled, and are clearly and efficiently explained in the text. Abstract syntax of formulas is significant in the theory that is advanced in this book. There are sections treating conversion from concrete text and compiling abstract syntax to bytecode. Other CS pillars include object-oriented programming; recursive function calls; partial evaluation of functions of more than one variable for evaluation efficiency’s sake; and the IEEE standard for floating point.

The text can be said to center around Corecalc, “a core implementation of essential spreadsheet functionality for making practical experiments” in extending current spreadsheet capabilities. Chapters 2 to 5 explicate Corecalc and its design decisions. Chapters 6 through 9 describe Funcalc, Corecalc’s extension that enables spreadsheet programmers to define and compile their own sheet-defined functions, thus freeing users from the confines of built-in functions and from dependence on supplementary external languages such as Java or Python. Among other things, issues of (re)evaluation efficiency (upon changes in cell value(s)) receive effective attention. Portions of very elegant C# code from Corecalc/Funcalc implementations are well placed throughout the book. Complete documentation and implementation are available from the IT University of Copenhagen under an MIT-style, no-fee license (http://www.itu.dk/people/sestoft/funcalc/).

Appendix B, “Patents and Applications,” is another “pedagogical side benefit” of this exceptional book, as it saves the reader much time “plowing through” the turgid literature on this quintessentially mundane subject.

This book is very good reading, even for those of us who are not spreadsheet product developers.

Reviewer:  George Hacken Review #: CR143229 (1506-0453)
1) Huth, M.; Ryan, M. Logic in computer science (2nd ed.). Cambridge University Press, New York, NY, 2004.
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Spreadsheets (H.4.1 ... )
 
 
Spreadsheets (K.8.1 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Spreadsheets": Date
Intentions in the coordinated generation of graphics and text from tabular data
Fasciano M., Lapalme G. Knowledge and Information Systems 2(3): 310-339, 2000. Type: Article
Jan 31 2003
Graphical definitions: expanding spreadsheet languages through direct manipulation and gestures
Burnett M., Gottfried H. ACM Transactions on Computer-Human Interaction 5(1): 1-33, 1998. Type: Article
Sep 1 1998
A complete guide to PivotTables: a visual approach
Cornell P., APress, LP, Berkeley, CA, 2004.  368, Type: Book (9781590594322)
Jan 6 2006
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy