|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Spreadsheets - the TRUE history of fully interactive spreadsheets & JIT
|
|
|
|
|
|
|
|
Special:Search
|
Main Page
|
404 error/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"A full five to six years before Bricklin and Visicalc"
|
|
|
|
|
|
|
|
|
|
|
|
|
(HYPONE is phenyl-methyl-acetone (C 6 H 5 .CO.CH 3 ))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 trivial hash function 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)
|
|
|
|
|
|
|
|
|
|
|
A copy of the full manual is now lodged with The Computer History museum, CA under the name "Imperial Chemical Indistries" "Works record System" [ http://www.youtube.com/user/ComputerHistory ] Lot#: X6241.2012 (The X files?)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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' ===>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Video Testmony?
|
|
|
|
|
on Youtube (relevant discussion section now archived so not so easily viewed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
by Rod Furlan
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(Basic Additional Teleprocessing Support)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Find time to 'smell the roses' ".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Why have a dog and bark yourself"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Bring forth what is true; write it so it's clear; Defend it to your last breath" (Boltzmann quoting Faust)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"You can know the name of a bird in all the languages of the world, but when you're finished, you'll know absolutely nothing whatever about the bird...
|
|
|
|
|
|
|
|
|
|
|
|
So let's look at the bird and see what it's doing-- that's what counts. I learned very early the difference between knowing the name of something and knowing something. ”
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(Richard Feynman)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"If I'd asked customers what they wanted, they would have said 'a faster horse'."
|
|
|
|
(Henry Ford)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A few more morbid ones
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Our death is not an end if we can live on in our children and the younger generation. For they are us, our bodies are only wilted leaves on the tree of life" (Albert Einstein)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Death is the surest calculation that can be made" (Ludwig Büchner, Force and Matter)
|
|
|
|
|
|