#172 in Computers & technology books
Use arrows to jump to the previous/next product
Reddit mentions of Programming Pearls
Sentiment score: 13
Reddit mentions: 25
We found 25 Reddit mentions of Programming Pearls. Here are the top ones.
Buying options
View on Amazon.comor
Addison-Wesley Professional
Specs:
Height | 0.6 Inches |
Length | 9.1 Inches |
Number of items | 1 |
Release date | October 1999 |
Weight | 0.98767093376 Pounds |
Width | 6.2 Inches |
Here's my list of the classics:
General Computing
Computer Science
Software Development
Case Studies
Employment
Language-Specific
C
Python
C#
C++
Java
Linux Shell Scripts
Web Development
Ruby and Rails
Assembly
Thank you all for your responses! I have compiled a list of books mentioned by at least three different people below. Since some books have abbreviations (SICP) or colloquial names (Dragon Book), not to mention the occasional omission of a starting "a" or "the" this was done by hand and as a result it may contain errors.
edit: This list is now books mentioned by at least three people (was two) and contains posts up to icepack's.
edit: Updated with links to Amazon.com. These are not affiliate - Amazon was picked because they provide the most uniform way to compare books.
edit: Updated up to redline6561
It is an academic paper and written as such. For a more practical approach to the topic, try some of these:
Programming Pearls
Performance Bugs
Performance Engineering of Software System
These have been recommended to me a lot, although I haven't gotten around to them yet....
Code Complete
Code Craft
Programming Pearls
Not game-specific, but these books are definitely industry essential books when it comes to anything related to software development.
In no particular order (though Code Complete should probably be first):
The best way I know how is by solving problems yourself and looking at good solutions of others.
You could consider going back to "fundamentals".
Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.
There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.
Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.
I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.
Some books I think are worth reading which also have good exercises:
I imagine the other Stroustrupp programming book also has good exercises, but I've never read it. Brian Kernighan is not only the author of K&R2, but of many other books. You could look at his stuff.
Depending on what you mean by good code, though, you could look at other books.
There are also the math books. I'd not discard those. And also, there are other programming books as well. Some I've never read, but want to, like Programming Pearls:
Not only those, but, anyway... The point is that you can look at those books to find examples of good code, good exercises, challenges and so forth.
Here are some books I've mentioned previously:
By the way, there are websites with programming challenges for you to look at too. Like https://projecteuler.net/ and others. Just start looking this up and you'll find plenty. They all tend to start dumb easy and move up the difficulty to pretty damn difficult stuff from what I've heard.
Edit: SICP is available for free (http://mitpress.mit.edu/sicp/) together with videos from the course taught at MIT in 85 (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/).
Actually, I've seen quite a few loop invariants in shipping production code. But probably 95% of the times they're used, the programmer might not even think to call it a loop invariant.
Specifically, a lot of codebases use conditional assertions to test for bad conditions (usually debug-only). If you place a conditional assertion in a loop, you're expressing a loop invariant. I personally have used them to find a number of bugs in shipping production code.
Read Programming Pearl's - it's very short classic, and he uses loop-invariants via assertions.
>What would be the best way to prepare for these types of interviews? What sources/books did you use to study data structures and algorithms?
Get a friend and have them run you through practice interviews. Lots of them. Get used to writing code on a whiteboard, because it's different from writing code in an IDE.
For algorithm practice, I bought Introduction to Algorithms and Programming Pearls. I also did a lot of research online to find out the kind of interview questions to expect. (Ignore the brainteaser questions; Microsoft doesn't do them any more.)
For the most part, just hit the books, study hard, and write lots of code on a whiteboard. This article by Steve Yegge really nails it, I think.
So this is what I would consider the "Core" reading list for anyone interested in programming games. None of this is really game specific though. These are just the fundamentals you need in order to be an effective Software Engineer.
Learn about...
C++ syntax: Programming: Principles and Practice Using C++ by Bjarne Stroustrup
Software Engineering: Code Complete by Steve McConnell
C++ gems: Effective C++ by Scott Meyer
Software Teams: The Mythical Man-Month by Frederick P. Brooks Jr.
Why we love Joel: Joel on Software by Joel Spolsky
Problem Solving: The Pragmatic Programmer by Andrew Hunt
Common Code Solutions: Head First Design Patterns by Eric Freeman
Pearls!: Programming Pearls by Jon Bentley
I'll do a supplemental on this in a few days that dives into specific topics related to engine development. All of this is generic enough that it will help you regardless of what you do. You'll notice that very little here is actually language specific. Almost all of this is about the art of making software and process of working with a team. These 8 books alone will make you think about making software in a whole new way.
I've posted this before but I'll repost it here:
Now in terms of the question that you ask in the title - this is what I recommend:
Job Interview Prep
Junior Software Engineer Reading List
Read This First
Fundementals
Understanding Professional Software Environments
Mentality
History
Mid Level Software Engineer Reading List
Read This First
Fundementals
Software Design
Software Engineering Skill Sets
Databases
User Experience
Mentality
History
Specialist Skills
In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.
I lose interest all the time reading programming books. I will circle back if something comes up that reminds me of a subject of that book. Each CS book has a ton of material and knowledge in it, so keep that bookshelf stocked and keep on circling back. Since you're interested in reading up on programming a few of my personal favorites for beginners include:
Pragmatic Programmer: https://pragprog.com/book/tpp/the-pragmatic-programmer
Eloquent JavaScript: http://eloquentjavascript.net/
Programming Perls: https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880
Programming Pearls by Jon Bentley
A lot of good mentions here. Although they're more programming and engineering than "computer science", I would add Design Patterns by the Gang of Four, and
Programming Pearls by Jon Bentley.
Expert C Programming : Read this after reading K&R C book.
Programming Pearls : Excellent Book
Algorithm design manual : Read it after CLRS.
In college, I probably wouldn't have cared and had it end up as a fluff class (if it got offered at all, academia is notoriously different than the industry). There was far too many other things to learn. As it was I took intro, mips assembly, digital logic, data structures, compilers, operating systems, theory of programming languages (imperative and functional), theory (the regex to Turing machine), AI, and numerical methods - and that filled up all of my CS degree requirements.
In the mean time, I've found a few books that do capture some of this philosophy. Probably the best is Programming Pearls, though there's some in The Mythical Man Month too. (And yes, this time it is something I wrote...) my list of Five books every programmer should read captures some of that.
The post Ruby’s Principle of Too Much Power is a good read about what happens with too much power.
I do suspect much of this comes from our generation and the code philosophy we (or at least I) was brought into back in college. From that W3 link:
> Computer Science in the 1960s to 80s spent a lot of effort making languages which were as powerful as possible.
More powerful languages to hide the complexity more. C++ and Java came into the world with the idea of encapsulation and private variables - OO coming into vogue. Everything was "more power" (and I have Tool Time flashbacks here). It took two or three decades to come to terms with "too much power is not a good thing."
... and yes, this is finding its way to a blog post of my own.
Programming Pearls
It's a search algorithm which divides up the solution space using binary search.
See Programming Pearls by Jon Bentley for an interesting investigation of the ubiquity of binary search.
I've found that I gained most of my best experience on the job, and that staying at a job where I wasn't learning anything was a huge mistake and detriment to my career.
That said... I don't think I'm a super genius either. I did well in college and my GPA helped with my first few jobs. But I have lots of hobbies outside of work, and rarely spend my time at home thinking about the office. A lot of times companies aren't looking for the super genius type either... if they were they'd have a hard time filling staffing requirements. I think the keys are learning how to interview well, focusing on letting the interviewer know that you're willing and good at learning and having the basics of OOO down to a T. Come off as confident, even if you don't feel it. It never hurts.
As far as books go, here are some of my favorites:
Programming Interviews Exposed
Programming Pearls
Refactoring
I'm mostly a java programmer, so here are three absolutely necessary java books:
Head First Design Patterns
Core Java 1
Core Java 2 - Advanced
It's been a while since I interviewed, and some more specific information about the role would be helpful. But as general advice, you should do the exercises in Programming Pearls, and not as good but still helpful Programming Interviews Exposed. Project Euler also has good programming finger exercises.
If you need to write code on a white board practice that specifically.
To learn a design pattern which works for you I would suggest reading Programming Pearls. Design patterns really aren't learned from books but Programming Pearls covers some of the basic topics and practices which lead to good programming and design patterns. It teaches you how to properly debug programs, design by contract how to analyze and optimize code in a number of ways. It is language agnostic however it is favored towards C and C++. When you know how to do those things design patterns sort of start happening as a result.
Programming Pearls by Jon Bentley.
You may skip the exercises (as it require programming).
Programming Pearls by Jon Bentley is very good too.
I'm upgrading my EDC bag next week to a backpack, and felt that I should share my trusted canvas bag of 10+ years in order to give it a proper send off :(
I love its weathered look, but it simply doesn't fit everything that I need and it's difficult to carry larger items when I'm on my bike.
Canvas Messenger Bag
Blender Bottle
Bern Bike Helmet. Berkeley w/ Visor (not attached)
Anker E7 26800mAh Portable Charger
Ray Ban Aviator Classic
Bose Quiet Comfort 25 Noise Cancelling Headphones
GORUCK Tac Hat (mesh - black)
Rogue Velcro Path
Tech21 Impact Tactical Case - Galaxy s5
Rogue Metal Wallet - Rogue Logo
Leatherman 10 (on keys)
Black Notebook (book notes)
Programming Pearls, Second edition by Jon Bentley
Leather Covered Notebook (work notes)
Brown Notebook (scratch notes)
Precise V5 Pens (blue & black)
Programming Pearls was very influential for me. Some of the examples are a bit dated, but the overall messages haven't changed.
Not sure what you mean by CS background, but depending on the book, you may need more books to understand that one.
For introduction to computers and programming I recommend David Harel and some people really dig Jon Bentley. There's probably a ton of other recommendations out there, but ultimately they all lead to the bible :)
So yea, getting some background on programming may be necessary, but not too difficult. I mean, if a highschooler/college freshman can do it, so can anyone, right?