All good programmers must be keep themselves updated on all current trends in programming and coding. Reading some of the best books on programming available onwill help you do just that.
My recommended best programming book list include those for java and C++ and advanced programming level like python books.
list of programming books are ideal for all serious programmers. You will find the most recent books written on programming from the beginner levels all the way up to the advanced grades.
These books are free on STUVERA, so you do not have to pay for them.Find all current best programming book list on STUVERA now.
BEST BOOKS ON PYTHON PROGRAMMING
Effective Python: 59 Specific Ways to Write Better Python
by Brett Slatkin (Recommended and reviewed by Daniel Oh)
Effective Python will help you harness the full power of Python to write exceptionally robust, efficient, maintainable, and well-performing code. Utilizing the concise, scenario-driven style pioneered in Scott Meyers’s best-selling Effective C++, Brett Slatkin brings together 59 Python best practices, tips, shortcuts, and realistic code examples from expert programmers.
Fluent Python: Clear, Concise, and Effective Programming
by Luciano Ramalho (Recommended and reviewed by Daniel Oh)
With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best features. You will go through Python’s core language features and libraries, and this book shows you how to make your code shorter, faster, and more readable at the same time. With this book, Python programmers will thoroughly learn how to become proficient in Python 3.
Hello Web App
by Tracy Osborn (Recommended and reviewed by Katie McLaughlin)
This is a series of books that show you how to build your first web app, which happens to use Django (recently updated for Django 2.0). It is extremely accessible for beginners, has a separate book specifically on intermediate topics, and the third in the series about Design is also very good.
Invent Your Own Computer Games with Python
by Al Sweigart (Recommended and reviewed by Moshe Zadka)
In learning to program, motivation is often a limiting factor. What can be more motivating than, literally, programming fun? The rewards are immediate and easy to show off to friends and family.
by Mark Lutz and David Ascher (Recommended and reviewed by Greg Pittman)
When I need a command I haven’t used or haven’t used in a while, this is my go-to book. I have yet to find an online resource that helps me find things I need as fast.
Learning Python: Learn to code like a professional with Python
by Fabrizio Romano (Recommended and reviewed by Jay LaCroix)
This book is a handy way of learning Python, easing readers into the language. This is a good starting point for beginners.
Learn to Program with Python 3
by Irv Kalb (Recommended and reviewed by Moshe Zadka)
The two advantages of this book are that it starts from a modern technology (Python 3) and builds on the experience the author has in teaching real students. Those make it a great first programming book for people who want to learn how to program from scratch.
Programming Arcade Games with Python and Pygame
by Paul Craven (Recommended and reviewed by Jay LaCroix)
Programming computer games is a great way of learning Python and is perhaps the most fun way of doing so. You’ll see your code literally come to life and animate on the screen, giving you a great way to learn object-oriented programming concepts. It’s a good idea to understand the basics first (see my first recommendation) but this book also goes over the basics.
by Mike Driscoll (Recommended and reviewed by Adam Miller)
This book is great for newcomers, the content is approachable and the lessons teach idiomatic Python so that when a developer breaks out into the world from simple projects to more advanced topics, they are already coding stylistically how other Pythonistas will expect and code the reader encounters will (most likely) follow similar and familiar patterns. The book does a good job of covering the basics and offering the reader a solid foundation of knowledge.
Python 3 Object-oriented Programming
by Dusty Phillips (Recommended and reviewed by Jay LaCroix)
After you’ve learned the basics and some intermediate Python skills, this book is a great way to take your knowledge to the next level and learn Python in greater detail. You’ll learn more advanced concepts regarding object-oriented programming.
by David Beazley and Brian K. Jones (Recommended and reviewed by Daniel Oh)
This book is geared towards professional Python programmers. It covers, in one comprehensive volume, tutorials on the most common programming tasks. Code examples in the book show you how things are done in idiomatic Python 3 code. The book explains why and how the code works, which is very helpful. Inside, you will find guides on topics like data encoding, data structures, algorithms, meta-programming, and concurrency.
Python Scripting with Scribus*
by Greg Pittman (Recommended and reviewed by the author)
The sources that I find most useful are those which show some detailed, concrete examples, and these examples should be useful things to do. Things like accessing a file, sorting the contents into lists, then manipulating those lists in further useful ways. To that end, I wrote a Python book of my own, which is focused on Python scripting for Scribus, taking a variety of scripts I have written and explaining what various parts of the script are accomplishing. The idea was to show a variety of Scribus Scripter commands so that people might mix and match what parts they need for their own use.
Python Tricks: The Book
by Dan Bader (Recommended and reviewed by Adam Miller)
This book walks programmers through some interesting and often untraveled areas of the languages syntax as well as execution side effects of the official reference Python interpreter (CPython). By going through these exercises programmers learn clever ways to make their code more performant through optimizations as well as corner cases of the language to avoid that could cause unintended behavior in software.
by Julien Danjou (Recommended and reviewed by the author)
While it’s easy to learn Python and start building applications with it, creating software that will work correctly for a large number of users is another story. Scaling Python focuses on writing largely scalable and highly-distributed Python applications. You’ll learn what works and what does not work when using Python to write your next big project. The book is illustrated with seven interviews with prominent open source developers who talk about their battlefield experience and give great advise.
The Hacker’s Guide to Python
by Julien Danjou (Recommended and reviewed by the author)
There are tons of books that teach the basics of Python. Once you read them, you’re usually familiar enough to start writing your first application. But then comes a ton of other questions about, how to organize your project, how to distribute it so others can use it, how to achieve decent performances, how to test, etc. The Hacker’s Guide to Python answers to all those questions and more by providing concrete answers to those issues. The author shares his 10+ years of experience with Python and provides ready-to-go solutions. The book is also illustrated with eight interviews from software engineers, CPython developers, and open source hackers.
The Quick Python Book
by Naomi Ceder (Recommended and reviewed by Moshe Zadka)
Naomi has been part of the Python community for a long time, and it shows in her book. Now in its third edition, the book is a comprehensive reference to Python and full of deep insights.
Treading on Python: Volume 2 Intermediate Python
by Matt Harrison (Recommended and reviewed by Adam Miller)
Intermediate Python is exactly as the book calls it, it’s intermediate-to-advanced topics about the Python programming language in a short and concise writing style. There’s no fluff, it’s to the point, but full of valuable information. This book is definitely recommended for Python programmers looking to rapidly increase their knowledge about intermediate and slightly advanced topics in Python programming.
The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas
While I was a Java developer at a startup (my pre-Microsoft times), my manager/mentor gave me this book and it was a great read that I have revisited over the course of my career. This book is the kind of book that applies in one way while you are developing as a new programmer and in a completely different way as you become more seasoned. For this reason, this book makes the top of my list and I’m surprised it didn’t make the top of the Programming Zen list.
Scott Meyers has created some amazing books about development in C++. These books have taught me many techniques to create much better code that is cleaner and less buggy. Meyers’ best practices will help to turn a rookie into a much more seasoned developer and learning and understanding the reasoning behind why Meyers makes the book an effective tool for stepping up your C++. The other thing about Meyers’ books is that following his guidance will reduce defects in your code immediately.
Practical Programming in C++ by Steve Oualline
This book was a great read. The voice that comes through makes it easier to grok the concepts that Oualine covers in the text. O’Reilly does an amazing job of editing and I love all their books, but this one really sticks out as a go-to text for the 80% foundation of what makes a good C++ programmer.
The C++ Cookbook by D. Ryan Stephens, Christopher Diggins, Jonathan Turkanis, and Jeff Cogswell
I’ll start off admitting that I have a slight bias for the C++ cookbook because I had the pleasure of working with one of its authors, Christopher Diggins, a few years ago and he was a brilliant programmer. Disclosures aside, this book is primarily a collection of techniques and shortcuts that will reduce your time to completion. As with the rest of O’Reilly books, the editors do a fantastic job of controlling the writer’s voice making this book also a very pleasant read.
C++ How to Program by Deitel and Deitel
Many readers may scoff that this book is really a beginner’s book because it was probably the first book they picked up on C++ programming. There’s a reason it’s so popular: the authors do an amazing job communicating concepts and this is probably the best book hands down on foundational C++ skills. This book makes my list because it creates good programmers from beginners.
Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et. All
Design patterns are the apex of thinking for creating code that is reusable and familiar to other developers. The 23 patterns shared in the text, also known as the “Gang of Four” book, have been talked about for decades now and will be talked about by architects and seasoned developers for the foreseeable future. This is a book that brings intermediate developers into the ranks of masters and helps them to understand their language and reflect on elegant solutions to software problems. Read this book when you are ready for it.
Steve McConnell’s book, the first Microsoft Press book on my list, sits on the desk of many engineers at Microsoft and in some circles serves as an employee handbook for coding style. Required reading for coders in some of our teams, it serves as a great example for how to create legible code that in the long run will save developers time.
Writing Secure Code by Michael Howard and Steve Lipner
Security is a best practice, right? For those engineers with Code Complete, this book oftentimes sits right next to it. In many ways, this book is a complimentary book to another title, Thread Modeling, but in my experience does a better to illustrate security from the developer’s perspective. Writing secure code addresses the ways to STRIDE model and thinking about security from an engineering and coding perspective makes this book essential for developers coding anything that can have an attack surface.
The Art of Computer Programming – Donald Knuth
This book series is probably the most famous CS book series of all time – if you ask developers who learned at the dawn of modern CS. I was handed down my copy (copies? it’s like 4 giant books) from an older programmer while I was still learning and college and the theories were way over my head. Knuth invented his own machine language for the series and demonstrates classic algorithms in it, an amazing feat in itself. If you are looking for a quick way to become a better programmer, this is not the series you are looking for. However, if you want to gain a better understanding of computer science theory and can bear through the hardcore, the Knuth series is all you need. The Knuth books are very scientific but at their core is the foundation for solving complex problems with algorithms and for this reason it can transform your thinking about programming.
The C++ Programming Language and by Bjarne Stroustrup
I can’t in good conscious give a list of C++ programming books without including the C++ creator’s manual. This book is a very interesting reflection on the choices that were made in the creation of the language and also serves as a reference for the C++ programming language and STL and also reveals the reasons that you should use the language as intended. This book can transform a person from a C++ coder into an individual who really uses and chooses the C++ language for its strengths. If nothing else, this is a fascinating look at C++ from the 10,000 foot to microscopic perspective.
Here’s the list from Programming Zen, with exception to debugging with DDD/Eclipse and the Agile books, these books introduce many great best practices and will help you become a better developer regardless of which language you are coding in:
Description: Introduction to Algorithms OK, this is cheating a little. “Introduction to Algorithms” is both a classic and a book on everyone’s list. However, I opted to include it because not everyone knows that it was recently (September 2009) released in its third edition. The book received a major upgrade to the existing content and exercises, as well as including new, modern algorithms. Any programmer working through this book, or revisiting it, will learn valuable, foundational knowledge.
The Annotated Turing
Description: wrote a classic paper in 1936 with the title: “On Computable Numbers, with an Application to the Entscheidungsproblem“. It was a paper on Turing machines and the limits of computability, which had a major impact on computer science and the development of the computer you are reading this post on. Every programmer/computer scientist should get ahold of this paper and read it. Unfortunately, it isn’t exactly easy to grasp if you are not used to reading research papers. In “The Annotated Turing”, Petzold does a marvelous job of dissecting the paper (and its errata), providing ample explanations and background information over 18 chapters (360 pages vs 36 of the original paper). It manages to be rigorous while still being accessible. If this book doesn’t arouse your interest in computer science, chances are nothing will.
Growing Object-Oriented Software, Guided by Tests
Description:This book takes two fundamental pillars of modern software development, Object-Oriented Design and Test-Driven Development, and clearly illustrates how to apply the best practices of each to build and maintain complex software. I don’t know of many developers who couldn’t learn something new about TDD in the context of OOP from this book. A must read.
Description:While on the subject of Agile development, I can’t help but recommend “Clean Code” by Uncle Bob. It compliments “Growing Object-Oriented Software, Guided by Tests” perfectly by focusing on how to improve and refractor code to get rid of code smells. You can think of it as a very succinct version of Code Complete 2, with a strong focus on Agile craftsmanship. The examples, as per the previous book, are in Java but that shouldn’t be much of an issue for the open-minded developer.
Leading Lean Software Development: Results Are not the Point
Description: Lean principles deriving from the Lean manufacturing world have been effectively translated and adapted to the field of software development. This book explains how to lead a team to success through lean software development in detail to team leaders and mentors. Having obtained a Lean Six Sigma yellow belt many years ago, this book definitely gave me a few flashbacks. If you are not familiar with the concepts presented, you’ll definitely find it food for thought. Building software requires far more than just writing quality code, and the techniques presented here are valuable, even if you don’t fully buy into this methodology.
Description: While on the subject of leadership, if you are in charge of software development at a small company or startup, you want to read this book. My interest in this title came from the fact that its author (Louis Testa) works as a Senior Engineering Manager at Galois, a company that uses Haskell as their technological advantage (and hired Don Stewart of Haskell fame). “Growing Software” delivered on my expectations and is full of hands-on advice on how to deal with the whole workflow surrounding the creation of software from the idea all the way to the sale and support of a product.
The Art of Debugging with GDB, DDD, and Eclipse
Description: The Art of Debugging Debugging is an invaluable skill and one that is often left out from introductory programming books. Being able to effectively debug code is what separate professionals from beginners, and productive programmers from frustrated ones. This book is ruthlessly practical with many advanced techniques for debugging on Linux/Unix. It’s well worth its price in my opinion.
Applied Mathematics for Database Professionals
Description: Applied Mathematics for Database Professionals Assuming you already have a decent understanding of relational databases, and are not too scared of mathematics, this book will really bring your knowledge of how databases work to the next level, in turn improving the design, schema evolution, and SQL queries you’ll create afterwards.
Programming Collective Intelligence
Description: Programming Collective Intelligence If you are building web applications that do more than simply CRUD operations on your data, you’ll want to read this book (with examples in Python). The motivated, intermediate developer will learn how to efficiently solve complex problems related to machine learning and intelligent web algorithms from this book. It’s a very accessible introduction to tough subjects and one of the most interesting books I’ve read in some time.
Coders at work
There should not be any surprise here. Effective Java by Joshua Bloch is hands down best Java book ever. This is a definite must-read book for Java programmers of any experience level. You will learn so much about Java and its API then you could imagine.
The fact that Joshua Bloch himself is the author of several key Java classes and API, e.g. java.lang and Java Collection framework, is enough reason to read this book. Along with that, his writing style is also fantastic.
You can read this book on a beach, while traveling, or just at your desk. It’s awesome. There is no doubt that you would emerge as better Java programmer after reading this book.
And the best thing is that a new edition of Effective Java is available now, which covers Java 7, 8, and 9. There cannot be a better time to read this book.
3.The Pragmatic Programmer: From Journeyman to Master
Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process–taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and youll learn how to *Fight software rot; *Avoid the trap of duplicating knowledge; *Write flexible, dynamic, and adaptable code; *Avoid programming by coincidence; *Bullet-proof your code with contracts, assertions, and exceptions; *Capture real requirements; *Test ruthlessly and effectively; *Delight your users; *Build teams of pragmatic programmers; and *Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether youre a new coder, an experienced programm
4. Clean Code
Another timeless classic for Java programmers is Clean Code. As the title suggests, it teaches you to write better code, which is such a difficult thing to learn. To be honest, it’s easy to learn Java, but difficult to write better Java code which uses strong OOP principles and that’s where this book helps.
Similar to Joshua Bloch, Robert C. Martin, also known as Uncle Bob, is an excellent author and shares a lot of his experience as a software developer, teaching you various programming techniques and practices that help a lot in your day-to-day job as a programmer.
Generate a table of contents for an HTML document Display DHTML animations Automate form validation Draw dynamic pie charts Make HTML elements draggable Define keyboard shortcuts for web applications Create Ajax-enabled tool tips Use XPath and XSLT on XML documents loaded with Ajax And much more
“I was fortunate indeed to have worked with a fantastic team on the design and implementation of the concurrency features added to the Java platform in Java 5.0 and Java 6. Now this same team provides the best explanation yet of these new features, and of concurrency in general. Concurrency is no longer a subject for advanced users only. Every Java developer should read this book.”
JDK Concurrency Czar, Sun Microsystems
“For the past 30 years, computer performance has been driven by Moore’s Law; from now on, it will be driven by Amdahl’s Law. Writing code that effectively exploits multiple processors can be very challenging. Java Concurrency in Practice provides you with the concepts and techniques needed to write safe and scalable Java programs for today’s–and tomorrow’s–systems.”
Research Scientist, Intel Corp
“This is the book you need if you’re writing–or designing, or debugging, or maintaining, or contemplating–multithreaded Java programs. If you’ve ever had to synchronize a method and you weren’t sure why, you owe it to yourself and your users to read this book, cover to cover.”
Author of Effective Enterprise Java
“Brian addresses the fundamental issues and complexities of concurrency with uncommon clarity. This book is a must-read for anyone who uses threads and cares about performance.”
“This book covers a very deep and subtle topic in a very clear and concise way, making it the perfect Java Concurrency reference manual. Each page is filled with the problems (and solutions!) that programmers struggle with every day. Effectively exploiting concurrency is becoming more and more important now that Moore’s Law is delivering more cores but not faster cores, and this book will show you how to do it.”
–Dr. Cliff Click
Senior Software Engineer, Azul Systems
“I have a strong interest in concurrency, and have probably written more thread deadlocks and made more synchronization mistakes than most programmers. Brian’s book is the most readable on the topic of threading and concurrency in Java, and deals with this difficult subject with a wonderful hands-on approach. This is a book I am recommending to all my readers of The Java Specialists’ Newsletter, because it is interesting, useful, and relevant to the problems facing Java developers today.”
–Dr. Heinz Kabutz
The Java Specialists’ Newsletter
“I’ve focused a career on simplifying simple problems, but this book ambitiously and effectively works to simplify a complex but critical subject: concurrency. Java Concurrency in Practice is revolutionary in its approach, smooth and easy in style, and timely in its delivery–it’s destined to be a very important book.”
Author of Beyond Java
“ Java Concurrency in Practice is an invaluable compilation of threading know-how for Java developers. I found reading this book intellectually exciting, in part because it is an excellent introduction to Java’s concurrency API, but mostly because it captures in a thorough and accessible way expert knowledge on threading not easily found elsewhere.”
Author of Inside the Java Virtual Machine
Threads are a fundamental part of the Java platform. As multicore processors become the norm, using concurrency effectively becomes essential for building high-performance applications. Java SE 5 and 6 are a huge step forward for the development of concurrent applications, with improvements to the Java Virtual Machine to support high-performance, highly scalable concurrent classes and a rich set of new concurrency building blocks. In Java Concurrency in Practice , the creators of these new facilities explain not only how they work and how to use them, but also the motivation and design patterns behind them.
However, developing, testing, and debugging multithreaded programs can still be very difficult; it is all too easy to create concurrent programs that appear to work, but fail when it matters most: in production, under heavy load. Java Concurrency in Practice arms readers with both the theoretical underpinnings and concrete techniques for building reliable, scalable, maintainable concurrent applications. Rather than simply offering an inventory of concurrency APIs and mechanisms, it provides design rules, patterns, and mental models that make it easier to build concurrent programs that are both correct and performant.
This book covers:
Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Performance optimization dos and don’ts Testing concurrent programs Advanced topics such as atomic variables, nonblocking algorithms, and the Java Memory Model
8. Spring in Action
Sorry, but I have to include one Spring book, Spring in Action, in this list of classic books for Java programmers. Spring is the most popular Java framework ever and this is the best book to learn about the Spring framework, but — to be honest — this book is much more than a Spring book.
After reading the 4th Edition of this book, I realized so much about Java and writing better code that I can’t begin to explain.
The books take a topic, e.g. JDBC, and explain where JDK went wrong and how Spring corrects that mistake, e.g. SQLException, a one-size-fits-all exception that says something is wrong but not exactly what is wrong or how to deal with that.
Like Josuha Bloch and Uncle Bob, Craig Walls is another great author and you will learn much more than just Spring by reading this book.
9. Test Driven
Automation testing is an important skill. For developers, it all starts with unit testing. Java has been blessed to have the JUnit from the start, but just knowing the library doesn’t make you a professional programmer who can write tests.
It takes much more than knowing a unit testing library, like JUnit or Mockito, and that’s where this book helps. If you are serious about code quality and writing unit, integration, and automation test, Test Driven is the book to read in 2018.
1o. The Definitive Guide to Java Performance
Another aspect of becoming a better Java developer is knowing about JVM, Garbage collection, and performance tuning. Though there have been several good books on this topic, e.g. Java Performance by Binu John and Charlie Hunt, The Definitive Guide of Java Performance by Scott Oaks is my favorite.
Even though it only covers until JDK 7, you will learn a lot about performance tuning and JVM in general, which totally justifies the time and money you will spend on this book.
11. Head First Java
How many of you started learning Java by reading this book? Well, I did. Just after I came to know about Head First Design Pattern, I also found this book, Head First Java, and I really enjoyed reading it. I learned a lot of Java concepts and many of my misconceptions were also corrected.
Though many feel this is an out-of-date book, I still feel its a great book for anyone just starting with Java because of its unique style and content.
You can easily learn about Java 8, Java 9, and Java 10 changes on other versions once you know Java by reading this book.
12. Head First Object-Oriented Analysis and Design
Here is another “Head First” book in the list of the greatest Java books. Yup, they are simply awesome.
Head First Object-Oriented Analysis and Design forms a trilogy of the “Head First” books for Java programmers, i.e. Head First Java, Head First Design Patterns, and Head First OOAD.
It actually complements Head First Design Patterns by explaining the techniques of object-oriented programming and design.
The most important technique that I learned from this book was coding for interfaces and how to encapsulate what changes. This book simply changed how I write Java code.
13. Java: A Beginner’s Guide
If you ever need a comprehensive Java book, this should be it. Even though the title says Java: A Beginner’s Guide, it’s one of the most complete books for learning Java.
Sir Herbert Schildt has also done a commendable job in keeping the book up-to-date, e.g. the 7th Edition of this book now covers Java 9.
Though, I don’t know how he is going to keep this book up-to-date going forward, since Java’s new 6-month release cycle which started with Java 10.
Get all the books you need to read in other to excel at programming on STUVERA.COM. You can check them out to view the variety of Best C and C++ study books, online courses and other materials relevant to you.