Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Jakwtakiejsytuacjikomputermazinterpretowaćwyrażeniex+y?Gdziekończą
sięwartościxiy?Cooznaczaoperacja+?Odpowiedzinatepytaniawynikająwła-
śnieztypówzmiennychxiy,dlategotypytemusząbyćokreślone.Jeślinp.zmienne
xiysątypuint,todoprzechowywaniawartościtychzmiennychzostanąwydzielone
obszarypamięciookreślonejdługości(4bajty),ainstrukcjadodawaniabędzieskutko-
waćwygenerowaniemodpowiednichinstrukcjimaszynowych,którewsumieumożliwią
dodaniedosiebiedwóchwartościztychobszarówprzyzastosowaniuarytmetykista-
łopozycyjnej.Gdybyzmiennexiybyłytypufloat,toobszaryzajmowanejprzeznie
pamięcibyłybyinne(8bajtów),adodawaniebyłobyrealizowanewarytmetycezmienno-
pozycyjnej.
DlaczegojednakwprogramiepisanymwJavie,któraprzecieżjestjęzykiemwysokiego
poziomu(abstrahującym–choć,jakwidzimy,niedokońca–odszczegółówtechnicz-
nych)programistazawczasumusideklarowaćzmienne,określającprzytymichtypy?Są
języki,któretegoniewymagają.Programujesięwnichniecołatwiej,boprogramistanie
zaprzątasobiegłowyszczegółamitechnicznymiimamniejpisania.Alesąargumenty,
któreprzemawiajązaokreślaniemtypówzmiennychprzezprogramistę.Wartoprzede
wszystkimzauważyć,żedotyczytozwłaszczatypównumerycznych.Daneróżnychtypów
numerycznych(jakwidzieliśmy)zajmująróżnąobjętośćpamięci.Mającdowyborukilka
typówliczbowych,programistamożewięclepiejsterowaćzajętościąpamięciiefektyw-
nościąprogramu.Jeślinp.musiprzechowywaćwpamięci10tys.liczbiwie,żewszystkie
mogąbyćtylkocałkowite,aichwielkościmieszcząsięna4bajtach,toużywająctypuint
zamiasttypudouble,oszczędza40tys.bajtóworazznaczniezwiększaefektywność
programu,gdyżdziałanianaliczbachcałkowitychwykonująsięzazwyczajwielokrotnie
szybciejniżnaliczbachrzeczywistych.Powiedzmyjednakszczerze,tenkontekstjestbardzo
ważnywzastosowaniachnaukowych,przydużychobliczeniachitd.,natomiastnaskutek
rozwojutechnologicznegooszczędnościrzędu1MBpamięciczykilkamilionówopera-
cjiwprogramiedlacodziennychpowszechnychzastosowańoprogramowanianiesąjuż
takistotne.
Dochodzimywięcchybadonajbardziejwłaściwejodpowiedzinapytanieosensde-
klarowaniazmiennychiokreślaniaichtypów.Otóżokreślanietypówdanych(nawettych
najbardziejelementarnych)wdeklaracjachumożliwiakompilatorowikontrolępoprawności
programu,np.stwierdzenie,czyzmienneokreślonychtypówstosujemywewłaściwychkon-
tekstachalboczyprzekazujemyfunkcjom(metodom)argumentywłaściwychtypów.Nazywa
siętostatycznąkontrolązgodnościtypów(przezkompilator)iczęstopomagawykrywać
błędywprogramiejużwfaziekompilacji.
Javajestjęzykiemzestatycznąiścisłąkontrolązgodnościtypówitemugłówniesłuży
wybranyprzeztwórcówJavysposóbkompilowaniaprogramów,odzwierciedlonywskładni
języka.
Statycznaścisłakontrolazgodnościtypówoznacza,żetypwynikukażdegowyrażenia
znanyjestjużwfaziekompilacji.
44
2.Typyioperacje