Members - Reputation: 170
Members - Reputation: 2109
Posted 09 December 2012 - 05:51 PM
Depends on your definition of ECS and of OOP. A Smalltalk user has a very different perspective of OOP to a Java user, for example.
1. Is Entity Component System (ECS) considered a part of OOP or is it a completely different concept?
I can't help but wonder where this question came from, though. Will knowing 'the answer' actually help with anything?!
Again depends on your definitions. You've managed to throw in a third overloaded concept in the form of MVC. This is near-perfect (accidental) trolling
2. Can the Model View Controller design pattern be used with non-OOP coding style, specifically with Entity Component System?
The real answer is: try it, just on paper or a scratch buffer for 10 minutes, using whatever definitions you like for those things.
I'm tempted to say that most MVC systems require something akin to the observer pattern, which I guess you could say means that OOP is a requirement. On the other hand, 'observer' is barely a pattern at all in many functional programming languages, so perhaps not.
I fear these questions are far too vague.
EDIT: the one potentially useful thing I can say is that I'm sure you can implement MVC and and entity component system in pretty much any language, regardless of whether or not it's advertised as 'being OO'. So again, just have a go.
Edited by edd, 09 December 2012 - 05:53 PM.
Members - Reputation: 622
Posted 12 December 2012 - 04:25 AM
From the other perspective it would be much harder to implement these systems in C than C++. But even harder is by perspective what I probably mean is it would take much more code involving more complicated type manipulations probably. Depending on how generic the system needs to be.
edd is right in saying you should try it out. Worst thing that can happen is it does not work out like you expected. Nothing in MVC for instance states the Model, View and Controller need to be Objects. In C the Model can be a Struct and the View and Controller for that Model can be functions.