Search This Blog

Tech Book Face Off: How to Design Programs Vs. Structure and Interpretation of Computer Programs

After reading and reviewing dozens of books on programming, software development, and computer science, I've finally come to a couple of books that I should have read a long time ago. I'm not quite sure why I didn't read these two books earlier. Distractions abound, and I always had something else I wanted to read first. I still wanted to see what they had to offer, so here I am reading How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi and Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, and Julie Sussman. As I understand it, these books are meant to introduce new students to programming so not reading them until now will probably make it difficult to accurately critique them from the perspective of the target audience. I'm still going to give it a try.

How to Design Programs front coverVS.Structure and Interpretation of Computer Programs front cover

Tech Book Face Off: Facts and Fallacies of Software Engineering Vs. Programming Pearls 2

Since I've been hitting the tech books pretty hard for a while now, for this Tech Book Face Off I wanted to take a bit of a breather and do a couple of relatively easy reads. These books have been on my to-read list for some time, so I decided to finally check them out. The first one, Facts and Fallacies of Software Engineering by Robert L. Glass is a book in a similar vein as The Pragmatic Programmer in that it relates various tidbits of advice on the craft of software engineering. As for Programming Pearls 2 by Jon Bentley, this book surprised me. I thought it would be somewhat similar to Facts and Fallacies, just more directly related to instructive programming examples than to the software engineering field at large, but it turned out to be quite a bit different, as we'll see in this review.

Facts and Fallacies of Software Engineering front coverVS.Programming Pearls front cover

Tech Book Face Off: Don't Make Me Think Revisited Vs. The Non-Designer's Design Book

I read a lot of technical books about programming languages, development methods, and coding techniques. Those books help enhance my skills in what I do most of the time, which is embedded firmware development, and what I'm interested in, which is learning new programming languages and new ways of solving problems with software. Every once in a while I feel like I should dip my toes into the design side of the pond so I can get a better sense of how to design features that will make the stuff I build easier to use, and so I can better understand the reasons behind what makes a particular design good or bad. For this dip in the pond, I chose Don't Make Me Think Revisited by Steve Krug, a safe book considering that I've already read and loved the previous version of the book. I also picked up a book I've been meaning to read for a while: The Non-Designer's Design Book by Robin Williams, off of a reading list from Joel Spolsky's blog. These books were both quick, enjoyable reads, but let's break it down a little more.

Don't Make Me Think Revisited front coverVS.The Non-Designer's Design Book front cover

Tech Book Face Off: Programming Elixir ≥ 1.6 Vs. Metaprogramming Elixir

Since I wasn't quite satisfied with the first Elixir book I read, and I wanted to learn more about this rich, complex programming language, I selected a couple more books to help me explore the more advanced aspects of Elixir. The first selection, Programming Elixir ≥ 1.6 by Dave Thomas, promises to cover all of the major parts of Elixir with a clean, well-written book from the coauthor of the excellent The Pragmatic Programmer. The second selection, Metaprogramming Elixir by Chris McCord, focuses on the ways that a programmer can write code to write code in Elixir, always a fascinating endeavor. Both of these books are again by The Pragmatic Programmers publishing company, since I've been mostly pleased with the books they put out. I might just have another of their books waiting in the wings for a review later this year, but let's take a look at how these two Elixir books stack up.

Programming Elixir ≥ 1.6 front coverVS.Metaprogramming Elixir front cover

Tech Book Face Off: Getting Clojure Vs. Learn Functional Programming With Elixir

Ever since I read Seven Languages in Seven Weeks and Seven More Languages in Seven Weeks, I've been wanting to dig into some of the languages covered by those books a bit more, and so I've selected a couple of books on two interesting functional languages: Clojure and Elixir. For Clojure I narrowed the options down to Getting Clojure by Russ Olsen, and for Elixir I went with Learn Functional Programming with Elixir by Ulisses Almeida. You may notice that, like the Seven in Seven books, both of these books are from The Pragmatic Programmers. They seem to pretty consistently publish solid, engaging programming books, and I was hoping to have more good luck with these two books. We'll see how they turned out.

Getting Clojure front coverVS.Learn Functional Programming With Elixir front cover

Tech Book Face Off: Programming Massively Parallel Processors Vs. Professional CUDA C Programming

After getting an introduction to GPU programming with CUDA by Example, I wanted to dig in deeper and get to know the real ins and outs of CUDA programming. That desire quickly lead to the selection of books for this Tech Book Face Off. The first book is definitely geared to be a college textbook, and as I spent years learning from books like this, I felt comfortable taking a look at Programming Massively Parallel Processors: A Hands-on Approach by David B. Kirk and Wen-mei W. Hwu. The second book is targeted more at the working professional, as the title suggests: Professional CUDA C Programming by John Cheng, Max Grossman, and Ty McKercher. I was surprised by both books, and not in the same way. Let's see how they do at teaching CUDA programming.

Programming Massively Parallel Multiprocessors front coverVS.Professional CUDA C Programming front cover

Tech Book Face Off: Data Smart Vs. Python Machine Learning

After reading a few books on data science and a little bit about machine learning, I felt it was time to round out my studies in these subjects with a couple more books. I was hoping to get some more exposure to implementing different machine learning algorithms as well as diving deeper into how to effectively use the different Python tools for machine learning, and these two books seemed to fit the bill. The first book with the upside-down face, Data Smart: Using Data Science to Transform Data Into Insight by John W. Foreman, looked like it would fulfill the former goal and do it all in Excel, oddly enough. The second book with the right side-up face, Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow by Sebastian Raschka and Vahid Mirjalili, promised to address the second goal. Let's see how these two books complement each other and move the reader toward a better understanding of machine learning.

Data Smart front coverVS.Python Machine Learning front cover