## воскресенье, 22 января 2012 г.

### Simple Models

Recently I've started exploring Microsoft XNA platform. In an attempt to get familiar with numerous powerfull tools it offers I've decided to use it to accomplish some relatively simple but interesting task that will make use of graphics but won't prompt me to focus on sophisticated graphics stuff. Due to some strange reasons I've choosen to start with developing Rubik's Cube puzzle game. The idea for application here is quite simple - the only thing my game must offer to a user is an opportunity to solve the well-known puzzle on a computer screen.

As for development,the task accomplishment, roughly speaking, requires two smaller problems being solved: firstly I should design a Rubik's Cube representation for storing and modifying tha state of the toy in line with player's actions and secondly I need to introduce routines for showing the Cube in an appropriate state on the screen. I haven't started writing graphics-related code yet, but I feel I'm almost finished with the first stage - that means I have developed a couple of classes representing the puzzle which provide convenient ways for performing any required in-game operation on the toy (e.g. rotating one of the cube's faces).
These recent efforts to develop a simple and convenient model of a real world object encouraged me to think over Leonard Susskind's words across which I had come some time ago. Speaking about the legendary physicist - Richard Feynman - Susskind had said:

"He [Feynman] truly believed that if you couldn't explain something simply, you didn't understand it."

My intuition supported this idea long before I've heard these words, although I have never thought about it deeply. However this time the attempts to design a representation of a real world thing combined with revisiting Susskind's speech made me contemplate the thought.

The above quote suggests that to understand something one needs to have a simple model of the thing in mind - only possessing such a model one can explain something - that is share the model - and the explanation will be simple only in case the model is. In fact having a complete model of some object or process means understanding it - and vice-versa - so the only way to understand something is to study or design a model of the thing. A task of designing a model is usually a hard one and requires a lot of work to be done. Such a design process involves overcoming numerous problems which actually help the developer to form a better understanding of the entire object or process being described. Obviously it is difficult to design either a simple model of an object or a sophisticated one, but surprisingly the former are usually much harder to discover and develop. That means one often needs to do much more work, to face much more problems to achieve a goal of designing a simple but workable model - that is precisely one of the reasons why simpler models correspond to a better understanding.

However we actually don't design all the models we use ourselves - we tend to take ready ones and use these for our purposes. In this case one can't directly benefit from the difficulties connected with developing a simple model, though one benefits from the model's simplicity itself and really understands the things better than in case he would use a large and sophisticated one. That's because our mind's power is finite, hence it may be quite difficult for our brain to handle a sophisticated thing - roughly speaking it may fail to 'cache' a complex model completely with all of it's numerous although important details. I suppose we tend to unconsciously simplify the model if one is too sophisticated for us to handle, but in case our mind is not familiar with the model such a simplification may result in losing some important details which are just cut away and eventually this will lead to mistakes.

In this way simple models really produce better understanding through representing corresponding objects in a complete and convenient (particularly for our mind) manner. Moreover such models have another advantage over the complex ones: if your model is simple it is easy to share it because it can be explained simply.