Glasgow Haskell Compiler: Porovnání verzí
Smazaný obsah Přidaný obsah
mBez shrnutí editace |
→top: de-kiks-ování, +upravit _:-( značka: editace z Vizuálního editoru |
||
Řádek 1:
{{Upravit}}{{Infobox - software
| jméno = Glasgow Haskell Compiler
| vývojář = [[University of Glasgow]]
Řádek 10:
}}
'''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]].
== Historie ==
Vývoj GHC původně začal v roce 1989 jako prototyp napsaný v [[Lazy ML|LML]] Kevinem Hammondem na [[University of Glasgow|Universitě Glasgow]]. Později, ve stejném roce, byl tento prototyp kromě jeho [[parser]]u kompletně přepsán v Haskellu
== Architektura ==
GHC je napsáno v Haskellu (technikou [[bootstraping (informatika)|bootstrapingu]], samozavádění), ale [[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 [[
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 reduction|beta redukce]].
|