Email the Author
You can use this page to email Hillel Wayne about Logic for Programmers.
About the Book
If I start a build at 3:05 PM and it takes 12 minutes to complete, when will the build be finished?
To answer this question, we need to know how to manipulate numbers. The mathematics of numbers is called "arithmetic". Arithmetic shows us how to multiply two numbers, use fractions, determine which of two numbers is larger, and more.
If I have the conditional if(sensor_offline || inactive), and I know for sure thatsensor_offline
is true, does the value ofinactive
matter?
To answer this question, we need to know how to manipulate booleans. The mathematics of booleans is called "logic". Logic shows us how to simplify a boolean expression, use sets, determine if one statement is stronger than another, and more.
But there is one key difference between arithmetic and logic. We were taught arithmetic in elementary school. Few of us were formally taught logic. Most programmers pick up a little logic by osmosis, but even that rarely exposes people to anything beyond the basics. This makes logic the single most useful topic in math a programmer can learn.
That is the goal of this book. Reading this will teach you the basics of logic and how to apply it to various everyday software problems, like testing code, designing a database, working out customer requirements, and more. Over 40 exercises are provided to help readers master the material. No prior math background required!
------
The book's current status is BETA. Most of the content is in but I will be changing the prose and polishing based on reader feedback. I also need to give more attention to book layout, formatting, and proofreading. And there's always room for more useful exercises!
I will release new betas monthly, with the final 1.0 coming sometime mid-late 2025. If you buy the book now, you'll get all future version for free as well as input into how it develops. I'll be raising the price to 25 once 1.0 is ready.
New in v0.9:
- New cover!
- "Predicate Logic" chapter now uses a programmer-centric example to motivate quantifiers
- "Writing Better Tests" chapter motivates proptesting better, formalizes concept of "test strength"
- "Solvers" chapter expanded, better coverage of SMT solvers and more discussion on choosing the right solver for your problem
- "Logic Programming" chapter wholly rewritten, examples are no longer toy problems
- "Beyond Logic" appendix has simpler example of non-constructive proofs
- Code samples now highlight added/removed code
- Large code samples now available online at https://github.com/logicforprogrammers/book-assets
- Fixed bug where index was missing from PDF version
- Reduced epub filesize to 5mb to 800kb
- Various copyedits and fixes
- One new exercise
About the Author
I have a blog at hillelwayne.com and a newsletter at https://buttondown.email/hillelwayne/