I think object oriented programming is overrated, however I want to learn this paradigm. I have been trying to do this in PHP 5 and C++ with QT 4. Unfortunately, I tend to program in structured way, I do not use much of inheritance nor multiple instances. I think I have to learn a pure object oriented language that force me to use above features.
I think the best option is probably to learn Ruby. Could You confirm or name better alternative?
I work mainly on a x86-64 Linux.
Object-oriented programming has very little to do with what language you use and a lot to do with your approach to programming. Object-oriented programming depends on how you plan things and how you structure your code. You could use a language like Java, which forces you to use some object-oriented features, but if just sat down and put all your code in the
main()
method you have not done any object oriented programming.My suggestion is not to learn a different language, but to study the paradigm of object-oriented programming itself and the various ways a program is planned and implemented using object-oriented analysis and design. Learn about abstraction, encapsulation, inheritance, and polymorphism to start. Get a good feel for UML. Then study design patterns that are used in object-oriented programming.
Make sure you're doing all these things before you code. The biggest shock you may face is how much time you have to think before you code anything. Spending the time to plan your program in an object-oriented way is very difficult for people accustomed to just sitting down and coding in a process-oriented way. If you take the time to plan what you're going to do in advance (of course don't go too crazy since programming is about small iterations), you'll find you can create much better code the first time, for increasingly complex tasks.
I see a lot of suggestions here to learn languages that are frankly not marketable. As a young person you may not care and have this zest for learning (I know b/c I've been there), but down the road when it comes time to put food on the table you will regret screwing around with these languages. Ada is honestly my favorite language and I'd love to program in it for a career, but she don't pay the bills so I had to break it off with her. :(
Object-oriented programming isn't about syntax. It a programming paradigm.
A language can force you to use objects (if everything is an object, for example) but using one of those languages isn't going to "force" you to learn object-oriented programming.
You have to learn when and why you use these techniques (data abstraction, encapsulation, polymorphism, and inheritance) to think in objects. Get a good reference in object-oriented programming and use whatever language (that supports OOP) you are most comfortable with to apply those techniques.