Very good question! If you are relatively new to programming I'd say you are going through pretty common phases as you learn more. It is no surprise that
procedural programming[
^] appeals to you since it is easy to learn and relatively easy to apply. But maybe not as easy as you might think. Well-written procedural code has a tendency of incorporating aspects of object oriented programming but without the compiler helping you. You'll find plenty of examples in Win32 and POSIX where all operations on an object (in this context it means something like a window, a file or a process) require the use of a handle or structure, often as the first argument. This argument essential serves the same purpose as the
this
pointer in OOP. The big difference though is that for example in Win32 instead of a
Window
class that deals just with windows I have a user32.dll library that deals with windows among many other things. Also, I have these "free floating" handles that I need to keep track of rather than strongly typed object references.
What I'm trying to say is, once you study large real-world systems, and eventual build them yourself, you'll find that OOP done right can make a system easier to understand and maintain than a procedural/modular solution. Of course OOP is no silver bullet either (I'm a huge fan of the-right-tool-for-the-job) but having a good understand of it is a must these days. As for writing procedural code in languages such as C# or C++, well, that's certainly something you can do. However, you wouldn't take advantage of the capabilities of those languages and you would end up with a huge disconnect between your own code base and the standard libraries. Personally, I would certainly discourage people from attempting this. While C# and C++ are multi-paradigm programming languages they arguably are OOP languages first.
That said, I would encourage you to keep expanding you knowledge of OOP. It takes a long time to master it. I regularly see people who should know better create classes called
Util
or
Helper
because they can't figure out where a particular method really belongs. It certainly took me several years to get any good at it and I would still not claim that I've mastered it. They might be a bit confusing at the moment, but start reading books about OOP, design patterns in particular (books about OOP languages usually put emphasis on the language itself), e.g.
Design Patterns: Elements of Reusable Object-Oriented Software[
^] or
Head First Design Patterns[
^].