Recently,
Fog Creek interviewed me , and one of the questions was about my favorite books on programming, coding, and program development. I remember this question because I have long considered myself an avid book nerd. I am a book nerd because I am madly in love with books about science, computers and programming. Every few months, I devote a day or two to researching recently published literature and buying the most favorite copies. I could talk about my favorite books forever. After all, I have so many of them.
I was so interested in the question of books, that I decided to start a new series of articles on my
catonmat site about my top 100 books on programming, software, science, physics, mathematics and computers. In each article I will post five books, because breaking up huge tasks into small subtasks is the easiest way to solve them (GTD - get things done).
Take a look at my bookshelf to make sure I'm a real nerd:
')

In the first article of the series, I will repeat the same five books that I recommended in my interview with Fog Creek. I think that a series of articles will be published for a long time, so if you are interested, you can
subscribe to the rss feed of my blog or follow my work
on Twitter .
Enough talk. Go to the books!
# 1 New Omnibus Turing
A must-read book for anyone interested in computers. This amazing book consists of 66 short essays on the most important and interesting computer topics, such as compression, Turing machines, formal grammar, non-computable functions, and neural networks. The book is written in everyday simple language and contains almost no mathematics. This is my favorite book.
Author: Alexander K. Dyudni.
# 2 Small Book about Semaphores (free pdf)
This book teaches how to think multithreaded and solve synchronization problems. I highly recommend it, especially if you are self-taught. She leads the reader step by step through a series of classic and not very synchronization problems. It is very interesting to solve these problems, and I recommend it to everyone since I first met her.
Author: Allen B. Downey.
# 3 Programming Pearls and More Programming Pearls.Programming Pearls and
More Programming Pearls .
The classic book on programming. John Bentley knows how to write clearly and enthusiastically about algorithms. These books are eternal, and they teach the reader how to understand problems, solve them in parts and effectively implement solutions. You can be interviewed by Google if you read these two books.
Posted by: john bentley
# 4 Little combinator
The little combinator gives a little knowledge of LISP in the most amusing way. The book is a dialogue between you and the author about hundreds of small software combinations, which among other things teaches the reader to think recursively. This book will make You think and expand Your consciousness a little. This is one of the most interesting programming books ever written.
Authors: Daniel P. Friedman and Matias Feleizen.
# 5 Style Elements and Programming Style ElementsStyle elements and
elements of programming style .
“Elements of Style” is not a book about design or programming, but rather about writing. If you want to be a successful programmer, you need to communicate in such a way that other people understand, and therefore writing skills are simply necessary. The book has only 100 pages and can be read in one evening. “Elements of Programming Style” is a classic Kernigan book on programming, the form elements of Style have greatly influenced the form of this book. This is an old book, but for the most part everything that it teaches is applicable today. It consists of 70 rules of programming, such as “write clearly, do not try to seem too clever”; "Say what you want is simple and accurate"; “Choose a data presentation method that makes the program simple”; “Let the data shape the structure of the program.”
And as a bonus, I recommend my own book
'Perl One-Liners', published by No Starch Press. My book teaches how to quickly get results using the Perl command line. Quick work with the command line will save you thousands of hours throughout your career. As soon as you learn one-liners, you will start solving quick one-time tasks instantly. I have seen developers who spend hours writing programs for tasks that can be completed in 20 seconds using one-liner. Do not be such developers.

I hope you enjoyed my recommendations on the first five books. I ask you to share with me your favorite books in the comments. Until next time!