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ącymchoć,jakwidzimy,niedokońcaodszczegółó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.Daneżnychtypów
numerycznych(jakwidzieliśmy)zajmująż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