Code: The Hidden Language of Computer Hardware and Software 2nd Ed

Top Book 2023
Author: Charles Petzold
Publisher: Microsoft Press
Date: August 2022
Pages: 480
ISBN: 978-0137909100
Print: 0137909101
Kindle: B0B123P5GV
Audience: General
Rating: 5
Reviewer: Mike James
Code! We all need to know about it.

This is a book by that aims to explain what programming and computers are all about by a hero of programmers of a certain generation. Back in the days when Windows was new, Charles Petzold told us how to program and for that he opened many doors and made many things possible. How could I possibly criticise a book that he wrote that aims to do the same for the general reader? I'm not going to, but this book has a very specific audience and there are plenty of potential readers who might well not like it at all.

Banner

There is something deep about the whole idea of computers and programming and this book tries to convey it to the innocent reader, but what constitutes an innocent reader is a tricky question. The book starts of at a very leisurely pace with an eloquent description of things that most people know about or at the very least know of - Morse code, Braille, using flashlights to communicate and so on. Very little technical know-how is needed to follow the story, but if you do have some technical knowledge you might find it a bit slow. There are diagrams that could look a bit technical if you are a technophobe, but if this is the case you have no hope of undertstanding anything much.

There are also lots of detours which are charming, but not really getting the reader to the eventual goal. For example, I enjoyed reading about the details of QR codes - something I'd missed out on - but no matter how interesting it is a complex example and it is difficult to see how it usefully broadens the reader's understanding. From here we move on to binary and hex, ASCII and Unicode with a side order of EBCDIC. Again all fun, but far too much information if you are just trying to impart the idea of data representations and number systems.  All great fun to read, but too much if you are just trying to get an overall view.

From Chapter 14 things begin to speed up and become more technical . The pages start to look more like a traditional textbook with logic diagrams explaining how AND, OR and NOT can be combined to do binary arithmetic. Then onto how to use transistors to do the same job - things are more technical but there is still a great deal of history and asides to keep the less technical reader happy. However, it is unlikely that the history and the anecdotes are going to do anything for the non-techies' technical understanding. This is a standard way of engaging the technically illiterate by allowing them to study something else and think that it is somehow expanding their understanding of the technology - and I think it's cheating.

The final third of the book quickly rachets things up - flip flops, adders, CPUs, assembler, perippherals, operating systems and  so on. The technical level ramps up all the time, but it is still a friendly presentation with lots of (technical) diagrams, little bits of history and stories about how things came to be.

Conclusion

This is a book that attempts a very difficult task - to explain how computers work to a lay audience. This is such a difficult task I'm not sure it's possible and I don't think this book suceeds any more than any of the other efforts do. You can understand a computer by being able to name its parts - say what a CPU is, what memory is and so on' but this is not understanding the magical principle of the computer as a machine that can obey instructions. Babbage was possibly the first to get the idea, Ada Lovelace was probably the second and since then there have been many who "get it". However, really understanding how a machine can read "instructions" and "obey" them has nothing to do with transistors and flip-flops, this is just one of the many possible way of realizing the same idea. It isn't enough to understand electronics or programming to really understand how a computer works. If you do understand one or the other, or preferably both, then at some point you might "get it" and then it's like an amazing epifany that such machine are even possible. It's the same principle that lets DNA act as a program for living things and it is general and rises above the complexities of implementation.

Despite all my disappointments. this is still a book that deserves a full score of 5 because it is well and engagingly written and you can't help have fun reading it. But it isn't for the complete beginner.

To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.

Banner


Software Architecture In Practice

Author: Len Bass, Dr. Paul Clements and Rick Kazman
Publisher: Addison-Wesley Professional
Pages: 464
ISBN: 978-0136886099
Print: 0136886094
Kindle: B094CPJ96B
Audience: Software architects
Rating: 4.5
Reviewer: Kay Ewbank

This is the fourth edition of a book widely regarded as a classic since its firs [ ... ]



Seriously Good Software

Author: Marco Faella
Publisher: Manning
Date: March 2020
Pages: 328
ISBN: 978-1617296291
Print: 1617296295
Kindle: B09782DKN8
Audience: Relatively experienced Java programmers
Rating: 4.5
Reviewer: Mike James
Don't we all want to write seriously good software?


More Reviews