This book explains how today's computing and communications world operates, from hardware through software to the Internet and the web. It includes enough detail that you can understand how these systems work, no matter what your technical background. The social, political and legal issues that new technology creates are discussed as well, so you can understand the difficult issues we face and appreciate the tradeoffs that have to be made to resolve them. A compact but detailed and thorough explanation of how computers and communications systems work, for non-technical readers who want to better understand the world they live in. A great source for technical readers who want something that will help their friends and family learn about digital systems.
Brian Wilson Kernighan is a computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Dennis Ritchie and contributed greatly to Unix and its school of thought.
Kernighan mainly speaks about software, hardware, communication (and data), in a chronologically organized manner. The topics on communication were especially intriguing, and I think I was really fortunate to meet this book when my interests toward security peaked. Great for novices, but also very nice for digital experts.
My Amazon review: In the preface to this book, Kernighan poses a question: What should a well-informed person know about computing? He answers this question first by breaking the field down into hardware, software, and communications (with data a possible fourth category), and then by walking through some of the most important concepts in these areas, describing them in a lively, accessible way. The book is targeted at readers without a computer background, but it's a short, fun read for the more knowledgeable as well.
How things work Brian Kernighan's latest book is based on a course called "Computers in our world" which he's been teaching at Princeton since 1999. The course is intended not for computer scientists or mathematicians but for students of the liberal arts, and his aim is to explain how computer hardware, software and communications work, and how they've changed our world, in language that a general reader can understand, regardless of their experience of technology. This is also the intent of his book, and it succeeds brilliantly.
He begins with a gentle introduction to the way in which computers have touched countless aspects of our everyday lives - using phones, taking photos, listening to music, watching videos, doing shopping, staying in touch with friends, finding your way around - since the early 90s, when most of his youthful audience was born (a time when, he wryly points out, "dinosaurs no longer walked the earth (your parents excepted), but most of [these enhancements] didn't exist at all" [p2]). This bravura passage reinforces an important point for those of us with longer memories of technology: computers aren't computers any more. For example, elsewhere he quotes an HP executive who points out that a digital camera is just "a computer with a lens", and notes that much of the popular functionality that we use every day has moved off the desktop or laptop and onto the phone (he points out that the phone in the pocket of any Princeton student has more processing power than the single computer which served the whole campus when he arrived as a graduate student in 1964).
Having got the reader's attention by reminding them of their magic, he goes behind the screen to clearly describe how a computer - any computer - works. He's able to do this because they all work in the same way: processing information which is represented digitally, and which is passed between machines via a digital network. His journey beneath the hood takes in a variety of technical details such as the mechanism of a disk drive, the tasks performed by an operating system, the different types of algorithm complexity, how to program in JavaScript, the structure of an Internet Protocol packet and how to defend yourself against attacks when using the Web. It sounds like a lot of material, but he's such a clear writer (and good teacher) that he keeps it all interesting, and never loses sight of his goal. Which is not to turn you into an expert computer scientist, but to give you an well-informed appreciation of the possibilities and limitations of the machines which surround us, and which will only become more pervasive with the passage of time.
Finally, for the benefit of the non-specialist reader, it might be worth mentioning exactly who Kernighan is - mainly because he does nothing in this excellent book to draw attention to his achievements. In the 70s, he worked at Bell Labs and was one of the contributors to the Unix operating system (including coining its name), variants of which underpin most of today's computers (including, for example, every iPhone and Android phone, and all but two of the top 500 most powerful computers in the world). He's the author of many Unix programs, is co-developer of at least two widely-used programming languages (AWK and AMPL), and has written or co-written several essential books on computer science (including The C Programming Language, which is so widely-used amongst programmers that it's usually referred to as "The C Bible", or "The White Book"). More obscurely (but perhaps more significantly), he's developed heuristic methods for solving important optimization problems, some of the applications of which are fundamental to the internal structure of computers.
I read this book a couple of years ago, so I can't comment on specific things any more, but I remember at the time thinking to myself how clear and direct the explanations were. I teach computational subjects to 4th through 12th graders, and so although I knew the material already I very much appreciated the writing. I've since recommended it to both my parents and my in-laws - a wonderful book to give someone who feels baffled by computers but wants to learn more.
One of the most informative books I've read. It's well written and easy to understand. It's a good introduction to computers and communication principles to non engineers, but also a good refresher book for the engineers. I highly recommend you read it.
This book is meant to be a primer to non-computer-science people on basic computer engineering concepts. As such, it largely succeeds, and though I am not the target audience, I enjoyed the overview of the internet, which I was less familiar with than the other sections (hardware and software). I enjoy Kernighan as a writer (this is the third of his books that I've read), but I think that this particular book could do with a few more slower paced examples for some of the concepts. Perhaps I'm underestimating the students of his classes (this book rose out of a class he teaches at Princeton on computers for non-computer-majors), but I think if I were explaining some of the concepts, I would spend some more time on each one. Likely he is constrained by a desire to have a shorter length book. This is a good book for anyone who doesn't know much about the inner workings of computers, and would like an overview of the field.
Great overview of modern digital technology, talks about everything from bits and bytes to security and privacy to the protocols of the Internet and big concepts like Cloud Computing.
Would recommend for non-technical people working in technology, or just anyone who wants to know what software engineers work on/with.
The author is admittedly more paranoid about privacy than most of us, but for good reason. He talks about the many ways companies track our data and just how detailed it can get.
With these kind of books you judge them on how they treated stuff that you had prior knowledge, I felt Kernighan did a good job so when he delved into areas I didn't know much about I trusted he was telling the truth. Like how the internet and world wide web are not the same thing, among other nuggets.