In Ada, a ‘main’ procedure, at which sequential execution begins, is not made so by using a specially-reserved name, as in C-family languages; the familiar ‘main(void)’ or ‘main(int charc, char * argv[])’ functions. Instead, a procedure is treated as a main procedure (there need not be only one) iff:
- It is not contained within a package (as packages are used to store library code)
- It is nullary (i.e. takes no arguments)
This was a topic of some confusion for our team, as no tutorials we read made this explicit.