|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|