Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: CS and programming books of 2017
205 points by avrmav on Dec 8, 2017 | hide | past | favorite | 71 comments
Which CS/Programming related book(s) that were released in 2017 would you suggest?

My suggestion: Clean Architecture by Robert Martin

My highlight was Yegor Bugayenko's "Elegant Objects". Volume 2 was released this year (however I found the first Volume (2016) much better).

Yegor describes what went wrong with object-oriented programming. Whether you are stuck with Java or broaden your horizon, I can really recommend this book series, as it shows nicely how to deal with object-oriented code in the right way.

What was eyeopening for me was that code, written after some of the rules he proposes, becomes indistinguishable from functional programs. One example of a tree of objects resembles a LISP program. This all made me realize how flawed some of the arguments are that to me seem to divide the functional/types and OO camps.



The books are short and relatively expensive, but Yegor claims to refund 20 euros for everyone who is willing to write a blogpost.

Lately I've read blogpost about DAO posted on HN written by author. I also have read handful of his blogposts like rant on MVC not beeing OOP. Author simplified SOLID in a way that it looks like he is not correct in post about SOLID. Like he tries to bash Bob Martin and Martin Fowler to look cool. Strikes me as not really practical. Maybe even that he only tries to look like he knows what he is writing about.

Recently found him too. The 'webinars' I've seen from YouTube are interesting (https://www.youtube.com/playlist?list=PLaIsQH4uc08x0H7Cu_OO7...). Certainly seems like a productive individual.

Any ebook on the way?

Nope, the author described why he won't made e-books here: http://www.yegor256.com/2016/11/09/why-no-ebooks.html

tl;dr because of piracy

Francois Cholet (author of Keras)'s Deep Learning with Python will be complete and fully published on the 20th of December: https://www.manning.com/books/deep-learning-with-python The chapters released so far are very good, the outlook chapters were extensively discussed on HN: https://blog.keras.io/the-limitations-of-deep-learning.html and https://blog.keras.io/the-future-of-deep-learning.html

Wickham's R for Data Science came out in December 2016, I'd like to pretend that counts as 2017: http://r4ds.had.co.nz/ It's a very complete introduction to the tidyverse which makes working in R much more pleasurable.

The second edition of Python for Data Science came out in October 2017 - that one focuses on Pandas, numpy and Jupyter notebooks, reasonably good introduction to those libraries.

The second edition of Sebastian Raschka's Python Machine Learning came out 2017 too - that one focuses more on scikit-learn and tensorflow, have only heard good things but haven't read much in it.

Cholet's book is already complete, and available as PDF & in print form - 20th of December is timeline for ePUB/MOBI

As a side-comment, don't limit yourself to recently released programming books! I used to do that when reading about web stuff, since most older texts were outdated. But there's many topics for which older books are far better sources of information! The 80s and 90s had tons of improvements and innovations which are still highly relevant. Don't fall into the trap of thinking that something is better just because it's new.

As for 2017 CS books, I'd second Designing Data‑Intensive Applications.

If we count updates, the latest revision of The Swift Programming Language is solid. My forays into Swift have been enjoyable.

This last one is kinda cheating since it's continuously updated, but I'd highly suggest browsing through the HTML Living Standard [0] and reading any parts that grab your attention.

EDIT: Looking through whatwg's news, I found out there's a developer edition [1] of the spec which strips the stuff that's only relevant to browser developers.

[0] https://html.spec.whatwg.org/multipage/

[1] https://html.spec.whatwg.org/dev/

Yup, Martin did a fantastic job with his book. Before you would have to go through hundreds of blog post and articles to piece all that distributed systems knowledge together. It's kind incredible how much he managed to cover in a clear and understandable language without going into the math or proofs. His talks are great too, thank you Martin if you're reading this!

+1 for Designing Data-Intensive Applications. I worked my way into the hadoop ecosystem a few years ago and read dozens of books before I started seeing the big picture of databases, data processing and distributed systems. This book gives the same grounding in a single read, it’s an instant classic.

I found Clean Architecture to be a big disappointment. I specifically waited for its release to read all of his architecture-related advice in one volume, and then found that most of the meat was in figures and diagrams which I couldn't follow because of my visual impairment. I realise that's not entirely Uncle Bob's problem, but all the way through the book I was telling myself that it would be worth it once I reached the case study in chapter 33. At which point he zoomed through a use case and architecture diagram and called it a day.

Good books have figures. The best books have figures and textual explanations to go with them.

Are you able to read braille? Are these diagrams translateable on that fashion?

Yes to both, but unfortunately the cost in time, money and related skills is prohibitively high:

- The diagrams would need to be re-traced and any printed labels replaced with braille ones.

- As braille characters can often take up more space, the labels might need to be shortened, meaning that a separate diagram key would need to be prepared.

- These are technical diagrams, so if you redraw them at the same scale they appear in the book they might not necessarily be understandable in a tactile form.

In terms of money, if you can get away with using A4 paper, the particular type you would need costs £0.38 per sheet. If you need to use A3, it's £0.77 per sheet. Many commercial transcription services, when you take into account the labour costs of adapting the diagram, will charge £70 plus per image, and £3-5 for additional copies if you need them. There are free transcription services provided by charities, but the staff are not experts in preparing technical diagram material and the turnover time can be six months or more.

TL;DR - it's not worth it. Producing one tactile figure would cost twice the cost of the book. I don't know how many figures there are in total.

Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

https://amzn.com/B06XNKV5TS ($24.99 Kindle)

This book has picked up quite a bit of buzz as an intro to machine learning. https://news.ycombinator.com/item?id=15772174

>cloverich: The quality of the book (thus far) is so high that I immediately started Googling about the author to try and learn more

>chillee: He used to be the PM of youtube video classification too.

+1. I'm finding this book really useful for getting my head around machine learning and TensorFlow.

Also Deep Learning: A Practitioner's Approach by Patterson and Gibson.

In a more theoretical vein, "Deep Learning" by Goodfellow, Bengio, and Courville was published in late 2016.

Effective Java, 3rd edition is coming 28th of December!


plot twist: the book is actually on Kotlin

Shameless plug: I've recently released an open source, online, interactive[1], little-prerequisite, plain language, introductory Computer Graphics textbook here: http://gabrielgambetta.com/computer-graphics-from-scratch

[1] Live demos with more interaction coming very soon!

You actually have a lot of really interesting stuff on your site. The Client-Server Game Architecture and Pathfinding Demystified articles also both look like really good reads. Thanks for sharing.

Thanks for your kind words :)

This looks like a nice book but I'm wondering if the overhead of learning Idris on top of Coq (which I'm familiar with) would have any benefits - would you say it's different enough from Software Foundations?

I haven't gone through SF yet, but I believe TDDwI and SF have very different goals. TDDwI is about hands-on development with a particular language, whereas SF uses Coq to investigate and formally verify broad theoretical topics, right?

TDDwI is also my pick for the year. It's really well done.

You're right that SF is more theoretical. I guess I was curious if the benefit of the book comes from being newly exposed to a dependently-typed language in general or the actual topics of the book, if that makes sense. It sounds like it's well-written though - I'll have to add it to my list. Thanks!

TDDwI is much more focused on more common programming problems than SF and using it like a general purpose language. Don't get me wrong, I love SF, but it might complement it, and be worth coming back to SF after TDDwI.

how are you using ( or plan to use) Idris? for Javascript, C ? can you put some practical examples?

Technically Wrong by Sara Wachter-Boettcher

A really interesting dive into looking at common apps and industry problems from alternate perspectives, as well as how bias affects technical and design decisions in software. Not super technical per se, but it's pretty short and raises great and timely questions.


I loved that book too. What I especially liked is it wasn't just theory and rhetoric. There were specific examples of things that went wrong, backed with statistics on why it went wrong, and actionable ideas for how to fix things.

Efron and Hastie's CASI is an instant classic. Deep history for any ML researcher or enthusiast. And remarkably accessible ;)

Computer Age Statistical Inference: Algorithms, Evidence and Data Science


Designing Data‑Intensive Applications by Martin Kleppmann

This is the book I wish I had 5 years ago.

Yes, I second this.

I've been enjoying the in-progress "Crafting Interpreters" by Bob Nystrom: http://www.craftinginterpreters.com/contents.html

I found "Writing an Interpreter in Go" to be a much better read. It was actually completely portable to C++ and Rust, and that made it useful to pretty much anyone.

Presumably: https://interpreterbook.com/ is what you mean?

(Also: I'm following along with "crafting interpreters" and not writing my interpreter in java, have had no troubles)

Looking forward a bit, there's an update to The Reasoned Schemer due out in February: https://www.amazon.com/Reasoned-Schemer-MIT-Press/dp/0262535...

Any 2017 recommendations for the non-technical aspects of working as a programmer? I'll stretch the boundaries a bit mentioning an October 2016 book as an example of what I'm looking for:

Programming Beyond Practices: Be More Than Just a Code Monkey

https://amzn.com/B01LYRCGA8 ($14.99 Kindle)

>"a sense of how a very experienced developer sees the world an[d] approaches decision making"

Maybe the ZenFounder book helping founders maintain their mental health will make it out before the end of this year!


Edit: just got an email - nope, delayed til 2018!

I'm interested in this. Can you list the prerequisites for working through this? I know a bit of C programming. What else do I need besides this?

Thanks for this.. will be a great read even tough i'm more of a systems user space type of person.

If you'll forgive the self-promotion, 'Working with Coders: A Guide to Software Development for the Perplexed Non-Techie' came out over the summer and is designed for project/product managers and others who have to deal with programming on a daily basis but don't actually code: https://www.amazon.com/Working-Coders-Development-Perplexed-...

I actually bought this because of this comment, enjoying it so far!

Boom! My December sales just doubled.

Just grabbed one! With tons of non technical product people floating around, I figured this would be nice a fun gift for the office.


Fundamental Proof Methods in Computer Science, by Konstantine Arkoudas and David Musser.

Amazing, can’t believe I missed this one!

Somewhat on topic I'd like to ask what a good device is to read these books on? I'd like to grab a couple books to read over the holidays.

For example someone else mentioned this book. https://www.manning.com/books/deep-learning-with-python

It's available as two options...

combo $49.99: pBook + eBook + liveBook

eBook $39.99: pdf + ePub + kindle + liveBook

Personally, I prefer paperback books, but I'm willing to try out something digital. Do any digital options allow me to take notes? I currently own a Lenovo X1 Yoga which folds completely into tablet mode and has a very nice stylus. Does any Windows software allow me to read one of those digital formats and take notes?

Thanks, ~Eric

You can almost always get a 50% discount on Manning books, if you're signed up to their newsletter, by the way. I usually spring for the paper version, since they generally do a good job with them. Also, you can always buy the paper copy, register it, and get the ebook versions for free. It's a really nice model they use, I wish more publishers adopted it.

Today this one, and all of their MEAPs are 50% off with the code: dotd120817lt

I like my Kindle Paperwhite. I think it allows you to take notes too. It's soooo much better than an LCD screen with a backlight shining in your face.

Is it good for reading technical books which may have diagrams and source code excerpts?

The ipad is really nice for annotating PDFs(and the 12 inch pro should be amazing for this, although I don't own one). I think Internet explorer allows you to annotate PDFs, but don't have a Windows machine handy right now.

MS OneNote allows you to annotate PDFs, and Adobe Acrobat reader has some annotation capabilities (and their paid version annotates well).

I usually annotate PDFs on my mac, which is not great for reading :)

I use a 12.9" iPad Pro, because in landscape with 2 pages side by side, it's feels just about the same size as reading a physical book.

Edge in Windows 10 (1709) supports ePub files with the ability to add notes to pretty much any piece of text in the book.

Paper is fine.

Writing an Interpreter in Go is a very elegant book for learning how to write an interpreter from scratch using Go. Worth every cent: https://www.amazon.com/dp/300055808X

[2] https://interpreterbook.com/

I wonder if there's been a new groundbreaking book in the recent years

Races to suggest 'Hitchhikers Guide To Python' but then sadly realises it was from 2016

+1 for Designing Data‑Intensive Applications.

I wanted to read Tim O'Reilly's "WTF", but haven't gotten to it yet.

I'm currently reading it. It's been pretty good.

Another shameless plug: I also released my first programming book this year.

Professional PHP: Building maintainable and secure applications


Query: Any good free books on C# and/or ASP.net ? I'm looking more from a perspective of an experienced C++ developer who's looking to learn C#.

I liked Sams Teach Yourself C++ in One Hour A Day, it goes over C++14 and C++17 and it was really informative.

Game Engine Black Book: Wolfenstein 3D is one of the better ones I've read this year. It's a fun nostalgia trip, if you played it, and it covers some interesting stuff about historical low-level game programming and quirks of early PC gaming.


I bought that about two weeks ago. It really is a good read. I wasn't around for the game itself, so it's nice that the book introduces the target hardware.

It really was a fun read. Highly recommend to any programmer!

Designing Data‑Intensive Applications: The Big Ideas Behind Reliable, Scalable and Maintainable systems - Martin Kelppmann https://dataintensive.net/

I have recommended this to everyone.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact