Вы находитесь на странице: 1из 40

Spreadsheets - the TRUE history of fully interactive spreadsheets & JIT

"A full five to six yea

<a href="http://en.wikipedia.o

The birthplace of 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, as fully interactive spreadsheets were already in use in 1974
sex
Copy of 1974 Manual PAGE 1 (of 8)
..."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"...

WRS Terminology
Application one or more functionally complete Input/Output displays

VDU Visual display unit (IBM/3270 Model 2, 24 lines x 80 bytes)

Function group one of more lines of formulae

"DIR" a unique "named cell" (literally a "Direct Input Record")


- all named cells were 'global' and accessible from any other spreadsheet
INPUT/OUTPUT Displays The user "view" of the data
(i.e. a single sheet that could incorporate data from anywhere in the system
-just as with Remote data in on-line spreadsheets like "Editgrid" today)

REPORT printed view of the data - designed by users online (WYSIWYG) and
not necessarily the same as on a "spreadsheet"/input/output view.

TITLE Column or row heading

CHARACTERISTIC Component part of a "named" data value (eg Kilogram,Tank level,Stock)


"A full five to six years before Bricklin and Visicalc"
DAVID JOHNSTON

(The new owners of ICI)


<a href="http://en.wikipedia.org/wiki/Imperial_Chemical_Industries"
<a href="http://en.wikipedia.org/wiki/Akzo_Nobel"
target="_blank">WIKIPEDIA
target="_blank">WIKIPEDIA
article</a> article</a>

heets were already in use in 1974 on mainframes.

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:
Designer: Dr. Robert Mais, employee of ICI, retired
Analyst: Graham Johnson. employee of ICI, retired

Programmers: Ken Dakin Freelance Consultant


Philip Lath ICI
Colin Done ICI
Other 1 contract
"Atestees" 6 (RM,GJ,KD,CD,PR,DP)

Technical:
Architecture: IBM 370 (compatible with z/Architecture)
3270 "dumb" terminals
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)
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
"referentially transparent" (deterministic) self-modifying code
- eliminating both time & space penalties)
Compression
Heavily "Table driven" code (Assembler tables) including..
Branch Tables (super efficient Perfect Hash technique

- in effect a super-efficient "direct threading" indexed "threaded-code" methodology


Binary search (where appropriate)
Self optimizing fast-paths

Double precision Floating point


Native 3270 protocol (no BMS)

Direct access files (Data held on flat BDAM files)


ADABAS "relational" database (specifications only)
Shunting yard algorithm
Asynchronous background tasks
Later Software technologies using similar techniques:

Notes (sic)
*1 "...a porting of Lotus 1-2-3 to mainframes with 3279 [4 or 7 color 3270] screens did
because its programmers were not able to properly adapt the spreadsheet's user in
to a "screen at a time" rather than "character at a time" device" (Wikipedia).

*2 "...Dynamic translation was pioneered [?] by the commercial Smalltalk implementat


currently known as VisualWorks, in the early 1980s; various Lisp implementations l
(Wikipedia)
*3 "....Memoization was explored as a parsing strategy in 1991 by Norvig,
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 Cock
Younger and Kasami, could be generated by introducing automatic memoization
to a simple backtracking recursive descent parser to solve the problem of exponent
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
It was again explored in the context of parsing in 1995 by Johnson and Dörre. In 20
it was examined in considerable depth by Ford in the form called packrat parsing" (
Q&A
Was the Works Records System true "WYSIWYG" ?
Were there columns & rows ?
Was the System truly interactive ?
Were calculations automatically performed ?
Could multiple users view & update spreadsheets ?
Could non-programmers create a S/sheet (application) ?
Were there "named" cells ?
Could values from other S/sheets be incorporated ?
Was historical data stored in database ?
Was summary data available from aged data ?
Was backup/recovery automatic & systemwide ?
Was user security built-in ?
Were there 'unit' attributes (pounds/kilograms etc) ?
Were logically invalid operations prevented (eg lbs x lbs) ?
Were column headers/row headings re-useable ?
Could global changes be made to titles/headings ?
Was the system ever used outside chemical factoriies ?
Were there "graphs" available ?
Was there a print report capability ?
Was the system ever marketed commercially ?
How long was the System used for

What language was the System written in ?


Would WRS compile/execute today ?
Were real-time calculations interpreted or machine code ?
Did it really use Just-in-time compilation ?
Was the code self-modifying?
Approximately how many lines of code were there ?
What was the precision of data/ calculations ?
Were logical functions allowed ?
Multi-line formulae ?
Cross reference of formulae (reports) ?
Multi- lingual ?
Multi-currency ?
Were many of above features incorporated into Visicalc ?
Was WRS ported to PC or Apple ?

Did WRS have a GUI ?

Was any part of S/S design ported to other smaller hardware?


Further information /correspondence
via Editgrid.com FORUM - "Ken"
http://forum.editgrid.com/viewtopic.php?pid=3679

Demo? sorry no, but this mockup on Editgrid gives the general idea
http://www.editgrid.com/user/ken/WORKS_RECORDS_SYSTEM_MOCKUP

WRS performance Facts


average downstream bytes to update one cell on remote 3270 workstation
average number of bytes upstream when single cell is changed
approximate # machine instructions to execute - for example, A=B+C*(D/E)
approximate size of object code snippet ('binary') for above example
approximate floating point instructions/ second on (an earlier generation) 360
exact number of bytes needed to store a single F/P data cell on BDAM file
# formula required to store, for example, >46 years of historic monthly data
# machine instructions to stack >46 years of historic monthly data (MVCL)
# instructions required to validate numeric input from 3270
# additional instructions required for dynamic v. compiled Fortran algorithm
additional overhead retrieving data from another application (remote data)

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
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.
bel" target="_blank">WIKIPEDIA article</a>

Mond Division

ation / Input/output

(hour/day/week/month/Qtr/year)
(eg units attribute,consistency)

em-wide) data items


views, reports, cross references

Extant?
yes
yes

yes
?
yes
?
yes

Links
e with z/Architecture) <a href="http://en.wikipedia.org/wiki/System/370"
<a href="http://en.wikipedia.org/wiki/Z/Architecture"
target="_blank">IBM 370/14
<a href="http://www.columbia.edu/acis/history/3270.html"
<a href="http://en.wikipedia.org/wiki/IBM_3270"
target="_blank">3270
targe
im
<a href="http://en.wikipedia.org/wiki/MVS" target="_blank">IBM MVS Operating S
<a href="http://en.wikipedia.org/wiki/CICS"
http://cicswiki.org/cicswiki1/index.php?title=Quasi-reent
target="_blank">IBM CICS</a>
<a href="http://en.wikipedia.org/wiki/IBM_Basic_assembly_language" target="_
<a href="http://ca.com/us/products/product.aspx?id=1431" target="_blank">P
<a href="http://en.wikipedia.org/wiki/Adabas" target="_blank">ADABAS Wikipe
= dynamic "on-the-fly" compile) <a href="http://en.wikipedia.org/wiki/Just-in-time_compilation" target="_blank">JI
entrant machine-code "snippets"
ant executable code http://en.wikipedia.org/wiki/Reentrant
<a href="http://en.wikipedia.org/wiki/Incremental_compiler" target="_blank">In
amming algorithmic technique http://en.wikibooks.org/wiki/Algorithms/Chapter_6
t also - significantly - in conjunction with <a href="http://en.wikipedia.org/wiki/Memoization" target="_blank">Memoizatio
(deterministic) self-modifying code http://en.wikipedia.org/wiki/Referential_transparency_%28computer_science%29
http://en.wikipedia.org/wiki/Self-modifying_code
segmented system messages
de (Assembler tables) including.. similar to "Threaded code" technique, using pre-assembled indexed sub-routine call
cient Perfect Hash technique <a href="http://en.wikipedia.org/wiki/Hash_function"
http://en.wikibooks.org/wiki/360_Assembly/Branch_Inst
target="_blank">Hash functio
http://en.wikipedia.org/wiki/Jump_table
t "direct threading" indexed "threaded-code" methodology)
http://en.wikipedia.org/wiki/Threaded_code_compiler
<a href="http://en.wikipedia.org/wiki/Binary_search" target="_blank">Binary searc
Code self re-organized according to options & usage (reflection)
<a href="http://en.wikipedia.org/wiki/Reflection_(computation)" target="_blank">R
<a href="http://en.wikipedia.org/wiki/Floating_point" target="_blank">Wikipedia F

held on flat BDAM files) <a href="http://en.wikipedia.org/wiki/Flat_file" target="_blank">Flat file</a>


base (specifications only)
http://en.wikipedia.org/wiki/Reverse_Polish_notation
see CICS asynchronous transaction processing - (Transient Data)

3 to mainframes with 3279 [4 or 7 color 3270] screens did not meet success
were not able to properly adapt the spreadsheet's user interface
her than "character at a time" device" (Wikipedia).

as pioneered [?] by the commercial Smalltalk implementation


Works, in the early 1980s; various Lisp implementations like Emacs picked the technique up quickly"

ored as a parsing strategy in 1991 by Norvig,


n algorithm similar to the use of dynamic programming
algorithm (1970), and tables in the CYK algorithm of Cocke,
uld be generated by introducing automatic memoization
ecursive descent parser to solve the problem of exponential time complexity.
s approach is that when a parser is applied to the input,
memotable for subsequent reuse if the same parser is ever reapplied to the same input.
he context of parsing in 1995 by Johnson and Dörre. In 2002,
derable depth by Ford in the form called packrat parsing" (Wikibooks - "Memoization")
Answer
System true "WYSIWYG" ? Yes
Yes ("free" layout)
Yes sub-second responses
atically performed ? Yes (including aged)
& update spreadsheets ? Yes design criteria
create a S/sheet (application) ? Yes design criteria
Yes (6 "levels")
S/sheets be incorporated ? Yes any
Yes by time period, shift, day, week, month, year
able from aged data ? Yes by time period,auto summation
omatic & systemwide ? Yes application & daily full disk copy
Yes
s (pounds/kilograms etc) ? Yes still not universally adopted 34 years later !
rations prevented (eg lbs x lbs) ? Yes ""
w headings re-useable ? Yes globally & 'cross application'
made to titles/headings ? Yes (see also multi-lingual)
d outside chemical factoriies ? Yes ("secret" union payrise negotiations)
Yes histograms only since no GUI
Yes WYSIWYG with on screen previews
keted commercially ? No ICI internal use only
27 years (1974-2001) http://www.the-adam.com/adam/rantrave/computers.htm
http://www.the-adam.com/adam/rantrave/postmodern.h
ystem written in ? Assembler, re-entrant code
Yes 100% IBM Z/390 compatible, (no requirement to re-compile)
ns interpreted or machine code ? machine code
Yes
Yes (dynamic Memoization & self optimizing fast paths)
lines of code were there ? < 10,000 (table driven)
f data/ calculations ? 64 bit (double precision) floating point
Yes
Yes
Yes
Yes (all text user modifiable)
Yes (attributes user defined)
ures incorporated into Visicalc ? No (suggestive of wholy independant & later "re-invention" by Bricklin)
No it was created 6 years before the IBM PC, and between 3 and 6 years

No Limited to defined field attributes, text/numerics, (later 7 colors & reve


(hardware limitation, graphic devices were not generally available in 1
gn ported to other smaller hardware? Yes by ICI, to Commodore PET 2001 in 1977 - calculator burnt to ROM ch

viewtopic.php?pid=3679

on Editgrid gives the general idea


ser/ken/WORKS_RECORDS_SYSTEM_MOCKUP

es to update one cell on remote 3270 workstation 16 bytes uncompressed


upstream when single cell is changed 14 bytes uncompressed
nstructions to execute - for example, A=B+C*(D/E) 5 including fetch & save
t code snippet ('binary') for above example 24 bytes 4 bytes per F/P machine instruction (F/P = floating point)
t instructions/ second on (an earlier generation) 360 330,000 <a href="http://www.bitsavers.org/pdf/ibm/360/A22_6
eded to store a single F/P data cell on BDAM file 8
e, for example, >46 years of historic monthly data 0 builtin
stack >46 years of historic monthly data (MVCL) 1 one MVCL instr.
validate numeric input from 3270 0 hardware feature
equired for dynamic v. compiled Fortran algorithm <0 more optimized than compiled Fortran
ving data from another application (remote data) 0 exactly same cost as local

n the 1960's/70's for companies to compete on IT


ommercial lines. If a corporation had talented in-
any could compete better than the ones who either
who didn't search for the best (just as in design,
Somewhere along the way the majority of company
and the current awful state of IT is a direct result of
ous sales of 'off the shelf' solutions. Company
ble than mere assets - it is the very stuff of
er shared with others the advantages they gained
ommercial lines. If a corporation had talented in-
any could compete better than the ones who either
who didn't search for the best (just as in design,
Somewhere along the way the majority of company
and the current awful state of IT is a direct result of
ous sales of 'off the shelf' solutions. Company
ble than mere assets - it is the very stuff of
er shared with others the advantages they gained
ems and became, as a result, for a very long time,
Competitiveness creates excellence and advances
Operating Systems and all embracing application
ation and encourage viruses & bugs. If it were not so
e are today - having to put up with poor quality
This website
built using

<a href="http://en.wikipedia.org/wiki/Z/Architecture" target="_blank">IBM Z/Architecture</a>


<a href="http://en.wikipedia.org/wiki/IBM_3270" target="_blank">IBM
Note 1. 3270 on wikipedia</a>
edia.org/wiki/MVS" target="_blank">IBM MVS Operating System</a>
http://cicswiki.org/cicswiki1/index.php?title=Quasi-reentrant
edia.org/wiki/IBM_Basic_assembly_language" target="_blank">IBM Assembler</a>
us/products/product.aspx?id=1431" target="_blank">Panvalet source code management</a>
edia.org/wiki/Adabas" target="_blank">ADABAS Wikipedia</a>
edia.org/wiki/Just-in-time_compilation" target="_blank">JIT compilation</a>
Note 2.

edia.org/wiki/Incremental_compiler" target="_blank">Incremental compiler</a>


ki/Algorithms/Chapter_6
edia.org/wiki/Memoization" target="_blank">Memoization</a>
Note 3.
ki/Referential_transparency_%28computer_science%29
ki/Self-modifying_code

" technique, using pre-assembled indexed sub-routine calls. Custom built, multi dimensional
http://en.wikibooks.org/wiki/360_Assembly/Branch_Instructions

ki/Threaded_code_compiler
edia.org/wiki/Binary_search" target="_blank">Binary search</a>
ccording to options & usage (reflection)
(corrected link 29/10/2008)
edia.org/wiki/Floating_point" target="_blank">Wikipedia Floating point</a>
(SBA/SF/RA etc)
`````Q
edia.org/wiki/Flat_file" target="_blank">Flat file</a> No keyed lookup
only for setup & "program code"
ki/Reverse_Polish_notation
ransaction processing - (Transient Data) Updating down the line DIR's

echnique up quickly"

iod, shift, day, week, month, year


iod,auto summation
& daily full disk copy
versally adopted 34 years later !

cross application'

nion payrise negotiations)


only since no GUI
with on screen previews

http://www.the-adam.com/adam/rantrave/computers.htm
http://www.the-adam.com/adam/rantrave/postmodern.htm

Z/390 compatible, (no requirement to re-compile)

Memoization & self optimizing fast paths)

e of wholy independant & later "re-invention" by Bricklin)


ted 6 years before the IBM PC, and between 3 and 6 years before Apple II

defined field attributes, text/numerics, (later 7 colors & reverse video, condtl. formatting)
imitation, graphic devices were not generally available in 1974)
ommodore PET 2001 in 1977 - calculator burnt to ROM chip <a href="http://en.wikipedia.org/wiki/Commodor

including fetch & save


4 bytes per F/P machine instruction (F/P = floating point)
<a href="http://www.bitsavers.org/pdf/ibm/360/A22_6825-1_360instrTiming.pdf"
no timing data avail for IBM/370
target="_blank">IBM
or later upward compatible
System/360hardware
timings</a>

hardware feature
more optimized than compiled Fortran
exactly same cost as local
http://en.wikipedia.org/wiki/Commodore_PET" target="_blank">Commodore Pet</a>

upward compatible hardware


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


y subsequent write

n saving during debugging)

plus reverse video


IBM 370/145 Console
http://www.w3.org/2000/03/rdf-tracking/#rdf-embedded
IBM charged extra for the rust !

The rust illustrated here was an op


available only to pre-owned hardwa
The rust illustrated here was an optional 'extra'
available only to pre-owned hardware buyers !

Вам также может понравиться