HISTORY OF SPREADSHEETS

WRS Page 1

Spreadsheets - the TRUE history of fully interactive spreadsheets & JIT
This website
"A full five to six years before Bricklin and Visicalc" 
(HYPONE is phenyl-methyl-acetone (C 6 H 5 .CO.CH 3 ))
built using
DAVID JOHNSTON
News results for "michael jackson"
ICI, Rocksavage, Cheshire
(The new owners of ICI)
The birthplace of the first very powerful early shared public spreadsheet in 1974
3 years before APPLE II launch (1977)
7 years before IBM PC launch (Aug 1981)
i.e. Spreadsheets were not an 'invention' in 1979, since fully interactive, WYSIWYG spreadsheets were already in commercial use in 1974 on mainframes.
sex
Copy of 1974 Manual
PAGE 1  (of 8)
Imperial Chemical Industries (ICI) -  Mond Division
Brunner House, Northwich & Rocksavage Works, Cheshire, England 
The "Product"
The "Works Records System"
Features:
3-D spreadsheet (time = 3rd dimension)
separation of data / calculation / Input/output
interactive, multi-user, networked
backup/recovery
security
"Remote Data" access
Database of aged values (hour/day/week/month/Qtr/year)
Built-in integrity checking (eg units attribute,consistency)
Row/column headers in Dynamic Tables
Uniquely identifiable (system-wide) data items
Histograms, WYSIWYG  views, reports, cross references
Timeframe
In use from 1974-2001
The Team:
Extant? 
Other products
Designer: 
Dr. Robert Mais, employee of ICI, retired
yes
Analyst:
Graham Johnson. employee of ICI, retired
yes
Programmers:
Ken Dakin
Freelance Consultant
yes
Command-CICS
Philip Lath
ICI
?
Colin Done
ICI
yes
Other 1
contract
?
"Atestees"
6
(RM,GJ,KD,CD,PR,DP)
yes, 6 +
Technical:
Links
Architecture:
IBM 370
(compatible with z/Architecture)
3270 "dumb" terminals  
Note 1.
Operating System
MVS 
TP Monitor
CICS Macro level  (pre VS,  XA,  ESA)
Language:
IBM 370 Assembler
Librarian manager
Panvalet
Database:
ADABAS
Techniques
Just-in-time compilation (= dynamic "on-the-fly" compile)
Note 2.
Use of combinatorial, re-entrant machine-code "snippets"
Dynamically built, re-entrant executable code
Optimizing Incremental compiler
(Similar to Dynamic programming algorithmic technique
utilizing "memoization" but also - significantly - in conjunction with 
Note 3.
"referentially transparent" (deterministic) self-modifying code
- eliminating  both time & space penalties)
Compression
segmented system messages
Heavily "Table driven" code (Assembler 'Control tables') including..
similar to "Threaded code" technique, using pre-assembled indexed sub-routine calls.
Custom built, multi dimensional
Branch Tables (super efficient Perfect Hash technique
..."No computer experience or knowledge is needed to do this. An Application System can be built and modified on-line, by the user on his own VDU terminal remote from the main computer without involving computer staff at all"...
- in effect a super-efficient "direct threading" indexed "threaded-code" methodology)
Binary search (where appropriate)
Self optimizing fast-paths
Code self re-organized according to options & usage (reflection)
Double precision Floating point
WRS Terminology
Native 3270 protocol (no BMS)
(SBA/SF/RA etc)
Application
one or more functionally complete Input/Output displays 
`````Q
Direct access files (Data held on flat BDAM files)
No keyed lookup
VDU
Visual display unit        (IBM/3270 Model 2, 24 lines x 80 bytes)
ADABAS "relational" database (specifications only)
only for setup & "program code"
Shunting yard algorithm
Asynchronous background tasks
see CICS asynchronous transaction processing - (Transient Data)
Updating down the line DIR's
Function group   
one of more lines of formulae
100% Pseudo conversational transactions
Automatic parallel recalculation of dependent values ('Dataflow')
Later Software technologies using similar techniques:
"DIR" 
 a unique "named cell"    (literally a "Direct Input Record")
Notes (sic)
- all named cells were 'global' and accessible from any other spreadsheet 
*1
"...a porting of Lotus 1-2-3 to mainframes with 3279 [4 or 7 color 3270] screens did not meet success  
INPUT/OUTPUT Displays   
The user "view" of the data
because its programmers were not able to properly adapt the spreadsheet's user interface 
 
(i.e. a single sheet that could incorporate data from anywhere in the system 
to a "screen at a time" rather than "character at a time" device" (Wikipedia).
-just as with Remote data in on-line spreadsheets like "Editgrid"  today)
*2
"...Dynamic translation was pioneered [?] by the commercial Smalltalk implementation  
REPORT 
printed view of the data  - designed by users online (WYSIWYG) and  
currently known as VisualWorks, in the early 1980s; various Lisp implementations like Emacs picked the technique up quickly"
not necessarily the same as on a "spreadsheet"/input/output view.
(Wikipedia)
*3
"....Memoization was explored as a parsing strategy in 1991 by Norvig,
TITLE
Column or row heading
who demonstrated that an algorithm similar to the use of dynamic programming 
and state-sets in Earley's algorithm (1970), and tables in the CYK algorithm of Cocke, 
CHARACTERISTIC
Component part of a "named" data value  (eg Kilogram,Tank level,Stock)
Younger and Kasami, could be generated by introducing automatic memoization 
to a simple backtracking recursive descent parser to solve the problem of exponential time complexity.
 The basic idea in Norvig’s approach is that when a parser is applied to the input,
 the result is stored in a memotable for subsequent reuse if the same parser is ever reapplied to the same input.
 It was again explored in the context of parsing in 1995 by Johnson and Dörre. In 2002,
 it was examined in considerable depth by Ford in the form called packrat parsing" (Wikibooks - "Memoization")
Questions and Answers
Answer
Was the Works Records System true "WYSIWYG" ?
Yes
Were there columns & rows ?
Yes
("free" layout)
Was the System truly interactive ?
Yes
sub-second responses
Were calculations automatically performed  ?
Yes
(including aged)
Could multiple users view & update spreadsheets ?
Yes
design criteria
Could non-programmers create a S/sheet (application) ?
Yes
design criteria
Were there "named" cells ?
Yes
(6 "levels")
Could values from other S/sheets be incorporated ?
Yes
any
Was historical data stored in database ?
Yes
by time period, shift, day, week, month, year
Was summary data available from aged data ?
Yes
by time period,auto summation
Was backup/recovery automatic & systemwide ?
Yes
application & daily full disk copy
Was user security built-in ?
Yes
Were there 'unit' attributes  (pounds/kilograms etc) ?
Yes
still not universally adopted 35 years later !
Were logically invalid operations prevented (eg lbs x lbs) ?
Yes
""
Were column headers/row headings re-useable ?
Yes
globally & 'cross application'
Could global changes be made to titles/headings ?
Yes
(see also multi-lingual)
Was the system ever used outside chemical factoriies ?
Yes
("secret" union payrise negotiations)
Were there "graphs" available ?
Yes
histograms only since no  GUI
Was there a print report capability ?
Yes
WYSIWYG with on screen previews
Was the system ever marketed commercially ?
No
ICI internal use only
How long was the System used for
27 years
(1974-2001)
What language was the System written in ?
Assembler, re-entrant code
Would WRS compile/execute today ?
Yes
100% IBM Z/390 and Z/Architecture compatible, (no requirement to re-assemble)
Were real-time calculations interpreted or machine code ?
machine code
Did it really use Just-in-time compilation ?
Yes 
Was the code self-modifying?
Yes
(dynamic Memoization & self optimizing fast paths)
Approximately how many lines of code were there ?
< 10,000
(Control table driven)
What was the precision of data/ calculations ?
64 bit (double precision) floating point
Were logical functions allowed ?
Yes
Multi-line formulae ?
Yes
Cross reference of formulae (reports) ?
Yes
Multi- lingual ?
Yes
(all text user modifiable)
Multi-currency ?
Yes
(attributes user defined)
Were many of above features incorporated into Visicalc ?
No
(suggestive of wholy independant & later "re-invention" by Bricklin)
Was WRS ported to PC or Apple ?
No
it was created 6 years before the IBM PC, and between 3 and 6 years before Apple II
Did WRS have a GUI ?
No
Limited to defined field attributes, text/numerics, (later 7 colors & reverse video, condtl. formatting)
(hardware limitation, graphic devices were not generally available in 1974)
Was any part of S/S design 'ported' to other smaller hardware?
Yes
by ICI, to Commodore PET 2001 in 1977 - calculator burnt to ROM chip
Did the System use OOP ?
No
100% procedural, 100% modular, 100% Control table driven
Further information /correspondence
via Editgrid.com  FORUM - "Ken" 
Former Wikipedia "Spreadsheet" article as on 4th June 2007  (censored by Wikipedia editors after criticism by Dan Bricklin, author of Visicalc!)
See 'talk' page on current wikipedia 'Spreadsheet' article for 'discussion' ===>
Demo?
sorry no, but this mockup on Editgrid gives the general idea
WRS performance Facts
average downstream bytes to update one cell on remote 3270 workstation
16 bytes
uncompressed (assumes 10 byte data content)
average number of bytes upstream when single cell is changed
14 bytes
uncompressed
approximate # machine instructions to execute - for example, A=B+C*(D/E)
5
including fetch & save
approximate size of object code snippet ('binary') for above example
24 bytes
4 bytes per F/P machine instruction (F/P = floating point)
approximate floating point instructions/ second on (an earlier generation) 360
330,000
no timing data avail for IBM/370 or later upward compatible hardware
exact number of bytes needed to store a single F/P data cell on BDAM file
8
# formula required to store, for example, >46 years of historic monthly data
0
builtin
# machine instructions to stack >46 years of historic monthly data (MVCL)
1
one MVCL instr.
# instructions required to validate numeric input from 3270
0
hardware feature
# additional instructions required for dynamic v. compiled Fortran algorithm
< 0
more optimized than compiled Fortran
additional overhead retrieving data from another application (remote data)
0
exactly same cost as local
Authors comments (& rant)
 
It was common practice in the 1960's/70's for companies to compete on IT fronts as well as normal commercial lines. If a corporation had talented in-house IT staff, that company could compete better than the ones who either couldn't afford the best or who didn't search for the best (just as in design, production & marketing). Somewhere along the way the majority of company executives 'lost their way' and the current awful state of IT is a direct result of this neglect and over zealous sales of 'off the shelf' solutions. Company intelligence is more valuable than mere assets - it is the very stuff of competiteveness. ICI never shared with others the advantages they gained through intelligent IT Systems and became, as a result, for a very long time, true leaders in their field. Competitiveness creates excellence and advances civilization. One-product Operating Systems and all embracing application Office suites create stagnation and encourage viruses & bugs. If it were not so we would not be where we are today - having to put up with poor quality software.
See also:
Computer myths
Myth
Reality
Mainframes are 'dead'
They are now called servers, web based applications are returning to the mainframe 'dinosaur' paradigm
Optimizing compilers produce code that is as efficient as a good programmers code
Human ingenuity will always win, HLL also carries an " Abstraction penalty" (see Kuketayev)
Programs written in "C" language can produce code that is as efficient as Assember language programmers
simply untrue, benchmarks can demonstrate this consistently
Oblect-oriented programming (OOP) 'paradigm' is somehow superior to 'conventional' programming
zero evidence; unproven; creates additional problems, increased overheads
Self-modifying code is intrinsically bad
used in kernels, compilers , JIT; reduces lines of code (& therefore maintenance) considerably
Computers are so fast today there is no need to write code efficiently
inefficient/lazy programming often negates advances in hardware speedups
Benchmarks are not meaningfull for todays algorithms/machines  because of ..(pipelining/predictive branching et al)
even simple benchmarks provide insight into inefficiencies
Automatic garbage collection is superior to good  program design and also prevents dangling pointers / Storage violations
Garbage collection exists to partly offset poor program design (at significant cost) ;  the algorithm writer should always fully understand context 
Assembler language always produces larger number of lines of code
Assembler can often produce very concise and shorter code, tables & other structures
Only high level languages have 'macros' & pre-processors
Conditional Assembler macros & pre-processors have existed more than 40 years
(Some supposed high level languages lack even the most basic pre-processors)
It is not necessary for HLL programmers to also learn assembly language
Abstraction penalty isolates programmers from reality and consequences
Learning assembler confers many advantages in terms of insights into efficient code
Additional notes:
Some elements of the Works Records System were constructed with the authors own pre-existing modules based on earlier
work on a BATS* TP System and IBM 2260 terminals in 1969/70. This was not a commercial application but essentially performed
the function of a symbolic 'pocket calculator' . Inputting x = (a + b) *  c /(e-d) caused several requests for 
 the variable values (a through e) producing answer x. It was fully interactive and networked and was produced at
Cheshire County Council for amusement/ personal use.
* BATS was a BTAM based teleprocessing system supporting 2260 visual display terminals
A few favourite quotes
"The best way to see the future is to create it" (unknown)
"The only way to discover the limits of the possible is to go beyond them into the impossible" (unknown)
"If you can dream it, you can do it" (Walt Disney)
"A moment's insight is sometimes worth a lifetime of experience" (Ernest Holmes)
"Do not follow the common path. Go where there is no path and leave a trail" (unknown)

Comparison

Comparison of spreadsheet software
Comparison of "BCL" (1962) ,AUTOPLAN (1968)  "LANPAR" (1971), "Works Records System" (1974) , "APLDOT" (1976) , "Visicalc" (1979) and Lotus-1-2-3 (1983) , "Execucalc" (1985)
Mainframe based
PC based
Mainframe
Feature
BCL
Autoplan
LANPAR
WRS
APLDOT
Visicalc
Lotus 1-2-3
Execucalc*
=======================
1962
1968
1971
1974
1976
1979
1983
1985
Batch
YES
YES
YES
NO
YES
NO
NO
NO
WIKIPEDIA: Spreadsheet article -" VISICALC" states: "The spreadsheet concept became widely known in the late 1970s and early 1980s because of Dan Bricklin's implementation of VisiCalc. VisiCalc was the first spreadsheet that combined all essential features of modern spreadsheet applications, such as WYSIWYG interactive user interface, automatic recalculation, status and formula lines, range copying with relative and absolute references, formula building by selecting referenced cells. PC World magazine has called VisiCalc the first electronic spreadsheet. 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 the blackboard as the model to view results of underlying formulas. His idea became VisiCalc, the first application that turned the personal computer from a hobby for computer enthusiasts into a business tool."
Time Shared
NO
NO
YES
YES
NO
NO
NO
?
Fully Interactive
NO
NO
NO
YES
YES
YES
YES
YES
used visual display units
NO
NO
NO
YES
NO
YES
YES
YES
WYSIWYG cells
NO
NO
NO
YES
NO
YES
YES
YES
Var col width
n/a
n/a
n/a
YES
n/a
NO
NO
YES
Networked
NO
NO
NO
YES
NO
NO
NO
YES
Multi-user (shared data)
NO
NO
NO
YES
NO
NO
NO
?
Automatic recalculation**
YES
YES
YES
YES
YES
NO
NO
YES
Natural order recalculation
NO
NO
YES
YES
NO
NO
NO
?
Separation of data/calc/input
?
?
?
YES
?
NO
NO
NO
Units attribute
?
?
?
YES
?
NO
NO
NO
External inputs
?
?
?
YES
?
NO
NO
?
Named cells
n/a
YES
n/a
YES
n/a
NO
YES
NO
Remote workbooks
NO
NO
NO
YES
NO
NO
NO
NO
Multi-dimensional (time)
NO
NO
NO
YES
NO
NO
NO
NO
Auto summation over time
NO
NO
NO
YES
NO
NO
NO
NO
A batch spreadsheet is conceptually indistinguishable from a compiler plus input data. The distinguishing characteristics of a modern spreadsheet are 1) WYSIWYG 'cells' 2) interactive 3) formulae linking cells
Histograms
NO
NO
NO
YES
NO
NO
NO
YES
Logical expressions
NO
NO
NO
YES
NO
NO
YES
YES
Global text library
NO
NO
NO
YES
NO
NO
NO
NO
Automatic data backup
NO
NO
NO
YES
NO
NO
NO
?
Modern day spreadsheets, lacking units attributes, still do not prevent illogical operations such as feet times kilograms. Oh dear ! [See http://www.newscientist.com/article/dn17350-nasa-criticised-for-sticking-to-imperial-units.html]
Automatic recovery
NO
NO
NO
YES
NO
NO
NO
?
Free format screen layout
?
?
?
YES
?
RC
RC
NO
Asynchronous updates**
NO
NO
NO
YES
NO
NO
NO
NO
Built-in security
NO
NO
NO
YES
NO
NO
NO
?
JIT & memoization used
NO
NO
NO
YES
NO
NO
NO
NO
Source Language
Assembler
integer basic
APL
For a comparison of PC/Mac based early spreadsheets and a benchmark using "Savage" test , from Byte Summer 1987 issue, pp. 69-75, see:-
Note: these comparisons use some criteria that are PC/Mac orientated (eg expanded memory, arithmetic coprocessor) and compared available systems that were in use 13 years after WRS
*Execucalc (1985) description
**The WRS System automatically performed recalculation for dependant cells in other applications - asynchronously in background mode

WRS Page 2

WRS Page 3

WRS Page 4

WRS Page 5

WRS Page 6

WRS Page 7

WRS Page 8

screenshot

3270 photo

Early 3278 terminal
circa 1972
model 1
12 x 40 columns
model 2
24 x 80  ""
(illustrated)
model 2
24 x 80 "VID"
graphic capability in part of screen
Features:
byte addressable; any byte could be overlaid by subsequent write
read "modified" allowed only changed data to be read
full buffer read also available (mainly for screen saving during debugging)
numeric &  protected field attributes
later (3279) colour displays had basic colours plus reverse video
Replaced:
2260 display terminal

IBM 370/145

IBM 370/145 Console
<===
Apollo meterorite shielding ?
Built-in Obsolescence?
The rust illustrated here was an optional 'extra'
available only to pre-owned hardware buyers !
(Todays computers of course become obsolete through BIO techniques well before they have
time to rust!)
Conspiracy ?
Microcoded instructions enabled IBM to speed-up or slow down customers computers at will - which do you think they chose and why?
It is said that this same computer architecture enabled the Apollo astronauts to reach the moon
(-since it has been superceded by PC's, Bill Gates [et al], we have never been back -  maybe it's true then?)
New technology
The 'floppy' disks alongside were only used by engineers to update the microcoded 370 internals.
Real  users sadly had to make do with bulky 1600bpi two spool tape decks the size of commercial scale refrigerators
and tape libraries the size of the Library of Congress (litigation section).
It is often claimed that UPS became so big by shipping IBM backup tapes back & forth across the USA
The 1970's fuel crisis was actually caused by the additional petroleum used by them - but blamed on OPEC for political reasons
1970's MP3 ?
Groovy computer operators of the early 70's who discovered the discs thought the "Sony minidisc" music 'realy cool man'
It has never been reported that both Lee Harvey Oswald and Mark David Chapman were once trained as IBM computer operators
NO ash trays?
Ash trays were only supplied to sites in France and supplied as left hand or right hand version (to console) 
extra air filters came as standard in the same carton