Macro writing is not a theoretical science, rather it is a ``rough'' trade which you can only learn by getting yours hands ``dirty''. For this reason, the most important part this tutorial are the exercises which you will find at the end of the sections 2 - 8. These exercises were chosen in such a way that they can be solved in a short time (not more than 15 minutes for most of them), provided that you have understood well the concepts explained in the corresponding section. Thus, in your very own interest, really try to solve the exercises yourself. Even if you do already have access to the solutions (which you normally don't, see section 11), it is worth while to give it a good first try on your own.
The following sections are structured in a more or less logical way, starting with a general overview and then proceeding from the simpler to more complex aspects of macro programming. The only section with does not really fit into this order is section 9 which explains how to debug macros. As solving the exercises has a lot to do with macro debugging (at least for me!), it might be worth while to check into section 9 after having having lived through the pains of debugging the first couple of macros without using any special debugging commands.
In the next section, we will give a brief overall summary of the macro language. In each of the remaining sections, a particular aspect of advanced macro programming is looked at in more detail.