object oriented programming leads to code size bloat.
No it does not. Or at least it need not. This is a common myth.
If you need multiple instances of something, for example a buffer, you can write that in C using pointers to your select which of your various buffers you are working on. You can also write it in C++, have a buffer class and let the language take care of object instance references. You will find that the code comes out about the same size in either regular C or object oriented C++. In fact when I did some experiments with this a while back I was surprised, even shocked, that the generated code was byte for byte the same!
Don't forget that the Arduino is programmed in C++ has and has far less memory than the Pi.