Glasgow Haskell Compiler: Porovnání verzí

Smazaný obsah Přidaný obsah
mBez shrnutí editace
→‎top: de-kiks-ování, +upravit _:-(
Řá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 CordeliusemCordelií HallemHallovou, Willem Partainem a Simonem Peytonem Jonesem. První beta verze byla vydána 1. dubna 1991 a následovaly další rozšiřující verze, přidávající např. [[Analýza striktnosti|analýzu striktnosti]] stejně jako jazyková rozšíření, jako [[Monády (funkcionální programování)|monadický I/O]], proměnlivá pole, unboxed datové typy a [[Profiler|výkonovou analýzu]]. Peyton Jones a Simon Marlow později přešli ke společnosti [[Microsoft Research]] v [[Cambridge]] v Anglii, kde byli hlavními osobami zodpovědnými za vývoj GHC. GHC také obsahovalo programový kód od dalších šedesáti programátorů, kteří se spolupodíleli na jeho vývoji.
 
== 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 [[typeTypové inferenceodvozová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í [[SyntacticSyntaktický sugarcukr|desugar]]??, který Haskell převede do písmenného?? [[zprostředkovaný jazyk|zprostředkovaného jazyka]] známého jako "Core" (jádro) (založeného na [[System F (Informatika)|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ů, 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 reduction|beta redukce]].