Glasgow Haskell Compiler: Porovnání verzí

Smazaný obsah Přidaný obsah
m Robot: oprava formátování infoboxu; kosmetické úpravy
Řádek 8:
| typ softwaru = [[Překladač|kompilátor]]
| licence = [[BSD licence|BSD]]
| web = [http://www.haskell.org/ghc/ domovská stránka GHC] |
}}
 
'''The Glorious Glasgow Haskell Compilation System''', známý pod jmény '''Glasgow Haskell Compiler''' či '''GHC''', je [[Otevřený software|open source]] [[Překladač|kompilátor]] do [[strojový kód|strojového kódu]] pro [[funkcionální programování|funkcionální]] [[programování|programovací]] [[Programovací jazyk|jazyk]] [[Haskell (programovací jazyk)|Haskell]]. Hlavními vývojáři jsou [[Simon Peyton Jones]] a [[Simon Marlow]].
 
Řádek 17 ⟶ 16:
 
== Architektura ==
GHC je napsáno v Haskellu (technikou [[bootstrapping |bootstrapingu]], samozavádění), ale [[Běhové prostředí|runtime]] systém Haskellu, základní prvek kompilátoru,{{Kdo?}} je napsán v [[The C Programming Language|programovacím jazyce C]] a zprostředkovaném jazyce [[C-- (intermediate language)|C--]]. Většina kódu GHC je napsána pomocí [[literate programming|dokumentovaného programování]].
 
[[Front end]] GHC zahrnující [[Lexikální analýza|lexikální analýzu]], [[Syntaktická analýza|syntaktickou analýzu]] a kontrolu [[Datový typ|datových typů]] je navržen pro zachování co nejvyššího množství informace o zdrojovém kódu až do dokončení procesu [[Typové odvozování|typového odvozování]] s důrazem na poskytování jasných výpisů chybových stavů uživateli. V poslední fázi front endu se provádí odstranění [[Syntaktický cukr|syntaktickýho cukru]], který Haskell převede do typovaného [[mezilehlý jazyk|mezilehlého jazyka]] ([[mezikód]]u ?)
známého jako "Core" (jádro) (založeného na [[System F|systému F]], rozšířeného o výrazy <code>let</code> and <code>case</code>. Časem se jádro rozšířilo o podporu obecných algebraických datových typů (GADT),je postaveno na rozšíření systému F a stává se z něj systém nazvaný System FC.
 
Podle zvyklosti z tradiční typově orientované kompilace se následně spouští zjednodušovač kódu GHC, neboli "[[middle end]]", který provádí většinu [[Optimalizace (informatika)|optimalizací]] implementovaných v GHC. Ty jsou strukturovány jako posloupnost úprav aplikovaných na [[zdrojový kód]] při úpravách jádra. Analýza a úpravy spouštěné v této fázi zahrnují [[demand analysis|požadavkovou analýzu]] (zobecněnou analýzu striktnosti), aplikaci uživatelsky definovaných pravidel [[rewrite rules]] (což zahrnuje soubor pravidel včetně standardních knihoven GHC, které vykonávají foldr/build [[Deforestation|fusion]]), [[unfolding]] (rozbalování – zahrnuje v tradičních překladačích tzv. "[[inlining]]"), [[let-floating]] – analýzu, jež rozhoduje, které funkční argumenty mohou být rozbaleny, [[constructed product result analysis|analýza CPR]], [[Partial evaluation|specializace]] [[Type class|přetížených]] funkcí, stejně jako soubor jednodušších místních úprav jako jsou [[constant folding]] a [[beta_redukce|beta redukce]].
 
Závěrečná úroveň sestává ze zjednodušovacích úprav jádra do [[STG (Spineless Tagless G-machine)]] (nižšího zprostředkovaného jazyka). Stejně jako jádro je i samo STG funkcionálním jazykem. STG je ekvivalentem teoretického [[výpočetní model|modelu počítače]] (stejně jako například [[Turingův stroj]] či [[RAM stroj|model RAM]]). [[Back end]] GHC provádí úpravy STG před překladem do C, C-- nebo [[strojový kód|strojového kódu]].