Typowanie dynamiczne – Wiki

Typowanie dynamiczne

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji , szukaj

Typowanie dynamiczne to nadawanie typów zmiennym w sposób dynamiczny, czyli wynikający z typu bieżącej wartości zmiennej. Jest to cecha niektórych języków programowania .

Przy zastosowaniu typowania dynamicznego, zmienne nie posiadają typów przypisanych statycznie ("na sztywno"). W takiej sytuacji typ zmiennej wynika z wartości jaką dana zmienna przechowuje. Ułatwia to znakomicie operacje na zmiennych, utrudnia natomiast kontrolę integralności programu. W razie wykonania podejrzanej operacji - na przykład kiedy do zmiennej zawierającej łańcuch "ala" przypiszemy liczbę 5 - kompilator o typowaniu statycznym zwróci błąd w kodzie. Program w języku zezwalającym na typowanie dynamiczne może zachować się dwojako:

  • w przypadku języków nie stosujących silnej kontroli typów (ang. type-safety) (na przykład w PHP ) po prostu zmieni typ zmiennej z łańcuchowego na liczbowy i przypisze jej nową wartość ,
  • w przypadku języków stosujących silną kontrolę typów (na przykład w Ruby ) wystąpi błąd podczas uruchomienia (w trybie ( ang. ) runtime).

Ciekawą konsekwencją typowania dynamicznego (w przypadku języków bez bezpiecznego typowania) jest także to, że wartość zmiennej przed wykonaniem operacji jest dopasowywana do danej operacji. Jeśli (podobnie jak w poprzednim przykładzie) do zmiennej zawierającej łańcuch "ala" dodamy liczbę "5", to program najpierw dopasuje wartość "ala" do operacji artymetycznej (wartość 0), następnie do "0" doda "5" i otrzymaną w ten sposób wartość "5", już jako wartość liczbową przypisze z powrotem do tej zmiennej.

Zachowanie to może zilustrować następujący fragment kodu w języku PHP :

<?php
 
$a = "4";        // przypisujemy zmiennej $a wartość łańcuchową "4"
$a = $a+7;       // dodajemy (arytmetycznie) liczbę 7
 
echo $a;         // program wypisuje "11"
                 // oznacza to,  że program najpierw sprowadził zmienną $a
                 // do postaci liczbowej (4) i dopiero do niej dodał 7
 
echo "\n";
 
echo strlen($a); // nie zmieniając samej zmiennej (zawiera ona nadal wartość liczbową), 
                 // wykonujemy operację charakterystyczną dla łańcucha znakowego
                 // (funkcja strlen() podaje długość takiego łańcucha)
                 // program wypisuje "2"
                 // oznacza to,  że program najpierw zamienił wewnętrznie zmienną $a
                 // na łańcuch znakowy "11" i podał jego długość
echo "\n";
 
?>

Do języków stosujących typowanie dynamiczne należą między innymi:


Walka na noże w amerykańskiej kampanii prezydenckiej
Zaostrza się kampania prezydencka w USA, pełna wzajemnych oskarżeń i ataków personalnych. Prezydent Barack Obama określa swego republikańskiego oponenta Mitta Romney'a mianem bezlitosnego kapitalisty, Romney natomiast oskarża go o powiększenie długu publicznego.



Największe organizacje lekarzy powołały sztab kryzysowy
Najważniejsze organizacje lekarskie w Polsce powołały sztab kryzysowy. Wezwał on medyków i świadczeniodawców do niepodpisywania umów z NFZ na wystawianie recept refundowanych.



Nowy wiersz Grassa, tym razem na temat Grecji
W niecałe dwa miesiące po opublikowaniu krytykującego Izrael wiersza niemiecki laureat literackiej nagrody Nobla Guenter Grass ponownie wdał się w poetycką polemikę na aktualny polityczny temat - tym razem postępowania UE wobec pogrążonej w kryzysie Grecji.



Odwrócenie trendów? PO już nie traci
Platforma Obywatelska zyskuje na poparciu, PiS traci. Różnica między tymi partiami wynosi 10 procent - takie są wyniki najnowszego sondażu telefonicznego TNS Polska dla programu Forum w Telewizji Polskiej.



Kombatanci upokorzeni na granicy? PiS interweniuje
Klub Parlamentarny PiS domaga się od premiera reakcji na potraktowanie kombatantów na granicy polsko-białoruskiej. Weterani, którzy jechali do Polski na zjazd łagierników-żołnierzy AK, zostali - według PiS - upokorzeni przez polską Straż Graniczną.



Home Page , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,