Why hybrid?
Primarily because of performance
- Who wants to ask an integer to dispatch a method to add an integer to it?
- Even “just” an added indirection can be costly, if done frequently enough
So, hybrid languages (C++, …) allow the programmer to choose what is an what isn’t an object
- Usually with some constraints; for example, constraining non-objects to a predefined set of types