One other thing I forgot to mention Qui. In the older versions of MT4 that used only the Start function, it was difficult to tell if the program was a script, an EA, an indicator, etc. You had to dig through the code to see what it was and what it did before you could decide what it was.
The versions after build 600 used things like OnTick to define what type of code you are dealing with right at the beginning if you look at the code itself. Here's a list...they all basically do the same thing but it's much easier to tell what you're dealing with by looking at the function...
OnStart....Tells you you're dealing with a script.
OnCalculate...Tells you you're dealing with an indicator.
OnTick...Tells you you're dealing with an EA.
You can also add things like OnInit which can be used in any of the above types of code. Basically, OnInit guarantees that the code starts working immediately as soon as you drop it on the chart. It doesn't require anything to kickstart it.