SlideShare a Scribd company logo
From Commodore 64
to the Cloud
Lessons from 30 years of programming
Early 1980s
• Dick Smith Wizzard
• Commodore 64
• BASIC, peek/poke, machine
code, assembly, graphics,
games, electronic music,
compilers.
Lesson - Fun!
Tell your kids to program games in JavaScript with
HTML5/Canvas/WebGL
but ensure they understand that JavaScript is a low-level
assembly language of modern machines
Late 1980s / Early 1990s
• QUT
• Modula-2 > Pascal
• VAX/VMS DCL
• Unix & C
• Gardens Point Beers
Club
Lesson - Modules are
important
Modula-2 modules are simple but useful. Sooo much
better than C “header files” and preprocessor directives!
Lesson
Beer kills brain cells and lowers grades :)
Early 2000s
Python
Ruby
Smalltalk
Scheme
Common Lisp
Scheme
Dylan
Lesson - Macros
Macros are very useful for building extensible languages
Lesson -
Continuations
Scheme’s first-class continuations tickle your brain
TODO: Read Oleg on why delimited continuations are the thing
Mid 2000s
Xavier Leroy on compilers, Caml Light, Caml, Objective
Caml, OCaml
Lesson - High-level
Programming Languages
can be very efficient
i.e. OCaml is fast
but nag them about multicore ;)
Lesson - Pattern
Matching
Algebraic datatypes are great for compilers
Lesson - Macros in ML
family languages
camlp4 shows that macros aren’t just for Lispers
Lesson - Better
Modules
Modula-2 modules are great and simple. ML modules
have yet to be improved upon (but check out MixML).
Late 2000s
Haskell, Laziness, Template Haskell
Lesson - Laziness for
Modularity
John Hughes on “Why FP” is “Why Laziness”
Lesson - ad-hoc
overloading
Can use type classes for CLOS style ad-hoc overloading
Early 2010s
• Proofs are programs
• Coq, Agda, Epigram, Idris,
Cayenne, Ur
• Inductive datatypes
• Dependent types
• Module Systems
Lesson - The future of
programming is
dependently typed
• No longer need to statically analyse (aka infer or guess) the properties of your
programs. Instead state them.
• TDD: Test Driven Development → Type Driven Development.
• Manuel Chakravarty calls for Property Driven Development. Yes, that would be
mathematical properties.
Cloud
(aka “Cloud”)
i.e. Distributed Systems, Software Defined Infrastructure
Lesson - Reduce
network hops
• A key lesson from distributed computing.
• Also applies to optimising the user-space to kernel-space interactions.
Consider how the c10k problem is solved with libevent, libuv, NIO/NIO.2,
over epoll, kqueue, AIO etc. This kind of efficient I/O system is baked into
the runtime systems of Erlang, Haskell (via the Glorious GHC), Go, Rust,
Java, Scala ε̷ Node.js.
• Single address-space Operating Systems help solve a similar problem
when switching between threads/processes after a time-slice.
• L4 microkernel implements efficient inter-process message passing using
hardware memory remapping techniques.
• Operating Systems as libraries (aka exokernels):
• Mirage is OCaml on virtual metal
• HaLVM is Haskell (via the Glorious GHC) on virtual metal
Lesson - Everything
fails, deal with it!
… and everything will be fine 😃
These may help:
• replicas and redundancy
• app containers and PaaS, Docker, Kubernetes
• Raft, Zookeeper, etcd
• Erlang OTP
Questions?

More Related Content

PDF
CoreML
Ali Akhtar
 
PDF
64ler Dergisi - Eylül 1988 - Sayı 06 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Haziran 1988 - Sayı 03 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Ağustos 1988 - Sayı 05 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Ekim 1988 - Sayı 07 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Mayıs 1988 - Sayı 02 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Temmuz 1988 - Sayı 04 - Commodore 64
Hakan Özerdem
 
PDF
64ler Dergisi - Nisan 1988 - Sayı 01 - Commodore 64
Hakan Özerdem
 
CoreML
Ali Akhtar
 
64ler Dergisi - Eylül 1988 - Sayı 06 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Haziran 1988 - Sayı 03 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Ağustos 1988 - Sayı 05 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Ekim 1988 - Sayı 07 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Mayıs 1988 - Sayı 02 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Temmuz 1988 - Sayı 04 - Commodore 64
Hakan Özerdem
 
64ler Dergisi - Nisan 1988 - Sayı 01 - Commodore 64
Hakan Özerdem
 

Similar to From Commodore 64 to the Cloud — Lessons from 30 years of programming (20)

PDF
Concepts Techniques And Models Of Computer Programming Peter Vanroy Seif Hari...
oktayabdili
 
PDF
Programming In Ada 2012 1st Edition Barnes John Gilbert Presslie
henighaude3f
 
PDF
From concept to cloud a look at modern software development
Software Guru
 
PDF
Model-Driven Software Development - Introduction & Overview
Eelco Visser
 
PPTX
Not Everything is an Object - Rocksolid Tour 2013
Gary Short
 
PDF
What You Can Learn from Obscure Programming Languages
Dmitry Zinoviev
 
PPTX
Paradigms
Edward Blurock
 
PPT
Trends in Programming Technology you might want to keep an eye on af Bent Tho...
InfinIT - Innovationsnetværket for it
 
PDF
Programming Language Explorations Alexander Schneider Eileen Choe
alejelmigse
 
PPT
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
PDF
Антон Кириллов, ZeptoLab
Diana Dymolazova
 
PDF
OpenThink Labs Training : Diving into Java, The Head First Way
Wildan Maulana
 
PDF
Programming skills
COMMON Europe
 
PDF
IN4308 1
Eelco Visser
 
PDF
Trends and future of C++: Evolving a systems language for performance - by Bj...
devstonez
 
PDF
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
PDF
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
PDF
On being a professional software developer
Anton Kirillov
 
PPTX
Introduction to Clojure and why it's hot for Sart-Ups
edlich
 
PDF
A Brief History of Programming Languages.pdf
EdFeranil
 
Concepts Techniques And Models Of Computer Programming Peter Vanroy Seif Hari...
oktayabdili
 
Programming In Ada 2012 1st Edition Barnes John Gilbert Presslie
henighaude3f
 
From concept to cloud a look at modern software development
Software Guru
 
Model-Driven Software Development - Introduction & Overview
Eelco Visser
 
Not Everything is an Object - Rocksolid Tour 2013
Gary Short
 
What You Can Learn from Obscure Programming Languages
Dmitry Zinoviev
 
Paradigms
Edward Blurock
 
Trends in Programming Technology you might want to keep an eye on af Bent Tho...
InfinIT - Innovationsnetværket for it
 
Programming Language Explorations Alexander Schneider Eileen Choe
alejelmigse
 
PPL unit 1 syntax and semantics- evolution of programming language lexical an...
SARANYAM124686
 
Антон Кириллов, ZeptoLab
Diana Dymolazova
 
OpenThink Labs Training : Diving into Java, The Head First Way
Wildan Maulana
 
Programming skills
COMMON Europe
 
IN4308 1
Eelco Visser
 
Trends and future of C++: Evolving a systems language for performance - by Bj...
devstonez
 
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
Evolution of Programming Languages.pdf
Madurai Kamaraj University Madurai Tamil Nadu India
 
On being a professional software developer
Anton Kirillov
 
Introduction to Clojure and why it's hot for Sart-Ups
edlich
 
A Brief History of Programming Languages.pdf
EdFeranil
 
Ad

Recently uploaded (20)

PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
Doc9.....................................
SofiaCollazos
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Architecture of the Future (09152021)
EdwardMeyman
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PPTX
IoT Sensor Integration 2025 Powering Smart Tech and Industrial Automation.pptx
Rejig Digital
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Doc9.....................................
SofiaCollazos
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Architecture of the Future (09152021)
EdwardMeyman
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
IoT Sensor Integration 2025 Powering Smart Tech and Industrial Automation.pptx
Rejig Digital
 
Ad

From Commodore 64 to the Cloud — Lessons from 30 years of programming

  • 1. From Commodore 64 to the Cloud Lessons from 30 years of programming
  • 2. Early 1980s • Dick Smith Wizzard • Commodore 64 • BASIC, peek/poke, machine code, assembly, graphics, games, electronic music, compilers.
  • 3. Lesson - Fun! Tell your kids to program games in JavaScript with HTML5/Canvas/WebGL but ensure they understand that JavaScript is a low-level assembly language of modern machines
  • 4. Late 1980s / Early 1990s • QUT • Modula-2 > Pascal • VAX/VMS DCL • Unix & C • Gardens Point Beers Club
  • 5. Lesson - Modules are important Modula-2 modules are simple but useful. Sooo much better than C “header files” and preprocessor directives!
  • 6. Lesson Beer kills brain cells and lowers grades :)
  • 8. Lesson - Macros Macros are very useful for building extensible languages
  • 9. Lesson - Continuations Scheme’s first-class continuations tickle your brain TODO: Read Oleg on why delimited continuations are the thing
  • 10. Mid 2000s Xavier Leroy on compilers, Caml Light, Caml, Objective Caml, OCaml
  • 11. Lesson - High-level Programming Languages can be very efficient i.e. OCaml is fast but nag them about multicore ;)
  • 12. Lesson - Pattern Matching Algebraic datatypes are great for compilers
  • 13. Lesson - Macros in ML family languages camlp4 shows that macros aren’t just for Lispers
  • 14. Lesson - Better Modules Modula-2 modules are great and simple. ML modules have yet to be improved upon (but check out MixML).
  • 15. Late 2000s Haskell, Laziness, Template Haskell
  • 16. Lesson - Laziness for Modularity John Hughes on “Why FP” is “Why Laziness”
  • 17. Lesson - ad-hoc overloading Can use type classes for CLOS style ad-hoc overloading
  • 18. Early 2010s • Proofs are programs • Coq, Agda, Epigram, Idris, Cayenne, Ur • Inductive datatypes • Dependent types • Module Systems
  • 19. Lesson - The future of programming is dependently typed • No longer need to statically analyse (aka infer or guess) the properties of your programs. Instead state them. • TDD: Test Driven Development → Type Driven Development. • Manuel Chakravarty calls for Property Driven Development. Yes, that would be mathematical properties.
  • 20. Cloud (aka “Cloud”) i.e. Distributed Systems, Software Defined Infrastructure
  • 21. Lesson - Reduce network hops • A key lesson from distributed computing. • Also applies to optimising the user-space to kernel-space interactions. Consider how the c10k problem is solved with libevent, libuv, NIO/NIO.2, over epoll, kqueue, AIO etc. This kind of efficient I/O system is baked into the runtime systems of Erlang, Haskell (via the Glorious GHC), Go, Rust, Java, Scala ε̷ Node.js. • Single address-space Operating Systems help solve a similar problem when switching between threads/processes after a time-slice. • L4 microkernel implements efficient inter-process message passing using hardware memory remapping techniques. • Operating Systems as libraries (aka exokernels): • Mirage is OCaml on virtual metal • HaLVM is Haskell (via the Glorious GHC) on virtual metal
  • 22. Lesson - Everything fails, deal with it! … and everything will be fine 😃 These may help: • replicas and redundancy • app containers and PaaS, Docker, Kubernetes • Raft, Zookeeper, etcd • Erlang OTP