Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.5.ZASTOSOWANIATECHNOLOGIIKOMPILATORÓW
19
1.5.1.Implementacjajęzykówprogramowaniawysokiegopoziomu
Językprogramowaniawysokiegopoziomudefiniujepoziomabstrakcji:progra-
mistaformułujealgorytmprzyużyciutegojęzyka,kompilatorzaśmusiprze-
tłumaczyćtenprogramnajęzykdocelowy.Wogólnościjęzykiprogramowania
wyższegopoziomuułatwiająprogramowanie,alemniejwydajne,conależyro-
zumieć,żewynikoweprogramydziałająwolniej.Programiściużywającyjęzyków
niższegopoziomumająwiększąkontrolęnadprzetwarzaniemimogązzasady
tworzyćbardziejwydajnykod.
Nieszczęśliwie,programytworzonewjęzykachniższychpoziomówtrud-
niejszewpisaniuicojeszczegorzejmniejprzenośne,bardziejpodatnena
błędyitrudniejszedoutrzymania.Optymalizującekompilatoryzawierajątech-
nikipoprawiającewydajnośćgenerowanegokodu,tymsamymmarginalizując
nieefektywnośćwynikającązabstrakcjiwyższegopoziomu.
Przykład1.2:
Słowokluczowe
register
wjęzykuCjestprzykłademinterakcji
międzytechnologiąkompilatorówaewolucjąjęzyka.GdyjęzykCpowstawał
wpołowielat70.,zakonieczneuważanoumożliwieniezapewnieniaprogramiście
kontrolinadtym,którezmienneprogramumająbyćprzechowywanewrejestrach.
Tenpoziomkontrolistałsięniepotrzebnywrazzwynalezieniemskutecznych
technikalokowaniarejestrówiwiększośćnowoczesnychprogramównieużywa
jużtejfunkcjonalnościjęzyka.
Wistocieprogramyużywającesłowakluczowego
register
mogątracićna
wydajności,gdyżprogramiściczęstonienajlepszymidecydentamiwzagad-
nieniachbardzoniskiegopoziomu,takichjakalokowanierejestrów.Optymalny
wybóralokacjizależywnajwiększymstopniuodspecyfikiarchitekturymaszyny.
Wpisanienasztywnodecyzjiozarządzaniuniskopoziomowymizasobami,takimi
jakrejestry,możewrezultaciebardzozaszkodzićwydajności,szczególniegdy
programzostanieuruchomionynainnymkomputerzeniżten,dlaktóregogo
napisano.
Wielezmianwchętniewybieranychjęzykachprogramowaniaodbywałosię
wkierunkuzwiększeniapoziomabstrakcji.Cbyłdominującymjęzykiemprogra-
mowaniasystemowegowlatach80.;wielenowychprojektówrozpoczynanych
wlatach90.wykorzystywałoC++;językJava,wprowadzonywroku1995,
szybkozdobyłpopularnośćwpóźnychlatach90.Nowefunkcjonalnościkolejno
wprowadzanychjęzykówprogramowaniapobudzałynowebadaniawkierunku
optymalizacjikompilatorów.Wnastępnychpodrozdziałachprzedstawimygłów-
necechyjęzyków,którestymulowałyznaczącypostępwtechnologiachkompila-
torów.
Praktyczniewszystkiepopularnejęzykiprogramowania,wtymC,Fortran
iCobol,obsługujązłożonetypydanychdefiniowanychprzezużytkownika,takie
jaktabliceistruktury,orazelementykontroliprzebieguprogramuwyższegopo-
ziomu,takiejakpętleiwywoływanieprocedur.Gdybyśmypoprostuwzięlikażdą
konstrukcjęwysokiegopoziomuluboperacjędostępudodanychorazprzełożyli
jewprostnakodmaszynowy,wynikbyłbybardzonieefektywny.Podstawowy