Part IV – Software & Languages
Who designed the programming languages, and why: Hopper’s compilers, Backus’s FORTRAN, ALGOL, C and Unix at Bell Labs, and on to Java, Python and Rust. The part also covers operating systems from Multics to Linux and Windows NT, the practices that grew out of the 1968 software crisis, and core concepts such as compilers, type systems and garbage collection.
Language Designers
- Kathleen Booth and the First Assembler — the first assembly language (1947), written for machines built in a Birkbeck stable
- Grace Hopper: The Queen of Code — compilers, COBOL, and the bug in relay 70
- Jean Sammet and COBOL — COBOL co-designer, FORMAC, and the first woman to serve as ACM president (1974)
- John Backus and FORTRAN — proved compilers could beat hand-coded assembly, then argued it was a dead end
- Alan Perlis and the Epigrams on Programming — the IT compiler of 1956, both ALGOL committees, the first Turing Award, the Carnegie CS department, and 130 one-line epigrams
- Peter Naur — astronomer, editor of the ALGOL 60 report, the reluctant N in BNF, and the argument that a program is a theory in someone’s head
- Kateryna Yushchenko and the Address Language — indirect addressing (the pointer) in Kyiv, 1955 — two years before FORTRAN, unknown in the West
- Frances Allen and Compiler Optimization — a career at IBM Research building the foundations of optimizing compilers; first woman to win the Turing Award (2006)
- Edsger Dijkstra and Structured Programming — “Go To Considered Harmful,” semaphores, and programming as mathematics
- Tony Hoare and the Science of Programming — Quicksort, Hoare logic, CSP, and the billion-dollar mistake
- Niklaus Wirth and Pascal — Pascal, Modula, Oberon, and Wirth’s Law
- Barbara Liskov and Data Abstraction — CLU, abstract data types, the substitution principle, and the 2008 Turing Award
- Ole-Johan Dahl and Kristen Nygaard — invented classes, inheritance, and garbage collection in Simula 67
- Alan Kay and Smalltalk — the Dynabook vision, Smalltalk, and message passing
- Adele Goldberg and Smalltalk — Smalltalk-80’s release to the world, the refused Jobs demo, ACM’s presidency, and ParcPlace
- Robin Milner — ML, Hindley-Milner type inference, CCS, and the Pi-calculus
- Aho and Ullman: The Dragon Book — yacc from a Bell Labs memo, Aho–Corasick and AWK, the 1974 algorithms text, the dragon cover Ullman sketched as a joke, the 2020 Turing Award and the letter against it
- Dennis Ritchie and the C Language — C, K&R, and the mother tongue of computers
- Ken Thompson and Unix — Unix, B, regular expressions, UTF-8 on a placemat, and Go
- Chuck Moore and Forth — a language of words on a stack: Kitt Peak, FORTH, Inc., Open Firmware boot ROMs, and Forth processors from Novix to GreenArrays
- Brian Kernighan and the Unix Tools — AWK, K&R, and “Hello, World!”
- Doug McIlroy and Unix Pipes — the pipe, the Unix philosophy, and software ICs
- Rob Pike: From Unix to Go — Plan 9, UTF-8 on a placemat, sam/acme, and Go’s concurrency lineage
- Bjarne Stroustrup and C++ — zero-cost abstraction and the complexity ratchet of backward compatibility
- James Gosling and Java — “Write Once, Run Anywhere,” the JVM, and the Oracle lawsuit
- Kim Polese — named and launched Java in 1995, founded Marimba and rode the push hype of 1997 as the most photographed executive in the Valley, and outlived it with a $239M sale
- Brendan Eich and JavaScript — ten days, Scheme roots, and the language that became inescapable
- Anders Hejlsberg: From Turbo Pascal to TypeScript — Turbo Pascal at $49.95, Delphi, the million-dollar defection to Microsoft, C#, and TypeScript
- Fabrice Bellard: FFmpeg, QEMU and the One-Man Project — LZEXE, TCC, FFmpeg, QEMU, a pi record on a desktop PC, JSLinux, and a 4G base station in software
- Guido van Rossum and Python — a Christmas hobby that became the lingua franca of AI
- Larry Wall and Perl — TMTOWTDI and the 19-year Perl 6 odyssey
- Linus Torvalds and Linux — “Just a hobby” kernel and Git written in two weeks out of spite
- Richard Stallman and GNU — free software as moral imperative, copyleft, and GCC
- John Warnock and PostScript — PostScript, desktop publishing, and PDF
- Charles Simonyi: From Bravo to Word — Bravo at PARC, Microsoft’s applications group, Hungarian notation, intentional programming, and two paid trips to the space station
Languages & Paradigms
- Ada: The Language the Pentagon Built — 450 languages, one blind design competition, MIL-STD-1815, and the mandate that failed while the ideas won
- ALGOL and the ALGOL Family — block structure, lexical scoping, BNF, and the language that taught every designer
- Friedrich L. Bauer — the stack, ALGOL, Munich informatics, and the Garmisch software-engineering conference
- APL and Array Programming — Iverson’s 1962 notation and the array paradigm that lives in NumPy and R
- BASIC: The Language That Democratized Programming — Kemeny and Kurtz at Dartmouth (1964); the language every home computer shipped with
- COBOL: The Language That Runs Banking — designed in 1959 for business readability; still processing trillions in daily transactions
- Prolog and Logic Programming — declarative logic, the Fifth Generation Project, and constraint programming
- Simula and the Birth of OOP — every OOP concept, Oslo 1967, decades before the industry named them
- The OOP Revolution — Simula, Smalltalk, C++, Java, and objects as the dominant metaphor
- The Rise of High-Level Languages — FORTRAN, COBOL, ALGOL, LISP: the first wave of abstraction
- The Rise of Functional Programming — lambda calculus, Haskell, Erlang, and immutability entering every mainstream language
- The Evolution of Language — the full arc from machine code to Rust
- WebAssembly — portable binary format for near-native speed in browsers and beyond
- Rust and Memory Safety — the borrow checker that eliminates use-after-free at compile time
- Go: The Cloud-Native Language — Pike/Thompson/Griesemer, goroutines, and the lingua franca of containers
- Haskell and Pure Functional Programming — monads, type classes, and the lab where language features are prototyped
- Erlang and the Actor Model — Joe Armstrong, “let it crash,” nine-nines telecom reliability
- Ruby and Rails — Matz’s programmer happiness, DHH’s 15-minute blog, the startup engine
- why the lucky stiff — cartoon foxes teaching Ruby, code as art, and the day one programmer deleted everything
- Swift and the Post-Objective-C Era — Chris Lattner, optionals, and retiring Objective-C
- Kotlin and Modern JVM Development — JetBrains, Java interop, and Google’s Android-first endorsement
- PHP: The Web’s Workhorse — Lerdorf’s homepage tools, LAMP, WordPress, and “worse is better”
- SQL: The Query Language That Outlived Everything — Codd’s relational model, declarative queries, and NoSQL’s retreat
- The Philosophy of Programming Languages — TMTOWTDI vs. the Zen of Python, MINASWAN, Go proverbs, “worse is better”: languages as value systems
- Esoteric Programming Languages — INTERCAL’s politeness check, brainfuck’s 240-byte compiler, programs as plays and paintings, and Malbolge, the language built to be unprogrammable
- Code Golf and Perl Golf — a 1962 GIER manual’s “time-consuming sport”, RSA in two lines of Perl, the Perl Golf Apocalypse, GolfScript and Jelly, and golf as evidence against a Russian cipher
- The Chomsky Hierarchy — formal grammars and the theoretical spine of every parser
- The History of Parsing — BNF to LL/LR, YACC/Bison, PEG, and ANTLR
- Scheme and SICP — Steele and Sussman’s actors that turned out to be closures, the Lambda Papers, 6.001 from 1980 to 2007, and the Wizard Book
Operating Systems & Infrastructure
- The Unix Story — the operating system that ate the world
- The Multics Story — hierarchical filesystems, dynamic linking, ring security, and the project simplified into Unix
- Fernando Corbató and Time-Sharing — CTSS, the invention of time-sharing, and the decade-long Multics gamble
- Ann Hardy — the 705 in IBM’s window, the Tymshare operating system for the SDS 940, fewer stock options because “it would be immoral to tempt a woman”, and Key Logic
- The BSD Family — Bill Joy’s 4.2BSD, the AT&T lawsuit, OpenSSH, and the macOS Darwin lineage
- Commercial Unix and the Unix Wars — System V, Xenix, SunOS/Solaris, AIX, HP-UX, IRIX; AT&T vs. the OSF, the UNIX trademark, and SCO’s lawsuit against Linux
- The Linux Distributions — from SLS and Yggdrasil to Slackware, Debian, Red Hat, SUSE, Ubuntu and the CentOS clones; Corel Linux and Lindows as dead ends
- The macOS Lineage — NeXTSTEP to Mac OS X, the Mach microkernel, and Cocoa
- The Windows Story — from a derided DOS shell to seven in ten desktops: Windows 95, Cutler’s NT kernel, antitrust, Vista, and the post-mobile retreat
- Dave Cutler and Windows NT — VMS at DEC, the 1988 defection to Microsoft, the from-scratch NT kernel, and five decades of writing code
- Andrew Tanenbaum and MINIX — the textbooks that taught the field, the teaching Unix that begat Linux, the “LINUX is obsolete” debate, and MINIX 3 hidden inside every Intel chipset
- Jochen Liedtke and L4 — microkernel IPC twenty times faster in 1993, the minimality principle, billions of modems, and the verified seL4
- Ken Sakamura and TRON — Japan’s open real-time OS: crushed on the desktop by US trade pressure (1989), victorious invisibly in billions of embedded devices
- The JVM and Java Ecosystem — Spring, Android, Kotlin, and Google v. Oracle at the Supreme Court
- The LLVM and Modern Compiler Infrastructure — Chris Lattner’s PhD project, backend for Swift, Rust, WebAssembly
- The Linker and Loader Story — static linking, shared libraries, ASLR, and the container-era reversal
- Unicode and UTF-8 — the consortium, Ken Thompson’s placemat design, and the BOM wars
- The History of Desktop Environments — Xerox PARC to Windows 95, KDE vs. GNOME, and mobile
- The History of Passwords and Authentication — 60 years from CTSS to FIDO2 passkeys
- Package Managers and Dependency Hell — ports, dpkg, RPM and APT; CPAN to npm and Cargo; the NP-completeness of installing software, minimal version selection, and Nix
Practices & Culture
- The Story of Mel — hacker folklore’s epic poem: drum memory, self-modifying code, and the Real Programmer who was real
- The Software Crisis — the 1968 NATO Garmisch conference, Brooks’s Law, No Silver Bullet, and computing’s permanent problem
- Software Testing and QA — Dijkstra’s hard truth, Myers’s destructive mindset, TDD, CI, and fuzzing
- Design Patterns and the Gang of Four — 23 patterns that gave software engineering a shared vocabulary
- UML and the Three Amigos — Booch, Rumbaugh, and Jacobson ending the OO “method wars” at Rational, and why the dream of generating systems from diagrams died while class and sequence diagrams lived
- The Open Source Revolution — Stallman, Torvalds, and the software that runs the world
- The Open Source Movement — the gift economy, BDFLs and constitutions, the free-software schism, forks as politics, and who pays the maintainers
- The Open Source Business Model — GPL, Red Hat, dual licensing, and the BSL license pivot
- Volunteer-Maintained Infrastructure — Heartbleed, left-pad, Log4Shell, and the xz backdoor: the unpaid maintainers under the whole stack, and who finally started paying them
- The Rise of Version Control — from RCS and CVS to Git and GitHub as social infrastructure
- The Agile Revolution — from waterfall to the Agile Manifesto (2001) to a consulting industry
- The DevOps Revolution — Patrick Debois, Flickr’s 10 daily deploys, and the Wall of Confusion
- The IDE Wars — Emacs vs. vi, Eclipse, JetBrains, and VS Code
- The Microservices Revolution — Amazon’s 2002 API mandate through Netflix’s cloud migration
- Famous Software Disasters — Therac-25, Ariane 5, the Patriot clock drift, Mars Climate Orbiter, Knight Capital, and the Post Office Horizon scandal
- Spreadsheet Errors — Panko’s error rates, TransAlta’s $24 million paste, Barclays’s hidden Lehman rows, the London Whale’s sum-for-average, genes renamed for Excel, 15,841 lost COVID cases, and ExceLint
- The Reproducibility Crisis in Computational Science — Claerbout’s rebuildable figures, WaveLab’s “advertising of the scholarship”, Chang’s mirror-image proteins, the Duke trials, an unsorted
glob, code that does not build, and the Ten Years Reproducibility Challenge - Scandinavian Participatory Design — Nygaard and the Iron and Metal Workers, data shop stewards, DEMOS, and UTOPIA’s cardboard laser printer
Core Concepts & Theory
- The Compiler — Hopper to FORTRAN to LLVM: how translation became an engineering discipline
- Assembly, Machine Code and Bytecode — the low-level layer, the JVM, JIT, and the all-hardware-Java dead end
- Type Systems — static vs. dynamic, Hindley-Milner inference, and Curry-Howard
- Garbage Collection — McCarthy’s 1959 invention, the long skepticism, and Rust’s reversal
- Data Structures — arrays to B-trees, Big-O, and the cache reckoning
- Data Compression — Shannon’s entropy floor, Huffman’s exam trick, Lempel–Ziv, and the lossy JPEG/MP3 schemes that built the media internet
- Coding Theory and Error Correction — Hamming’s weekend frustration, Reed–Solomon behind CDs and Voyager, and the turbo/LDPC codes that finally reached the Shannon limit
- Formal Methods and Model Checking — proving software correct: temporal logic, the 2007 Turing-Award model-checking breakthrough, TLA+, and verifying chips and cloud protocols
- Operating System Concepts — kernels, processes, scheduling, virtual memory, and the Tanenbaum-Torvalds debate
- Concurrency and Parallelism — the end of the free lunch, locks, CSP, actors, and the GIL
- Distributed Systems — FLP, CAP, Paxos/Raft, and why you cannot abstract away the network
- File Systems — FAT to ext to ZFS, journaling, copy-on-write, and the license that kept ZFS out of Linux