Code: The Hidden Language of Computer Hardware and Software

Category: Computer Science
Author: Charles Petzold
All Stack Overflow 20
This Year Reddit 69
This Month Reddit 5

About This Book

In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.

Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines.

It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.


by lisper   2022-09-12
There's a book for that:

by localhost   2022-06-13
Code is my favorite technical book of all time [1]. Charles does an amazing job of building a computer up from basic principles "two young boys who want to communicate after their parents tell them to go to bed at night" all the way to modern (for 1999) computers. He layers abstraction on top of abstraction all the way to a working computer. My only (slight) disappointment in the book is that he tries to cover operating systems -> object oriented programming in a couple of chapters at the end. That could have been a multi-volume series in its own right.

It goes really well with Elements of Computing Systems (2nd ed) [2] which I kind of think of as a "lab manual" where you get to build a computer from first principles.



by aristofun   2022-04-29
I'm not looking for textbooks or best education materials per se, but rather for thought provoking and inspiring reading on computer science topics.

What books you find the most brilliant, inspiring and explaining the core CS ideas, data structures, algorithms?

For any level of readers, just your personal best two.

For example, I find this book amazing for beginners:

And this one of the same author for more prepared reader:

by Jtsummers   2022-03-01
(Including Amazon links, but just for convenience, buy wherever you want)

Code by Petzold ( - non-technical (in the sense it isn't something to "work through"), covers a lot of interesting topics. Especially approachable for that age.

Elements of Computing Systems by Nisan & Schoken ( - more technical (has content to work through). I've read the first edition, not the second. Has a companion site:

The Codebreakers by Kahn (

I was always interested in ciphers and such as a kid so those two books got my attention when I found them in high school/college. I'm a bit fuzzy, now, about which one I was more interested in but both were good books. (I still have them, may give them a re-read next month.)

There are a few others I have in mind, but just can't recall the titles at the moment.

by RoamingChromeLoam   2021-12-10

by gilmi   2021-12-10

Code: The Hidden Language of Hardware and Software by Charles Petzold.

by kecupochren   2021-12-10

What’s your background?

Going by some curriculum sounds like a sure way to learn it all properly and in-depth. Though also to get bored easily.

The beauty of being self-taught is that you can learn areas that actually interests you. There are of course fundmentals that you need, for which I recommend the vastly popular and very high quality free course from Harvard - CS50x

Taking it will give you a solid foundation to learn whatever you want by yourself. Whether it’s backend, webdev, mobile apps, data science... maybe even games/graphics, but for those you need deep math knowledge.

Sure there will be gaps here and there but CS50 really does a great job at teaching you where to look. I myself took it 6+ years ago and it was the perfect gateway into this career.

On another note, get this book - Code. It takes you from morse/braile code through logic gateways all the way up to understanding everything (from hardware/logic point) about basic computer.

by bmitc   2020-12-03
I don't think there's an easy answer to this question. Software engineers still don't know how to exactly or even efficiently communicate with each other. It's still an evolving field and process. In general, it is helpful to understand software development as a sub-field of systems theory and design, so any book that discusses systems should help one better understand software development.

In general, I do also echo some of the other comments. If you are helping to design the app, you shouldn't necessarily need to understand the implementation details. In my experience, clients, whether they be external or internal or colleagues, getting too involved into what they think the implementation should be is usually a disaster. It puts pressure on the system to conform to how they think it should be, which is usually not necessarily how it should be, and it basically adds unnecessary constraints. The real constraints should be what the software should do and specifications on that, including how the software is intended to be maintained and extended.

Some thoughts on some specific courses and books that I think would be helpful to better understand the goals of software development and design and ways to think about it all:

Programming for Everyone - An Introduction to Visual Programming Languages:

The Pattern On The Stone: The Simple Ideas That Make Computers Work:

But How Do It Know? - The Basic Principles of Computers for Everyone:

The Elements of Computing Systems: Building a Modern Computer from First Principles:

by tonyedgecombe   2020-09-13
I've heard good things about Code by Petzold although I haven't read it myself.

by blueatlas   2020-06-21
Try "Code: The Hidden Language of Computer Hardware and Software." It provides a very simple introduction to electricity. Beyond that, it's just a great introductory book on computing.

by halotrope   2020-06-21
I found the „Hello world from scratch“[1] series from Ben Eater incredibly helpful in connecting the dots between electricity and modern computers. Strictly speaking it is about electronics, still it is superbly presented and incredibly enlightening when coming from „normal“ software engineering perspective of things.

What actually got me there was the book „Code“ by Charles Petzold[2] which traces the development from early circuitry like light bulbs and telegraph wires to modern digital logic. I found that after being introduced to these concepts, learning about the fundamental physics was much more accessible since it was framed in the context of contemporary application.


by grumple   2020-02-20
I recommend Code: The Hidden Language of Computer Hardware and Software by Charles Petzold [1]. It is far more comprehensive than the OP, goes from pre-computer code, to electrical circuits, to an overview of assembly. No prior knowledge needed except how to read.


by nullandvoid   2019-12-26
I recently enjoyed the chapter in "code" about Morse code [1]. After some googling around I also found this morse chat rook which is a good laugh for anyone looking to kill some time struggling to spell profanities in morse :) [2]



by [deleted]   2019-11-17

This might not be exactly what you're looking for.Code: The Hidden Language of Computer Hardware and Software is basically a crash course history of Computer Science. It's not overly technical, it's the kind of mass production piece you'd find in a Barnes and Noble.

by shhh-quiet   2019-11-17

I've seen this recommended before.

Keep in mind that a computer is a collection of abstractions, from the very high level of programming languages and the actual products built with them, down to the very low level of circuits and logic gates and even the physics of electromagnetism... with people devoting sometimes their entire lives to individual slices of that stack of abstractions.

by Mydrax   2019-11-17

The short answer is no.

If you're planning to actually learn the things you say you want to learn, then no book would allow you to do so without you being close to a computer.

Why? Because the technologies you mention revolve around practically being capable of implementing them to solve problems and there is absolutely no way you would be capable of grasping something like for example closures in JS, flexbox in CSS or designing a responsive and neat grid in bootstrap without actually implementing them. Suppose you did read about them for 2 weeks, you come back home, get on your computer, I'd bet anything you won't be able to make sense of what you've read or worse you've forgotten about it.

So let me make you a suggestion, do some theoritical study based on some other field that would help you to understand programming as a whole, or just abandon this fiasco and don't read books, it's your vacation after all. If you're dead set however, read books like this, this, this or this (one of the first books I've read, golden to say the least). You'd come back home ready with a warmed up mindset to begin programming.

I apologize if I sounded aggressive, but when it comes to certain things there's the right and wrong way to do it and reading a book to learn programming is one of the wrong ways to learn programming.

by reddilada   2019-11-17

Give Code a look.

by mcscottmc   2019-11-17

This book explains how computers work from first principles (electricity and switches on up). Very easy to read. I am surprised it hasn’t been mentioned yet.

by Cyphierre   2019-11-17

I Highly Recommend for that purpose.

by rcyost   2019-08-24