
The Go Programming Language is the authoritative resource for any programmer who wants to learn Go. It shows how to write clear and idiomatic Go to solve real-world problems. The book does not assume prior knowledge of Go nor experience with any specific language, so you'll find it accessible whether you're most comfortable with JavaScript, Ruby, Python, Java, or C++. The first chapter is a tutorial on the basic concepts of Go, introduced through programs for file I/O and text processing, simple graphics, and web clients and servers. Early chapters cover the structural elements of Go programs: syntax, control flow, data types, and the organization of a program into packages, files, and functions. The examples illustrate many packages from the standard library and show how to create new ones of your own. Later chapters explain the package mechanism in more detail, and how to build, test, and maintain projects using the go tool. The chapters on methods and interfaces introduce Go's unconventional approach to object-oriented programming, in which methods can be declared on any type and interfaces are implicitly satisfied. They explain the key principles of encapsulation, composition, and substitutability using realistic examples. Two chapters on concurrency present in-depth approaches to this increasingly important topic.
Another book that's worth its weight is "The Linux Programming Interface" and "The TCP/IP Guide". Also you can probably buy "The Go Programming Language", "Programming Erlang", and "Programming Clojure" and still come ahead. As long as you choose to learn technologies that have thoughtful design, or has a standard (even a de-facto one), you're golden.
I grew up with borrowed ZX Spectrum manuals that detailed the Z80 assembly language, (a clone of) a Red Book that came with the (clone of a) Apple II computer that had assembly listings, and fold-out circuit-board diagrams for the whole computer. I taught myself C++ from the manual that came with Borland Turbo C++ and the Waite Group C book. I laughed out loud at footnotes in the Camel book, which I read from the start through to where it becomes a reference. I read Sedgewick's Algorithms cover to cover for fun when I found it in a local library as a teenager. I borrowed the ancient "build a flight simulator" book from a friend in high school.
I've bought books by Kleppmann, Julia Evans, and Hillel Wayne's in-progress book on proofs. I owned the gang of four design patterns book (although I won't pretend -- like everyone else -- to have done more than skim a few patterns!)
And yet.
For many, many years now every time I've wondered into a bookstore, and meandered over to the fondly-remembered computer books section with a sense of nostalgia, I've just been deeply disappointed and sad. If you're lucky, you'll find one or two books that look worth reading, and the rest is just the product of some giant publishing machine whose sole purpose seems to be to fleece unsuspecting neophytes of their money by pushing on them hastily written books on whatever the current fad is. Often when you look at the publication date and compare it to the release date of the software, it's obvious you couldn't write a _good_ book that fast.
And they're all huge. The C Programming Language, Javascript: the good parts, and The Go Programming Language are just about the only three examples I know of where concision was considered a virtue. Most are just fluffy as hell, which is offensive to the kind of mind that wants to learn a programming language.
Add to that the observation in the article that paper books for programming languages are inherently weird.
So yeah, nobody cracks open a programming book anymore, but there are lots of compelling reasons beside AI, reasons that make you grateful if AI can save you from having to wade through an ocean of dreck.
I can imagine a heavily curated shelf of programming books, and it would be a thing of beauty, a collection of potent fireworks shot into the dark of the unknown. But, like, who would go to Barnes and Noble or whatever and actually see it, and actually buy something?
"Python for Data Analysis" by McKinney (2018)
"The Go Programming Language" by Donovan and Kernighan (2016)
"Hacker's Delight" by Warren (2013)
"Algorithm Design Manual" by Skiena (2008)
"Purely Functional Data Structures" by Okasaki (1998)
"Structure and Interpretation of Computer Programs" by Abelson and Sussman (1985)
Four and half years later, I'm still employed as a professional Go programmer.
Thanks, Brian!
One example: The Go Programming Language. I tried using Go several years back after using Java for years and my experience was horrible. Then I read this book and I understood the philosophy behind Go, followed all exercises. Am I Go expert? Far from it. But I am proficient enough to write my own tools or contribute small fixes to other teams at work efficiently.