I have been talking about high and low level programming as if you know what this means. High level programming does not mean that you write it at the top of a building, but that the code is written at a high level of abstraction. Abstraction is a way of giving a name to a high level process, so that you just think about the action itself and not how you actually do it.

Consider the task of making a cup of tea. I know about tea, where it is kept in our house and how to prepare a reasonable pot of the stuff. You can therefore ask me to "make a cup of tea" and I will go off and do it. I know what make means as applied to tea.

However, if I want to get my friend Geoff, a coffee drinker, to make some tea I can't work at such a level. I have to tell him to put the kettle on, warm the pot, add the tea, add the water, stir it and etc. Geoff can't work at such a high level of abstraction because he doesn't know the precise steps involved in making tea; he has to be told each one in turn.