Pok-12-wyk-Slajd9
Kontrola dynamiczna
Nie wszystkie kontrole zgodności typów mogą być wykonane statycznie. Niekiedy nawet zastosowanie analizy przepływu sterowania i analizy przepływu danych nie pozwala uniknąć konieczności przeprowadzania dynamicznej kontroli zgodności typów (o ile jest ona w danym języku źródłowym przewidziana).
W przedstawionym przykładzie w języku Ada, jeżeli użytkownik poda z wejścia liczbę nie mieszczącą się w zadanym zakresie, dynamicznie (w trakcie wykonywania programu) przeprowadzana kontrola zgodności wczytanych danych z zadeklarowanym zakresem typu okrojonego zgłosi wyjątek przekroczenia zakresu typu. Jeżeli jednak kod programu przetwarzałby znak po znaku i jawnie analizował poprawność danych, kompilator mógłby - na postawie analizy przepływu sterowania i danych - wyeliminować dynamiczną kontrolę zgodności typów.
Wykonywanie kontroli dynamicznej uzyskiwane jest za pomocą dodatkowego (zwykle opcjonalnego – zależnego od odpowiednich opcji kompilatora) kodu wplatanego w program wynikowy. Nieuniknione jest więc pogorszenie efektywności (wzrost rozmiaru i spowolnienie) kodu wynikowego. Czasami stosuje się więc takie podejście, w którym w trakcie uruchamiania i testowania kontrola dynamiczna jest włączana, w wersji finalnej - wyłączana.