Please recommend me a book on the basics of how computers work
July 15, 2014 2:07 PM   Subscribe

So... I've been in book shops and the like and all the books they have are just on Windows 8 or perhaps a book in Linux if they're feeling adventurous, but I'm looking for a book that will tell me how computers actually work. I'm not very advanced with my computer knowledge, but I'd like to know about the foundation of how a computer works rather than the operating system or latest piece of software. Hopefully that gives enough information to get a grasp of what I mean. Can I get some recommendations for books like this please.
posted by sockpim to Computers & Internet (17 answers total) 22 users marked this as a favorite
Give George Dyson's book Turing's Cathedral a try. Despite the title, it is mostly about John von Neumann's work on early computers. But it includes descriptions of how the early computers worked and the problems that they were used to solve. Computers are still built around von Neumann's architecture, though now we have fancy things like compilers and operating systems to (hopefully) make our lives easier.

If you are comfortable with some mathematical notation, Turing's paper on Computable Numbers develops the theoretical model that underlies all computers (including the von Neumann architecture), but it isn't necessarily easy to make sense of.
posted by b1tr0t at 2:19 PM on July 15, 2014 [1 favorite]

I think the book Code would suit your purposes. It starts out with metaphors of morse code and braile and expands on them to explain what is really happening under the covers of a computer.
posted by mmascolino at 2:28 PM on July 15, 2014 [7 favorites]

Are you interested in how transistors work (ie physics of silicon chips), how the computer stores information (ie conceptual overview of how it works), or how it makes mathematical calculations (how mathematical operations and CPUs arise out of 0-1 bits)?
posted by St. Peepsburg at 2:40 PM on July 15, 2014

The Usborne Introduction to Machine Code for Beginners (1983) is still interesting.
posted by Monsieur Caution at 2:46 PM on July 15, 2014 [1 favorite]

You might like How Computers Work.
posted by box at 2:46 PM on July 15, 2014 [2 favorites]

Big second for Code, it's a really wonderful book. Highly readable and a pleasure for both technical and non-technical people.
posted by Erasmouse at 3:12 PM on July 15, 2014

Another vote for Code. It's pretty amazing. Might be a bit hard going in the early chapters on circuitry but you could probably get enough of the gist by skimming the details.
posted by freya_lamb at 3:37 PM on July 15, 2014 [1 favorite]

Not to put you off, but there are a lot of levels at which computers "work". What's in your web browser right now is more or less at the top level. There are lots of little bits of code in an programming language called Javascript that say, "If this then show that." These commands are then interpreted by a program (your web browser) which is itself (mainly) written in a different programming language, C++, which calls yet more bits of code in the operating system. The operating system, in turn, written in yet another language, C, and calls even lower level bits of code. All of these languages, Javascript, C, and C++, are translated at least in part into yet a lower-level language called assembly language. Assembly language can be more or less trivially converted into the lowest-level language, machine code, which is pretty much a bunch of scrambled numbers and letters unless you have spent a long time in the Matrix. We have not gotten to the CPU yet.

The CPU takes these instructions, such as adding two numbers together, and dispatches them to the cores for the actual processing. The cores then dispatch the instruction to an Arithmetic Logic Unit, which is made up of smaller, specialized units, which perform the actual adding. The adders themselves are made up of an XOR gate and an AND gate. (Confession time, I had to look that up.) Finally, finally, we arrive at semiconductors, which move the actual electrons around, as you can see in this diagram of a CMOS logic gate.

I'm deliberately leaving out everything related to networking, disk storage, memory, caching at several levels within the chip, device drivers so the chip can talk to the other parts of the computer, etc., which are arguably more important than the arithmetical operations but don't make a nice top-to-bottom story. But at least you get the flavor of how even extremely smart people don't understand anywhere close to "how the computer works" at anything but the most superficial level. In fact I get a little woozy thinking about it, hoping that my program runs correctly despite the possibility that a literally microscopic speck of dust might be causing a voltage fluctuation in a transistor seventeen levels below.

For a layman's look at just operating systems by a superb writer, see Neal Stephenson's short 1999 book, In The Beginning Was The Command Line, which is a free download or can be had in book form on Amazon. It's not academically rigorous in the least but I have retained more from that oversized essay than a dozen computer science textbooks.
posted by wnissen at 3:53 PM on July 15, 2014 [6 favorites]

The is a very vague question. What specifically do you want to know about how computers work? Also, wouldn't it make a lot more sense to read something online or watch a video online that is up-to-date as computer technology changes a lot? I mean, reading a book about a computer is like using a telegraph to tell someone your email address.
posted by AppleTurnover at 8:34 PM on July 15, 2014

I came in here to recommend Code but I see I was beaten to the punch. I think that book is exactly what you're looking for and very accessible to a layman.
posted by town of cats at 9:23 PM on July 15, 2014 [1 favorite]

Code is a good starting place. At the very least, it will give you enough of an overview to decide what layer of the "stack" you want to learn more about.
posted by Kadin2048 at 10:55 PM on July 15, 2014

This is also wonderful and free too:
posted by hz37 at 5:36 AM on July 16, 2014 [2 favorites]

Came here to make hz37's recommendation: especially if you want a more interactive experience, The Elements of Computing Systems is a really fun and challenging project.

This is the book that inspired the arithmetic logic unit implemented here in Minecraft. :)
posted by edguardo at 8:50 AM on July 16, 2014

I second wnissen's recommendation of "In The Beginning Was The Command Line". A potentially interesting second step would be to try some of the unix utilities by installing a Linux distribution alongside whatever you currently use. A dual-boot system is the way to go, and it's not hard to set up. Just download a Linux bootable ISO, burn it to CD or DVD, and boot from it.
posted by Agave at 8:59 AM on July 16, 2014

Nthing In The Beginning Was the Command Line. I know nothing about computers and it made a huge huge difference in my understanding. I also really love what it says about the world in general, seen through the perspective of typing commands vs pushing buttons. I can't tell you how often I have recommended it.
posted by janey47 at 1:21 PM on July 16, 2014

Thanks a lot for all your answers. I went for Code in the end and it was just what I wanted.
posted by sockpim at 4:39 AM on September 7, 2014 [2 favorites]

« Older Migrating to Office 365 using Outlook?   |   V-shaped bruisey mark - cause for concern? Newer »
This thread is closed to new comments.