With the arrival of the 2020's I realised I've now been involved in Computing for 4 decades. So I probably know more about the past of Computing that I will about the future! Here's a personal timeline of hopefully interesting things from the 1980's in Computing (at Waikato University, NZ, and UNSW in Australia).
0b101000 years of computing: a personal timeline - decade "0", the 1980's
1. 0b101000 years of computing: a
personal timeline
1980’s – decade 0
Paul Brebner
Instaclustr Technology Evangelist
https://www.instaclustr.com/paul-brebner/
10. 1980’s computers
• DEC VAX 11/780, TTL (lots of chips and
boards)
• 1MB RAM, 5MHz
• $500,000
• VAX VMS Operating System
• “Mailboxes” for inter-process
communication
• Naturally we wrote a multiplayer game
• Linux Pipes are still around!
• https://opensource.com/article/19/4/inte
rprocess-communication-linux-channels
11. 1980’s software
• Fortran? No thanks, skipped 1st year computing
and learnt Pascal instead, successor to Algol
• Strongly typed, multiple built in data types,
functions and procedures
• Using a time-shared VAX 11/780 was painful
during the day
• Had to book ½ hour slots on limited number of
terminals
• Typing and program execution was sluggish
• Debugging typically done with paper printouts
• Real computer scientists worked from 11pm until
breakfast
12. 1980’s software - LISP
• Artificial Intelligence looked promising and possible
• 1980’s AI Bubble, followed by the 1990s AI Winter
• LISP AI programming language
• Dynamic typing, garbage collection, functions are first-class objects, lists and
s-expressions
• LISP = Lost in the Sea of Parenthesis/Lots of Insidious Superfluous
Parentheses
13. 1980’s cold war
•KGB Agent: The American’s are
programming Star Wars in LISP!
•KGB General: How do you know?
•KGB Agent: I stole the final page of a
printout - See for yourself!
15. 1980’s software - Prolog
• Infinitely better AI Language
• Declarative Logic Programming language
• First order logic (mostly)
• Just state facts, write some rules, and ask a question (a goal)
• Prolog uses magic - theorem proving (resolution, unification) and
backtracking - to find solution(s).
18. Query
siblingOf(X, Y)?
X = Y, Y = luke
X = luke, Y = leia
X = Y, Y = ben
X = leia, Y = luke
Whoops, someone can’t be their own sibling!
19. Prolog example, correct
fatherOf(anakin, luke).
motherOf(padme, luke).
fatherOf(anakin, leia).
motherOf(padme, leia).
fatherOf(han, ben).
motherOf(leia, ben).
siblingOf(X, Y) :- fatherOf(F, X), fatherOf(F, Y), X = Y.
siblingOf(X, Y) :- motherOf(M, X), motherOf(M, Y), X = Y.
20. Query
siblingOf(X, Y)?
X = luke, Y = leia
X = leia, Y = luke
Lots of online prolog interpreters and examples to try.
Parallels between Prolog and Graph Databases.
21. First order machine learning
• Autonomous learning in a robot blocks
world
• What I actually spent the 80’s doing
(Waikato and then UNSW)
• Can a machine learn
• Prolog programs (blocks world theories)?
• From positive and negative examples?
• Autonomously? Choosing what it wants to
learn and what actions to perform next?
• Yes, but need sophisticated algorithms,
lots of examples, and lots of
CPU/memory
Drawn with
MacDraw
22. Induction, opposite of Deduction
• Given (lots of) Positive Examples (things that are true):
siblingOf(luke, leia). siblingOf(leia, luke).
• And (lots of) Negative Examples (things that are false):
siblingOf(luke, luke). siblingOf(leia, leia), siblingOf(ben, ben). siblingOf(luke, ben).
etc
• And the background facts:
fatherOf(anakin, luke). motherOf(padme, luke).
fatherOf(anakin, leia). motherOf(padme, leia).
fatherOf(han, ben). motherOf(leia, ben).
• Learn the rules:
siblingOf(X, Y) :- fatherOf(F, X), fatherOf(F, Y), X = Y.
siblingOf(X, Y) :- motherOf(M, X), motherOf(M, Y), X = Y.
23. Prolog beyond the 1980’s?
• Did Prolog die out? Not entirely…
• I used declarative programming techniques for:
• Optus Mailbox system protocol
• specification and automatic generation of executable code
• Automated testing for UNIX resource management system
• declarative specification of correct behavior
• machine learning techniques to generate optimal test cases
• Declarative programming ideas ended up as Model Driven Development
(MDD)
• E.g. Automated performance modelling from APM data
• https://www.researchgate.net/publication/221554803_Performance_modeling_for_
service_oriented_architectures
• https://dl.acm.org/doi/10.1145/2851553.2851560
24. 1980’s computers
• 2nd homemade and designed computer
• 1984, $2,000 64KB RAM, Motorola 6809 (8MHz) microprocessor, 2 x 8” floppy
disk drives
• Shared-memory multi-processor architecture (2KB shared fast memory)
25. But we had a problem
• In the 1980’s software wasn’t portable
• Locked in with Hardware, Operating Systems, and Programming Languages.
• And we needed drivers, file system, operating system, compilers, interpreters,
utilities, applications, etc, for our 6809 computer
• We wrote everything in BPCL “Basic Combined Programming Language”
• Very portable, 2 part compiler with an intermediate O-code language (Sound familiar? Java)
• BCPL influenced C and Java
• James Gosling new some BCPL ”jokes at ApacheCon!
• Some BCPL jokes:
• “Because BCPL led to B which led to C, the successor of C should have been P and not C++”
• “BPCL was useful for only one thing, to write the BCPL compiler”
• “BCPL is typesafe (there’s only one type)”
• We used the 6809 machine as a prototype digital music synthesizer
• but the main “benefit” was the bootstrapping experience (once is enough)