Live data from Hacker News

Ask HN: Best way to learn about computing history?

news.ycombinator.com

51–60 of 157 posts

Re: Ask HN: Best way to learn about computing history?

#52
I haven’t read it, but heard good things about “The Soul of a New Machine” about Data Generals efforts create a new 32-bit superminicomputer.

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.

Re: Ask HN: Best way to learn about computing history?

#53
Though it doesn't cover all of computing history, this site is a comprehensive timeline of personal computing history from 1947 to now.

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.

Re: Ask HN: Best way to learn about computing history?

#54
I'm not at all sure that learning about computer history and learning about how computers work are the same thing. For example, looking at early microprocessors would give you the idea that instruction set architectures are completely random when in fact their designers were faced with a limited transistor budget and very short development times. Often, microprocessors were offered as a replacement for discrete logic, rather than as generally programmable computing devices.

The history of computing is replete with really dumb ideas, from addition and multiplication tables in memory (IBM 1620) to processors optimized for Ada that ran too slowly to be useful (Intel iAPX 432). There were really smart ideas, too, such as cache (IBM System/360 Model 85) and RISC (too many systems to mention). What you want is just the smart ideas, I'd say.

If you want to get an understanding of how modern computers work, and given your CS degree, I would recommend David Patterson/John Hennessy's Computer Organization and Design, any edition. A lot of universities use this book in a second-year architecture course.

In terms of relating this information to the overall hierarchy of computer systems, I would also recommend Nisan and Schocken's Elements of Computing Systems.

Re: Ask HN: Best way to learn about computing history?

#55
My practical recommendations:

  * understand brainfuck or so called RAM machine as simplest computer
  * read 50 pages of https://en.m.wikipedia.org/wiki/Code:_The_Hidden_Language_of_Computer_Hardware_and_Software
  * read https://www.bottomupcs.com/ to understand low level stuff
  * Learn some C
To understand computation I think scheme or lambda calculus is the best. Don’t know good intro.

Bear in mind that what we have is just certain implementation/abstraction for computation that’s likely still suboptimal. That’s why people come with new languages/VMs. I wonder if some alternative to RAM machine exists. I’ve heard about lisp machines…

Re: Ask HN: Best way to learn about computing history?

#56
post #7

Ben Eater's Youtube series "Building an 8-bit Breadboard Computer" is a really good introduction to the lowest levels of how a computer works: 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?"

Ben Eater also sells a kit for those who want to follow along by building their own: https://eater.net/shop

Re: Ask HN: Best way to learn about computing history?

#57
post #7

Ben Eater's Youtube series "Building an 8-bit Breadboard Computer" is a really good introduction to the lowest levels of how a computer works: 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?"

Shout out to Ben Eater. This dude explains how the internet works and rips open an Ethernet cable and hooks up an oscilloscope to it and decodes the bits that transfer over the physical cable.

Very informative!

Re: Ask HN: Best way to learn about computing history?

#60

From a NAND gate to Tetris was excellent. Informative and obvious https://www.nand2tetris.org/

I cannot endorse this enough. 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…

Agreed. For me, the course was eerily able to hit my exact sweet spot of difficulty. Almost every project had me in the "I'm about to give up" stage just long enough before I had a breakthrough and kept continuing.

>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.

Post reply on HN