CODE: The Hidden Language of Computer Hardware and Software by Charles Petzold
The language of computer hardware and software is not particularly
well hidden in my experience. The more I interact with software, the
more those interactions reflect their makers and materials. This fact is
slowly permeating the zeitgeist as we all, collectively, realize that facebook
is not the open
internet
(no matter how much it may insist on its own benevolence),
and that the current state of AI is simply one of money laundering for
bias. While it is increasingly true that our high-level interactions
with machines are broken, it’s important to
recall that we haven’t fixed any of the low-level problems either (tried
subtracting 399999999999998
from
399999999999999
in Google’s calculator lately?).
These incredible Rube Goldberg, hacks-all-the-way-down, leaking piles
of abstractions that are modern computers are fascinating and powerful.
The modern computer reveals its own history – each layer of abstraction
representing a previous geologic era. The ancient .plan
files of the Sumerians and Hittites.
CODE builds forward through time. Revealing each innovation necessary to create a fully functioning computer. It works its way towards the modern computer starting with binary data representation using morse code. From there it covers non-base-10 number systems, telegraphs, electromagnets and the invention of the relay, the flip-flop switch that allows temporary storage of a single bit. All of this background culminates in a truly wonderful chapter in which you use this technology to build a fully functional computer in your mind’s eye.
The book goes on to explain the Von Neumann architecture and from there moves into topics with which I am more familiar – high level programming languages, object-oriented programming languages, and “The Graphical Revolution”. In these later chapters, an evident object-oriented/graphical/IDE as the logical end-point for computing bias rears its ugly head, but in a book published by Microsoft Press it’s a surprisingly light touch.
CODE is one of the more interesting technical books I have ever read, and also one of the few that I read cover-to-cover over the course of a few reading sessions. It is a story rather than a series of ideas surrounding a theme. It is a history book, not a handbook.
My one critique is that the chapters after the climactic computer construction feel a bit disjointed. There is no real conclusion to the book – I expected a more satisfying wrap-up than I was given. Instead of a tying-up of loose-ends we move on to topics like object-oriented programming, and IEEE 754 floating-point numbers. While the treatment this book provides these topics is interesting, the organization is somewhat lacking.
To spite the lack of organization towards the end of the book, I found CODE a wonderful read and would have no qualms recommending it to anyone at any level of computer literacy.
Rating: 9/10
Meta Note:
As part of my effort to delve more deeply into reading, I will be featuring more review-type content. I will be tagging it all with the “books” tag. If you hate this, you can subscribe to the RSS feed for “computing” to continue to read my insights on something I’m perhaps even the slightest bit qualified to talk about in any sort of informed way.