Can you explain to a non-technical reader how software works? ?It depends on what you mean by “software” and “explain.”
With respect to software, this particular book focuses on a few areas that are hot today, and not computing in general. Take a look at the following list. ?What would it be like to not have the following technologies?
- Graphic display, both for pictures and video
- Security — whether in the form of passwords, encryption, including public key cryptography
- Data compression techniques to reduce the amount of data sent, whether for text, pictures, or video
- Web Search
- Maps that help us find the most efficient driving route
- Concurrency –?allowing multiple parties to use the same application at the same time
The web and the internet generally would be a dramatically different place, and much smaller, as it was?in 1990?slightly after?Tim Berners-Lee created HTTP (Hypertext Transfer Protocol).
The topics here are important and affect our daily lives. ?The author of “How Software Works” makes a significant effort to explain programming in a way that teenagers and adults could understand, using pictures, tables, flowcharts, simplified numerical examples, and more.
Now, reading this book will give you a top-level view of how these technologies work, but not much more. ?It will help you understand some of the tradeoffs that go on in computing. ?How do you balance:
- Richness of data delivered versus resource use and speed of display.
- Security versus ease of use
- Reduction of size of data versus loss of?fidelity in an image or?video
- And more, there are a lot of tradeoffs in programming.
The ideal audience for this book is bright adults who aren’t programmers, but want some appreciation of the hidden complexity behind much of what goes on on the internet. ?The second ideal audience would be teenagers and young adults who might want a career in computer science, who might benefit from exposure to these varied areas of software. ?Who knows? ?One area might catch their fancy, and then they can study it for real, and put it into practice. ?(I’m giving this book to my second daughter who is interested in programming.)
Quibbles
On page 39, the author suggests that there is no way to do square roots, that it is just a guesswork procedure. ?There are algorithms to do square roots — whether those are used in computing, I don’t know, but it wouldn’t be hard to implement. ?I was doing it when I was 10. ?(I’m not much of a programmer presently, but I am good at math.)
Summary / Who Would Benefit from this Book
I liked this book. ?Give it to friends who want to learn about how much of the web is designed. ?Give it to interested teenagers to expand their horizons in computing. ?If you want to buy it, you can buy it here:?How Software Works.
Full disclosure:?I?received a?copy from a friendly?PR flack.
If you enter Amazon through my site, and you buy anything, I get a small commission.? This is my main source of blog revenue.? I prefer this to a ?tip jar? because I want you to get something you want, rather than merely giving me a tip.? Book reviews take time, particularly with the reading, which most book reviewers don?t do in full, and I typically do. (When I don?t, I mention that I scanned the book.? Also, I never use the data that the PR flacks send out.)
Most people buying at Amazon do not enter via a referring website.? Thus Amazon builds an extra 1-3% into the prices to all buyers to compensate for the commissions given to the minority that come through referring sites.? Whether you buy at Amazon directly or enter via my site, your prices don?t change.
I have not read the book, and I am not sure what is meant by a square root being “guesswork”. Perhaps a better term would be approximation. All algorithms for arithmetic in computing are essentially approximations since we are dealing with a limited number of bits to represent a number. In addition, when it comes down to the actual computation, the algorithms are executed in base 2, not base 10 that we all learned. There are numbers that are “exact” in base 10, but are repeating decimals in base 2 (0.10 comes to mind). To get “exact” solutions, algorithms often will iterate until an error function returns within tolerable limits.
I’ve done a little more research since that point. What I didn’t get was how much a 10-year old kid following instructions from World Book, could do some things that could be coded, but would be slow.
https://en.wikipedia.org/wiki/Methods_of_computing_square_roots
If I had to implement something fast, I would chop the integer part of the number in half for a first guess, and recursively apply the Babylonian method. Alternative version for a first guess would be a table of all square roots of 2 & 3 digit numbers — chop off 2 integer digits at a time till you get to a 2 or 3 digit number, read the guess from the table, and multiply by 10 to the power of the number of times you chopped.