Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
ROZDZIAŁ1.WPROWADZENIE
1.G.1.Rozróżnieniestatyczny/dynamiczny
Wśródnajważniejszychproblemów,zktórymimusimysięzmierzyćprzypro-
jektowaniukompilatoradlaokreślonegojęzyka,jestten,jakiedecyzjemoże
podejmowaćkompilatornatemattworzonegoprogramu.Zjednejstronyjeśli
językużywazasadypozwalającejkompilatorowinarozstrzygnięciejakiegośpro-
blemu,wówczasmówimy,żejęzyktenużywazasadystatycznejlubżedylemat
zostanierozstrzygniętywczasiekompilacji.Zdrugiejstronyzasadapozwalająca
napodejmowaniedecyzjitylkopodczasdziałaniaprogramunazywanajestzasadą
dynamicznąlubwymagającądecyzjiwczasiewykonywania.
Problemem,nadktórympowinniśmysięskoncentrować,jestzasięgdeklaracji.
Zasięgiemdeklaracji
x
nazywamyobszarprogramu,wktórymużycie
x
odwołuje
siędotejdeklaracji.Językużywazasięgustatycznegolubleksykalnego,jeśli
możliwejestokreśleniezasięgudeklaracjiprzezsamoprzejrzeniekoduprogramu.
Wprzeciwnymraziejęzykużywazasięgudynamicznego.Wtymprzypadku
podczasdziałaniaprogramutosamoużycie
x
możeodnosićsiędodowolnej
zwieluróżnychdeklaracjix.
Większośćjęzyków,takichjakCiJava,używazasięgustatycznego.Zagad-
nienietoomówimybliżejwpodrozdziale1.6.3.
Przykład1.3:
Jakoinnyprzykładrozróżnieniamiędzystatycznymadyna-
micznymrozważmyużycieterminunstatic”,takjakjeststosowanydodanych
wdeklaracjiklasywJavie.WjęzykuJavazmiennajestnazwąlokalizacjiwpa-
mięci,służącejdoprzechowaniawartościdanych.Wtymprzypadkunstatic”
nieodnosisiędozasięguzmiennej,aledomożliwościzdeterminowaniaprzez
kompilatorlokalizacjiwpamięci,wktórejmożnaznaleźćzadeklarowanązmienną.
Deklaracjatakajak
publicstaticintx;
sprawia,że
x
jestzmiennąklasowąiżeistniejetylkojednakopia
x
,nieza-
leżnieodtego,jakwieleobiektówtejklasyzostanieutworzonych.Cowięcej,
kompilatormożeustalićlokalizacjęwpamięci,wktórejtocałkowite
x
będzie
przechowywane.Dlakontrastu,gdybyśmypominęlinstatic”wtejdeklaracji,
każdyobiektklasymiałbyswojąwłasnąlokalizację,wktórejprzechowywane
będzie
x
,ikompilatorniemożeokreślićwszystkichtychmiejsczawczasuprzed
uruchomieniemprogramu.
1.G.2.Środowiskaistany
Inneważnerozróżnienie,któremusimypoczynićprzyomawianiujęzykówprogra-
mowania,jestto,czyzmianywystępującewczasiedziałaniaprogramuwpływają
nawartościelementówdanych,czyteżnainterpretacjęnazwdlatychdanych.
Naprzykładwykonaniewyrażeniaprzypisania,takiegojak
x=y+1
,zmienia
wartośćwskazywanąprzeznazwę
x
.Mówiącprecyzyjniej,przypisaniezmie-
niawartośćwjakiejkolwieklokalizacji,którajestoznaczonaprzezx.