Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.3.EWOLUCJAJĘZYKÓWPROGRAMOWANIA
15
tłumaczeniaorazzapewnićobsługęnowychfunkcjijęzyków.Odlat40.XXw.
ewoluowałarównieżarchitekturakomputerów.Twórcykompilatorówmusielinie
tylkośledzićnowefunkcjejęzyków,lecztakżewynajdywaćalgorytmytłumaczące,
którezapewniłybymaksymalnewykorzystanienowychmożliwościsprzętowych.
Kompilatorymogąwspomócpromowanieużyciajęzykówwysokiegopoziomu,
minimalizującnarzutprogramówpisanychwtychjęzykach.Kompilatoryod-
grywająteżkrytycznąrolęwzapewnianiufaktycznegowykorzystaniawysoko-
wydajnejarchitekturykomputerówwaplikacjachużytkowników.Wistocie
wydajnośćsystemukomputerowegojesttakuzależnionaodtechnologiikompila-
torów,żesąoneużywanejakonarzędzieocenianiakoncepcjiarchitektonicznych,
zanimkomputerzostaniefaktyczniezbudowany.
Tworzeniekompilatorówjestwymagającymzadaniem.Kompilatorsamzsie-
biejestdużymprogramem.Cowięcej,wielenowoczesnychsystemówprzetwarza-
niajęzykówobsługujewieleźródłowychjęzykówimaszyndocelowychwobrębie
tejsamejplatformy;innymisłowy,systemytesłużąjakozbiorykompilatorów
obejmującychłączniemilionywierszykodu.Wkonsekwencjiprzytworzeniu
imodernizowaniunowoczesnychprocesorówjęzykówkluczowejeststosowanie
dobrychtechnikprojektowaniaoprogramowania.
Kompilatormusipoprawnieprzetłumaczyćpotencjalnienieskończonyzbiór
programów,któremożnanapisaćwjęzykuźródłowym.Problemgenerowania
optymalnegokoduwynikowegozprogramuźródłowegojestwogólnościnieroz-
strzygalny;tymsamymtwórcykompilatorówmusządokonywaćkompromisów
iostrożnychwyborów,jakimiproblemamimająsięzajmowaćijakiejheurystyki
użyćwcelurozwiązaniaproblemugenerowaniawydajnegokodu.
Studiowaniekompilatorówjestteżanalizowaniemtego,jakteoriaspotyka
sięzpraktyką,cozobaczymywpodrozdziale1.4.
Podręczniktenmanacelunauczeniemetodologiiipodstawowychideiuży-
wanychwprojektowaniukompilatorów.Niejestnasząintencjąprzedstawienie
wszystkichalgorytmówitechnik,któremogłybyzostaćużytedobudowania
perfekcyjnegosystemuprzetwarzaniajęzyków.Jednakczytelnicyuzyskająpod-
stawowąwiedzęizrozumieniepojęć,którepozwoląimwzględniełatwonauczyć
siębudowaniakompilatorów.
1.3.3.Ćwiczeniadopodrozdziału1.3
Ćwiczenie1.3.1:Określ,którezponiższychterminów:
(a)imperatywny
(d)zorientowanyobiektowo
(g)czwartejgeneracji
(b)deklaratywny
(c)vonNeumanna
(e)funkcyjny
(f)trzeciejgeneracji
(h)skryptowy
stosujesiędonastępującychjęzyków:
(1)C
(6)Lisp
(7)ML
(2)C++
(3)Cobol
(4)Fortran
(9)Python
(10)VB.
(5)Java
(8)Perl