Ask HN: Best way to learn about computing history?
213 points| Tmkly | 3 years ago
However recently I've become very aware that JS/TS and Swift etc are just APIs on top of APIs. I've been drawn to learning more about how computers work, the history of programming/computers (Unix, Sinclair, commodore, etc and even going back to Ada Lovelace, Babbage and mainframes in the 1950s) and things like memory allocation. I've tried learning some BASIC and Assembly code but haven't really got very far. I read/devour articles on sites like https://twobithistory.org but they only get you so far.
What can I do to help accelerate this and satiate this desire to learn more about how computers work? I live in London, UK and would be happy to spend some money on a uni course or something if there was a good one. I learn best practically so like to be "doing" something as well as theory.
[+] [-] robotguy|3 years ago|reply
https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2...
I recommended it to my daughter when she was taking a class in R and asked "But how does the COMPUTER know what to do?"
[+] [-] Banana699|3 years ago|reply
Ben Eater is amazing, but his series in my very humble opinion isn't the best answer to this question. I found the emphasis on the breadboard and the particulars of physical implementation getting in the way of a clean pedagogical introduction to logic circuits as a DAG of abstract computational elements implementing function from {0,1}^n -> {0,1}^m (which we then implement with real circuits in whatever medium and form we choose), it's very "DIY" and maker-oriented in nature. This doesn't negate it's status as a masterpiece of educational vlogs, I just feel it leaves a first-time learner hanging on some very important questions.
The single best answer I have ever seen to this question is the outstanding The Elements Of Computing Systems[1], better known as the NandToTetris course[2][3]. You literally start with Nand and build a computer, an assembler, a VM, a compiler, a simple runtime library, and - finally - Tetris running on top of all that. It's one of the best introductions to computers and computer science I have ever seen in my life, at once a textbook and a work of science communication. It comes with it's own software suit[4], and the first 4 chapters of the book (from Nand to a fully functional computer capable of running machine code) are gamified in [5].
[1] https://mitpress.mit.edu/books/elements-computing-systems
[2] https://www.youtube.com/playlist?list=PLrDd_kMiAuNmSb-CKWQqq...
[3] https://www.youtube.com/playlist?list=PLrDd_kMiAuNmllp9vuPqC...
[4] https://www.nand2tetris.org/software
[5] https://nandgame.com/
[+] [-] rschachte|3 years ago|reply
Very informative!
[+] [-] thamer|3 years ago|reply
[+] [-] tonfreed|3 years ago|reply
https://store.steampowered.com/app/1444480/Turing_Complete/
Also in the same vein https://nandgame.com
I found that actually building things helps me learn properly
[+] [-] louwrentius|3 years ago|reply
[+] [-] Tmkly|3 years ago|reply
[+] [-] MichaelMoser123|3 years ago|reply
[+] [-] SkyMarshal|3 years ago|reply
Explains how we got from Boolean logic to microchips and software.
Also, the Computer History Museum in Silicon Valley has an excellent exhibit containing both early computing devices and the seminal papers that were the precursors and enablers of modern computers: https://www.computerhistory.org/revolution/; https://computerhistory.org/timelines/;
[+] [-] Phithagoras|3 years ago|reply
https://www.nand2tetris.org/
[+] [-] naikrovek|3 years ago|reply
some of it is hard and will have you wondering if you want to continue. if you do, and I highly recommend that every developer complete this course, you will find yourself thinking in new ways and understanding many problems very differently, which is a very good thing.
and you will see huge performance problems in almost all software from them on, because none of this (I gesture vaguely at everything everywhere) should be as slow as it is. none of it.
[+] [-] krallja|3 years ago|reply
[+] [-] ravenstine|3 years ago|reply
https://kpolsson.com/comphist/
Apparently the author has been maintaining that timeline since 1995 and is still doing it!
While it doesn't cover things like computer science, I think it's an excellent jumping off point for learning about notable people and events.
Not exactly what you asked for, but you may also be interested and may give you some insight I think more programmers should have.
EDIT: Also, don't stop at Babbage & Lovelace. Although Babbage's analytical engine was one of the first, if not the first programmable computers with a form of memory, there were people working on extremely primitive computers (or rather advanced calculators) way before Babbage. Schickard, Pascal, and Leibniz conceived of and developed calculating engines that did basic math with support for interim value storage, which one might consider to be the earliest form of computer memory.
[+] [-] themadturk|3 years ago|reply
[+] [-] eigenvalue|3 years ago|reply
[+] [-] tiahura|3 years ago|reply
[+] [-] eigenvalue|3 years ago|reply
https://www.google.com/search?q=oral+history+computer+museum...
To find more (and there are many great ones outside of the Museum), you can try a broader search:
https://www.google.com/search?q=oral+history+arpa+filetype%3...
I have found that I can read around 3-5x faster than listening to people talk, depending on the speed of the speaker (most of the people interviewed in these oral histories are quite old and can speak a bit slower), and I also retain the information much better. There is something about reading an actual conversation by someone who was there when this stuff was being invented (or literally invented it themselves) that you don't get from reading a retrospective historical account, and it makes the information stick with you more, since it's all framed in stories and personal accounts.
Some favorites:
https://conservancy.umn.edu/bitstream/handle/11299/107503/oh...
https://archive.computerhistory.org/resources/access/text/20...
https://conservancy.umn.edu/bitstream/handle/11299/107247/oh...
https://archive.computerhistory.org/resources/text/Oral_Hist...
http://archive.computerhistory.org/resources/text/Oral_Histo...
https://conservancy.umn.edu/bitstream/handle/11299/107613/oh...
https://digitalassets.lib.berkeley.edu/roho/ucb/text/valenti...
https://conservancy.umn.edu/bitstream/handle/11299/107642/oh...
There are so many other good ones, but that's a good start!
[+] [-] fernly|3 years ago|reply
https://www.youtube.com/watch?v=6bVRytYSTEk
The transcript is here:
https://www.computerhistory.org/collections/catalog/10273824...
Highly entertaining life story of the woman who managed the flight software for the Apollo Guidance Computer.
[+] [-] nicklaf|3 years ago|reply
[+] [-] RugnirViking|3 years ago|reply
Another good approach one can take to learn is starting with a simple system with well-defined rules, and making a simple computer out of it. Many people do this in minecraft, for myself it was boolean functions in excel. You can and should look many things up during this process, fail and rework designs several times etc. Learning how logic gates work, then scaling the knowledge up to bit adders, registers, ALU, making a cpu instruction set and starting on basic turing machine architecture is a very rewarding hobby and is definately the best way to get low-level knowledge
[+] [-] bin_bash|3 years ago|reply
[+] [-] Tmkly|3 years ago|reply
[+] [-] Jtsummers|3 years ago|reply
EDIT: Per Amazon there's a second edition of Code coming out at some point, but no date that I've been able to find.
I've also got a copy of, but not yet read, Ideas That Created the Future: Classic Papers of Computer Science edited by Harry R. Lewis, the contents are in chronological order with the most recent in 1979. It has 46 different papers on computing, being largely historical this ought to be a decent starting point as well.
[+] [-] leohonexus|3 years ago|reply
http://www.buthowdoitknow.com
[+] [-] Tmkly|3 years ago|reply
[+] [-] ecliptik|3 years ago|reply
https://www.tracykidder.com/the-soul-of-a-new-machine.html
Another comment mentioned “Pirates of Silicon Valley” as a good dramatization of MS/Apple and there’s also the miniseries “Valley of the Boom” about the rise and fall of Netscape and “Halt and Catch Fire” which is a fictional and thematic view of 80s/90s computer history.
[+] [-] wantoncl|3 years ago|reply
If you want some Apple history, particularly on the early days of Macintosh, check out folklore.org. DO NOT start reading it if you have anything important to do for the next 24 hours.
[+] [-] Anon84|3 years ago|reply
You might be familiar with Feynman's Lectures on Physics, but his lectures on Computation (based on a class he taught and his work in 'Connection Machine') aren't any less amazing. Through this short book, Feynman guides us through the concept of computation and the van Neumann architecture in his unique style, from logic functions, to Turing machines, coding and even quantum computers. It will give you a unique appreciation of the finer points in which computers are "Dumb as hell but go like mad" so that you can better squeeze every bit of performance out of your code.
[+] [-] Jach|3 years ago|reply
History-wise, enjoy learning slowly because there's so much that even if you dedicated yourself to it you wouldn't be "done" any time soon! Some suggestions in order though:
Watching The Mother of All Demos: https://www.youtube.com/watch?v=yJDv-zdhzMY
A short clip of Sketchpad presented by Alan Kay: https://www.youtube.com/watch?v=495nCzxM9PI
An article from the 40s that also inspired Engelbart: https://www.theatlantic.com/magazine/archive/1945/07/as-we-m...
The Information by James Gleick
What the Dormouse Said by John Markoff
The Psychology of Computer Programming by Gerald Weinberg
Lastly, to mix up in whatever order you please, some paper collections:
Object-Oriented Programming: The CLOS Perspective edited by Andreas Paepcke
History of Programming Languages papers for various langs you're interested in, here's the set from the second conference in 1993 https://dl.acm.org/doi/proceedings/10.1145/154766 but there have been further conferences to check out too if it's interesting
Also all of the Turing Award winners' lectures I've read have been good https://amturing.acm.org/lectures.cfm
All that and some good recommendations others have given should keep you busy for a while!
[+] [-] netsharc|3 years ago|reply
[+] [-] Tmkly|3 years ago|reply
[+] [-] chillpenguin|3 years ago|reply
In terms of "how computers work" I agree with others who recommended Elements of Computing Systems (aka nand2tetris).
[+] [-] quirino|3 years ago|reply
[+] [-] khaledh|3 years ago|reply
I highly recommend reading "The Dream Machine" by Mitchell Waldrop. It's very well written, and covers a huge swath of computing history, from the ENIAC to the Internet (it was written in 2000).
Instead of recommending specific sources (too many), I can mention key milestones in computing history that you may want to research:
- Theory of computation (Alan Turing, Alonzo Church)
- Early binary systems (John Atanasoff, Konrad Zuse, George Stibitz, Claude Shannon)
- Early computers (ABC, ENIAC, EDSAC, EDVAC, Von Neumann architecture)
- Early programming (Assembly language, David Wheeler, Nathaniel Rochester)
- Early interactive computing (MIT Whirlwind, SAGE, TX-0, TX-2)
- Early mainframes (UNIVAC, IBM 70x series)
- Early programming languages (Speedcoding, Autocode, A-0, A-2, MATH-MATIC, FLOW-MATIC)
- First programming languages (FORTRAN, COBOL, LISP, ALGOL)
- Early operating systems (GM-NAA I/O, BESYS, SOS, IBSYS, FMS)
- Early time-sharing system (MIT CTSS, Multics, DTSS, Berkeley TSS, IBM CP-67)
- Early Virtual Memory (Atlas, Burroughs MCP)
- Early minicomputers (DEC PDP line)
- Mainframe operating systems (IBM OS/360, UNIVAC EXEC)
- Early online transaction processing (SABRE, IBM ACP/TPF)
- Early work on concurrency (Edsger Dijkstra, C.A.R. Hoare, Per Birch Hansen)
- Early database systems (GE IDS, IBM IMS, CODASYL)
- Early Object-Oriented Programming (Simula I, Simula 67, Smalltalk)
- More programming languages (CPL, BCPL, B, C, BASIC, PL/I)
- Mini/Supermini operating systems (Tenex, TOPS-20, VMS)
- Structured Programming (Pascal, Modula, Niklaus Wirth)
- Relational data model and SQL (Codd, Chamberlin, Boyce)
I could keep going on, but this is already too long. I hope this at least puts your feet on the first steps.
[+] [-] criddell|3 years ago|reply
[+] [-] listenfaster|3 years ago|reply
http://www.catb.org/~esr/writings/cathedral-bazaar/
and other things from esr at
http://www.catb.org/~esr/
including the aforementioned jargon file. Here’s one I hadn’t stumbled on before, ‘Things Every Hacker Once Knew’
http://www.catb.org/~esr/faqs/things-every-hacker-once-knew/
For an activity ymmv depending on how much time you can spend; an alternative to building a computer from scratch, or an OS from scratch, is to buy a vintage cheapie running cp/m or dos, something where the OS isn’t abstracting memory management for you. Growing up in the 80s, I think managing my own memory and _everything_ that implies was the greatest teacher.
[+] [-] AdamH12113|3 years ago|reply
>ETB (End of Transmission Block) = Ctrl-W >Nowadays this is usually "kill window" on a web browser, but it used to mean "delete previous word" in some contexts and sometimes still does.
I tried Ctrl-W in a Linux console and it works! This will save me some trouble in the future.
[+] [-] shadowofneptune|3 years ago|reply
[+] [-] Tmkly|3 years ago|reply
[+] [-] als0|3 years ago|reply
[+] [-] cameronh90|3 years ago|reply
[+] [-] bingaling|3 years ago|reply
https://en.wikipedia.org/wiki/The_Machine_That_Changed_the_W...
is out of print, but can be found intermittently on youtube.
I love the coverage of 1940's computing, with interviews with several of the surviving people:
https://en.wikipedia.org/wiki/Konrad_Zuse
https://en.wikipedia.org/wiki/ENIAC
https://en.wikipedia.org/wiki/Eckert%E2%80%93Mauchly_Compute...
https://en.wikipedia.org/wiki/EDSAC
Currently working episode links:
1: https://www.youtube.com/watch?v=hayi9AsDXDo
2: https://www.youtube.com/watch?v=GropWVbj9wA
3: https://www.youtube.com/watch?v=rTLgAI3G_rs
4: https://www.youtube.com/watch?v=E1zbCU5JnE0
5: https://www.youtube.com/watch?v=vuxYUJv2Jd4
[+] [-] spogbiper|3 years ago|reply
https://adventofcomputing.com/
It's also fairly entertaining
[+] [-] digisign|3 years ago|reply
- The Story of Math(s) by Marcus du Sautoy to set the stage... school and taxes in ancient Sumeria, Fibonacci bringing Indian numbers to Europe, and other fascinating subjects.
- We watched short biographies of Babbage and Lovelace, full-length ones of Turing and Von Neumann. The "code breakers" of WWII.
- Top Secret Rosies: The Female "Computers" of WWII, another good one.
- There's more history in PBS' Crash Course Computer science, than you might expect. It is great although so peppy we had to watch at .9x with newpipe. Shows relays, vacuum tubes, to ICs, to the Raspberry Pi. As well as the logic gates they model.
- "The Professor" at Computerphile is a great story teller about the early days.
- There are great videos about CTSS being developed at MIT I think, where they are designing an operating system via paper terminal and trying to decide on how to partition the memory/storage: https://www.youtube.com/watch?v=Q07PhW5sCEk
- The Introducing Unix videos by ATT are straight from the source: https://www.youtube.com/watch?v=tc4ROCJYbm0
- The movie/book "Hidden Figures" touches on this time as well. Facing obsolescence by IBM, one of the characters teaches herself Fortran.
- The Pirates of Silicon Valley is a fun dramatization of the late 70s to 80s PC industry. It specifically calls out the meeting between MS and IBM as the deal of the century. We also watched a "Berkeley in '68" doc on Kanopy to set the stage before this one. Interesting, but a tangent.
- The "8-bit Guy" is also great, he dissects and rebuilds old home computer hardware from the same era, and teaches their history as he does it. Even his tangential videos on why there are no more electronics stores (besides Apple) in malls is great.
- There are good docs on the "dead ends" of the industry as well, such as "General Magic" and "Silicon Cowboys."
- "Revolution OS" a doc about the beginnings of FLOSS and Linux.
[+] [-] tapoxi|3 years ago|reply