Computing Rainbow
The Exercise
Dave Thomas led an exercise called "computing rainbow" to emphasize the existing diversity in computing. In this exercise we brainstormed all the interesting and important things in current computing which might have become hidden or ignored "due to middleware."
Results of the Exercise
Dave Thomas and some others at the workshop thought that two related problems we faced were that the currently existing diversity has been marginalized, mostly through inattention and poor education, and that a number of important techniques or knowledge from the past were being lost to academics rather than being carried on by practitioners.
In this exercise we tried to come up with a list of such diversity or nearly lost knowledge. We also talked about a conference or series of conferences that would, to some extent, celebrate these things. Or a book. There was considerably energy associated with this idea, and it is likely Dave will follow up on it.
Here is the entire rainbow:
- abstraction
- AI
- Rx Tx
- 5th normal form
- a software patent
- a thousand programming languages with Magic in their name
- Active-X
- Ada
- Adventure
- agents
- AI
- AIX
- Algol (originally Algol-W and Algol-6868)
- algorithm efficiency
- ambiguity
- analog computing
- anti-dependencies
- AOL/Time-Warner
- APL
- array processing
- AS/400
- ascii files
- aspects
- Babbage
- backtracking
- banks of tape drives
- Basic
- BIBOP (Big Bag of Pages manifest types implementation technique)
- Bill Gates
- binding
- bi-quaniry computing
- bitblt
- blackboards
- blocks world
- Bob (the Windows help system)
- boot code for an LPG 30
- Burroughs
- Burroughs B-5500
- buttons
- C
- C#
- C++
- cache
- calculus
- CDC NOS
- cell
- CERN
- chad
- change-class (CLOS facility to change the class of an instance)
- chips
- Chomsky language levels
- CICS
- classes
- clauses
- clean room method
- closure
- coax (ethernet)
- Cobol
- COM
- community
- compilation
- compiler
- complexity
- components
- computation versus communication
- computer games
- computer science
- concepts
- concurrency
- Conniver
- constant
- constraint
- constructivism (learning theory)
- context-free
- context-sensitive
- continuation
- continuations
- contract
- control structures
- control Thery
- Conway
- cooperation versus mutual exclusion
- co-routines
- correctness
- CPU
- Cray research
- cross-functional stochastic testing
- CS dropout venture capitalist
- DARPA
- data disk
- data flow
- data flow diagrams
- data structures
- databases
- DB2
- death march
- decision table
- decision tree
- declaration
- declarative
- denotational semantics
- Descartes
- design
- design patterns
- developer
- device
- dialogs
- Dijkstra
- DIP switches
- discrete transistors
- distributed architecture
- distribution
- DLLs
- Doom
- DOS
- DRAM
- DSOM
- dynamic binding
- dynamic programming
- dynamic typing
- economics
- Ed Yourdon
- Eiffel
- Eliza
- emulation
- encapsulation
- enumeration
- Erlang
- evolution
- execute in registers
- factorial
- failures
- ferrite core memory
- file system
- flat-bed plotter
- floating point systems
- flow charts
- fluidity
- form versus function
- formal definition language
- formal semantics
- Fortran
- forwarding pointers
- Frank Soltis
- FREQUENCY statement
- FSM
- function
- functional programming
- futures
- fuzzy logic
- game of life
- game theory
- gates
- GC
- giant brains
- goto considered harmful
- Grace Hopper
- grammar
- graphs
- grep
- hashing
- HAL 2000
- Harvard architectures
- hashing algorithm (any)
- heap management
- hermeneutic constructions
- history
- Hobbes
- hollerith cards
- HP
- hype
- Hypercard
- Hypertalk
- IBM 360
- IBM PC
- IBM system service girl
- III terminals
- indirection
- input
- instance
- instruction set for (...) machine
- integration testing
- Intel
- interpretation
- iterative deveopment process
- jargon
- Java
- Jolt Cola
- keyboards
- keypunches
- lambda
- lambda calculus
- LambdaMOO
- languages
- layered architecture
- layers of abstraction
- lazy evaluation
- Leibniz
- letrec
- lexical binding
- lexical scoping
- library
- limits to computation
- linear logic
- Linux
- Lisp
- Lisp Machines
- Lisp strings
- logic programming
- lowtag (manifest types implementation technique)
- machine
- macros
- magnetic disks
- Maple
- marketer
- mathematics
- mazes
- meta-
- mechanical creatures from the mediavel era
- memory
- menus
- mercury delay line
- message
- metaclasses
- metaphors
- method
- Microsoft
- ML
- MNS
- mobility
- modeling
- Modula
- modules
- monad
- money
- monitors
- Moore’s law
- MOP
- Mormon geneology database
- MUDs
- Multics
- multi-thread operating system
- Murphy’s law
- mutation testing
- mutex
- Myst
- mythical man month
- NASA
- network games
- networks
- Newton
- Nintendo
- normalization
- notation
- NSA
- NSF
- numerical analysis
- object-bifurcated development process
- objects
- optical character recognition
- ontology
- OO-programming
- operators
- Oracle
- OS
- OS/2
- OS/400
- output
- overlays
- package
- Pacman
- pages
- Palm
- paper control tape in an IBM 407 printer
- paper tape
- paradigm
- parallelism
- parsers
- parsing
- Pascal
- pattern matching
- PDP-10
- PDP-8
- PDP-11
- Peopleware
- persistance
- Plan 9
- Planner
- plastic parsley laundry scheduling algorithm
- platforms
- polish notation
- Posix
- postcondition
- precondition
- privates
- probability
- procedural
- procedure
- process
- processor
- program
- programmer analyst
- programmer food
- programming as a social activity
- Prolog
- propositional calculus
- protocols
- psychology of computer programming
- pure function
- push
- push-down automata
- quantum computing
- random number generator
- randomized algorithms
- ratio buttons
- rationality
- recursion
- reflection
- register coding
- registers
- representation
- requirements
- REs
- researcher
- robot animation
- robots
- roll overs
- room size computers
- RPC
- RPG
- Ruby
- rule
- Russian-designed ternary computer
- Scheme
- scientific
- scripting
- scrollbars
- segments
- semantics
- semaphores
- sequential development process
- SETI cooperative computing effort
- Seymour Cray
- side effect
- Simula
- simulations
- slide rule
- Smalltalk
- smartcard
- Snobol
- Software artist
- Solaris
- Sony
- SOs (significant others)
- space war
- speech recognition
- spineless-tagless G-machine
- SRUPMGs
- stack machines
- stacks
- Stanford cart
- Star Trek
- statefull programming
- stateless programming
- static RAM
- static typing
- storage
- strong types
- subjects
- subroutine
- subroutines
- symbolic computing
- Sun
- switches
- Sybase
- symbolic expressions
- syntax
- system Theory
- technical support
- Teco
- teletypes
- Tenex
- tests
- the chip embedded in the pacemaker
- threads
- time warp
- Tivo
- TMs
- toolbars
- trade-offs
- transistor
- trees
- tuple space
- Turing machine
- twistors
- types
- UML
- unification
- unit testing
- Unix
- unnormalized floating point arithmethic
- URL
- user
- user interface
- vacuum tubes
- validation
- variables
- various robot arms
- Vax
- VB
- vectors
- video poker machine
- virtual machine
- viruses
- Von Neumann architecture
- W.I.M.P interface
- walktroughs
- WAM
- Wang
- weak typing
- weather prediction
- Web
- while Loop
- Windows 1.0,2.0,3.0,3.1,95,NT...
- Windows 95 for dummies
- wires
- worms
- worse is better
- Xemacs
- Xenu
- XML
- YACC