Ask HN: Best way to learn about computing history?
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.
156 comments
[ 10.1 ms ] story [ 250 ms ] threadOr try to find a retro computer, e.g. a BBC micro and start programming it for fun?
1. The Annotated Turing.
2. A History of Modern Computing 3ed
3. The ACM Turing award lectures
4. Theory of computation - Dexter Kozen
5. Coders at Work
6. Hackers: Heroes of the computer revolution
Additionally, you could subscribe to Communications of ACM, which is a computing oriented monthly magazine.
Would add:
- How The Internet Happened (history of the internet)
- To The Digital Age (transistor history)
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
It uses base 10 instead of base 2 to store values in its memory, so doing the calculations in your head is a lot easier
It's memory is made from special tubes that have a orange glow at one of 10 positions, meaning you can see the contents of the computer's memory in its entirety just by looking at the machine.
Building off the previous point, you can see the cpu register, which is a single small piece of memory that stores the current data to be modified, which again with the lit-up memory means you can see what the computer is doing at any givenm time.
Finally, the computer has a debugging switch which can pause and step forwards through each instruction the computer is performing, as well as a more granular mode that lets you step through individual parts of an operation (for example each digit being added in a adding operation separately)
It's not always running but if you go I hope you get to see it :)
EDIT: oh and I suppose I should mention there is more than one museum at bletchley, there is the big one that focuses on ww2, but the museum of computing is tucked away to the side a bit.
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?"
Very informative!
https://eater.net/shop
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/
The first gives a great overview, and the latter deep dives into some of the architectural concerns around building computers (which are mostly ignored in the course), like understanding buses, running assembly on actual hardware. The most important bit for me was learning how to read data sheets to figure out how to use chips.
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
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.
http://www.buthowdoitknow.com
Part I - https://www.coursera.org/learn/build-a-computer Part II - https://www.coursera.org/learn/nand2tetris2
Some day I hope to pick up Part II, but Part I was still a lot of fun!
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.
>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.
Relative to the pre-FLOSS era, this is exactly what has happened. FLOSS is ubiquitous today in systems software. Many of the current Big Tech companies and business practices simply would not exist without FLOSS computing infrastructure.
https://www.nand2tetris.org/
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.
>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.
Hah! Yes! After finishing, the first optimization I made was to add an "inc" command to the high-level (Java-like) language you implement. It annoyed me that any time you have "i = i + 1", it translates into VM code of "push 1 onto stack, push i's value onto stack, add, pop stack to i's location", each of which translates into several machine instructions. Especially given that the CPU has an increment instruction!
So I added the inc keyword that would ensure you bypass all of that, if you just want to increment a variable, and thus use significantly fewer cycles. It was really thrilling (well, as much as a technical project can be) to have the level of insight and control needed to make a change like that.
https://news.ycombinator.com/item?id=22692281
I'd call them abstractions. This is how it's - high level programming languages (C#) are just abstractions so that we don't have to remember machine instructions. Similar to a name in Contacts connecting to a phone number; the former is far easy to remember.
It's also worth looking at: https://www.youtube.com/user/yoshikiohshima. There's a goldmine of talks by people like Alan Kay and Seymour Papert. An important question to ask when, "probing" the literature-- why are computers the way they are in terms of human-computer interaction and human culture? What is a, "computer" without making an appeal to mathematical concepts like Turing Machines/Lambda Calculus? What are the major, "paradigm shifts" that gave us GUIs, mice, ect...?
It's worth noting that the history of popular computers parallels almost exactly the neoliberal economic period. Atari was founded in 1972. Look into the Mansfield Amendment and ARPA. Try to get past a cultural myth that computer companies started in, "normal" people's garages. Try to see past the, "present concept." Alan Kay has famously said, "The computer revolution hasn't happened yet." It's up to the current/future generations to, "really" define what computers are in terms of human culture. Think, "living history." Think, "world before-after the invention of the Gutenberg printing press."
https://www.nsf.gov/nsb/documents/2000/nsb00215/nsb50/1970/m...
https://en.wikipedia.org/wiki/Douglas_Engelbart
https://www.theatlantic.com/magazine/archive/1945/07/as-we-m...
This podcast is everything
Classes to look into. An intro course in microcontrollers would be a good place to start. Usually you will find them attached to the Electrical Engineering department. Maybe take a course in Circuits or Computer Architecture.
[0] - www.nandgame.com
In terms of "how computers work" I agree with others who recommended Elements of Computing Systems (aka nand2tetris).
- 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.