Object oriented programming can be a very good thing in a large application. The kind that will not fit on most micros.
C++ is a good example of how not to implement a OO language.
Given a choice I will use C#. Do not carp about it being MS as there is good support for the open source version mono. You can even use visual studio on vista to debug a C# program running under linux.