I'm studying programming practices using C++ and currently reading a chapter on OOP which covers inheritance and virtual functions I'm new to programming, but am determined to understand standard practices not just remembering a language syntax, the reason for this question is while reading about OOP in C++ i've also read submissions from these two threads<p>http://news.ycombinator.com/item?id=1993129,<p>https://github.com/raganwald/homoiconic/blob/master/2010/12/oop.md#readme,<p>and while most of the read is good information I also often read bashing on this method of programming which I don't understand because it's only a tool a method to get the job done, if it doesn't work for the task your working to accomplish try a different programming method is what I've gathered from my studies so far, so my question to HN is<p>1.What are alternative approaches to OOP which may allow wider flexibility ?<p>2.What are the benefits of said method ?<p>3.When is OOP a good method to use ?<p>the book I'm using: is Principle and Practices using C++ by: Bjaurne Stroustoup<p>great read for a beginner depending on the person I like low level programming linux and the command line so using bash,terminal,emacs,gcc are all things you have to consider.<p>the last was a rant but just little about me