Die Regel 2 ist programmtechnisch unnötig.
Ohne Bindarylanguage werden die Exporte sowieso sortiert.
Mit Bindarylanguage bestimmt man die Reihenfolge selber.

Regel 1 sollte man entschärfen und an Stelle von Programm "Modul" setzen.
Ein Programm/Serviceprogramm kann durchaus eine beliebige Anzahl von Modulen enthalten.

Auch wenn das Ladeverhalten vielseitig diskutiert wurde gilt trotzdem folgendes (außer bei dynmischem Binden á la GetProcPtr von Dieter):
Beim Laden eines Serviceprogrammes/Programmes werden sämtliche statischen Adressverweise auf externe Programme direkt per "GetSystemPtr" aufgelöst und somit auch die benötigten externen Programme geladen bevor die erste Zeile Code ausgeführt wird (INZ-Direktive).
Je mehr externe Verweise benötigt werden, desto länger halt das Laden.
Sicherlich wird ggf. nicht das gesamte Objekt geladen sondern nur der Datenteil, der die Verweise enthält.
Dadurch ergibt sich, dass wenige große Serviceprogramme schneller geladen sind als viele viele kleine.

Das initialisieren der ProcedurePointer erfolgt dann nur noch an Hand der Verweisliste im bereits geladenen Objekt.

Auch wenn es sich nur im Bereich von Millesekunden bewegt, die Summe über viele tausende Aufrufe macht es dann doch aus.

Nicht umsonst verwaltet das System selber eine zentrale Verweistabelle, die bei BS-Installation initialisiert wird und einige Tausend benötigte Programmverweise auf Q-Programme enthält um genau diese Initialisierungszeiten zu sparen. Durch das Einspeicherkonzept erfolgen die Aufrufe dann tatsächlich extrem schnell.