News for hackers. Stuff that matters.
Re: Ask HN: What are some good books for understanding OOP? by philwelch on Friday December 03, 2010 @01:25AM (#1964982)
The most important thing to realize is that "object-oriented programming" isn't a well defined term. If you don't know what it means and you pick up books about Smalltalk or CLOS, you won't really have a good grasp on the corporate C++/Java/C# environments you might be thrown into, and if you get a job interview that asks "explain OOP to me", they won't have any fucking idea what you're talking about, because by "OOP" they mean Java and by "OOP" you'll mean Smalltalk or CLOS. Likewise, if you pick up a Java book, it'll take you awhile to figure out what Smalltalkers, Lispers, and Rubyists are on about.

Unfortunately, the C++/Java conception of OOP has had a much better sales team since the 90's or so, so you can get sucked into that universe and never find your way out again. So learn OOP from multiple perspectives.

Re: Ask HN: What are some good books for understanding OOP? by phamilton on Friday December 03, 2010 @01:53AM (#1965041)
In situations like those, I feel like OOP is some of the most buzzword laden areas of CS.

Things like "Cohesion", "Layering", "Polymorphism", "Abstraction", etc.

They are all great concepts with a lot of important principles, but I drives me nuts how often I've heard them used excessively.

Re: Ask HN: What are some good books for understanding OOP? by prodigal_erik on Friday December 03, 2010 @04:13AM (#1965258)
I would put http://en.wikipedia.org/wiki/Liskov_substitution_principle at the top of the list of things to understand. Language features like polymorphism and encapsulation aren't exclusively OO but they're provided because they help your designs follow LSP.
Re: Ask HN: What are some good books for understanding OOP? by wlievens on Friday December 03, 2010 @03:14AM (#1965166)
> So learn OOP from multiple perspectives.

This is key. Even if you end up never using the less traditional OOP models, learning them will let you write better software in the conventional languages. I can say with certainty that my basis in Smalltalk and (albeit limited) knowledge of Lisp makes me a far better Java programmer.