Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
18
ROZDZIAŁ1.WPROWADZENIE
szybkośćwykonywaniaprogramu.Szczególniewprzypadkuwbudowanych
aplikacjimożemyrównieżdążyćdominimalizowaniawielkościwygenerowa-
negokodu.Wprzypadkuzaśurządzeńprzenośnychpożądanebyłobyrów-
nież,abykodograniczałzużycieenergii.Zazwyczajtesameoptymalizacje,
któreskracajączaswykonania,równieżoszczędzająenergię.Pozawydajnością
ważnemogąbyćrównieżaspektyużytkowalności,takiejakzgłaszaniebłędów
idebugowanie.
Ponadtomusimyutrzymaćdostateczniekrótkiczaskompilacji,abyzapewnić
szybkicyklprogramowaniaidebugowania.Wymógtenjestobecniełatwiejszy
dospełnieniawmiarę,jakkomputerycorazszybsze.Częstoprogramjest
najpierwpisanyidebugowanybezoptymalizacji.Nietylkopozwalatonareduk-
cjęczasukompilacji,lecztakże,coważniejsze,niezoptymalizowaneprogramy
łatwiejszedodebugowania,gdyżusprawnieniawprowadzaneprzezkompi-
latorczęstozaciemniająpowiązaniemiędzykodemźródłowymawynikowym.
Włączenieoptymalizacjiwkompilatorzeniekiedyujawnianoweproblemywpro-
gramieźródłowym;tymsamymkoniecznejestponowneprzeprowadzenietestów
zoptymalizowanegokodu.Tapotrzebadodatkowychtestówniekiedyodstręcza
odużyciaoptymalizacjiwaplikacjach,szczególniewtedy,gdyichwydajnośćnie
jestkrytyczna.
Nakoniec,kompilatorjestzłożonymsystemem;musimyzadbaćoto,aby
byłtosystemmożliwieprosty,abyzagwarantować,żekosztyjegobudowy
iutrzymaniabyłymożliwedoprzyjęcia.Istniejepraktycznienieskończonaliczba
optymalizacji,któremoglibyśmyzaimplementować,astworzeniepoprawnych
iskutecznychoptymalizacjiwymaganietrywialnegowysiłku.Koniecznejestokre-
śleniepriorytetówiimplementowanietylkotychoptymalizacji,któreprowadzą
donajwiększychkorzyściwpraktyczniespotykanychprogramachźródłowych.
Przystudiowaniukompilatorówuczymysięzatemnietylko,jakjebudować,
lecztakżeogólnejmetodologiirozwiązywaniazłożonychiotwartychproblemów.
Podejścieużywanewprojektowaniukompilatorówobejmujezarównoteorie,
jakieksperymenty.Zazwyczajrozpoczynamyodsformułowaniaproblemu
napodstawieintuicyjnegozałożenia,jakietrudnościistotne.
1.5.Zastosowaniatechnologiikompilatorów
Projektowaniekompilatorówniedotyczyjedyniekompilatorówjakotakich.Wiele
osóbużywatechnikpoznanychpodczasstudiowaniakompilatorów,choćnigdy,
mówiącściśle,nienapisali(nawetczęści)kompilatoradlaktóregośzgłównych
językówprogramowania.Technologiakompilatorówmarównieżinneważne
zastosowania.Dodatkowoprojektykompilatorówmająwpływnawieleinnych
obszarówinformatyki.Wtympodrozdzialeprzejrzymynajważniejszezależności
izastosowaniatejtechnologii.