Glasgow Haskell Compiler: Porovnání verzí

Smazaný obsah Přidaný obsah
m Oprava odkazu
Formulace (částečně)
Řádek 10:
}}
 
'''The Glorious Glasgow Haskell Compilation System''', známý pod jmény '''Glasgow Haskell Compiler''' či '''GHC''', je [[open source|open sourcovýsource]] [[kompilátor]] [[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ývojVývoj GHC původně započal v roce 1989 jako prototyp napsaný v [[Lazy ML|LML (Lazy ML)]] Kevinem Hammondem na [[University of Glasgow|Universitě Glasgow]]. Později vbyl tomtove stejném roce byl tento prototyp kompletně přepsán v Haskellu, kromě jeho [[parser|parseru]], kompletně přepsán v Haskellu Cordeliusem Hallem, Willem Partainem a Simonem Peytonem Jonesem. Jeho prvníPrvní beta verzaverze byla vdánavydána 1.  dubna v roce  1991 a následovalinásledovaly další rozšiřující verze, přidávající např. [[Analýza striktnosti|analýzu striktnosti]] stejně jako jazyková rozšíření, jako [[Monady ve funkcionálním prokramování|monadický I/O]], proměnlivá pole, unboxed datové typy a [[Profiler|Výkonovouvýkonovou analýzu]]. Peyton Jones a Simon Marlow později přešli k [[Microsoft Research]] v [[Cambridge]] v Anglii, kde byli hlavními osobami, které byli zodpovědné 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.
Peyton Jones, stejně jako Simon Marlow, později přešli k [[Microsoft Research]] v [[Cambridge]] v Anglii, kde byli hlavními osobami, které byli zodpovědné 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 zvanou jako [[Strojovéstrojové učení|strojového učení]]), ale [[runtime]] systém Haskellu,. základníZákladní prvek kompilátoru je napsán v [[The C Programming Language|programovacím jazyce C]] a zprostředkovaném jazyce [[C-- (intermediate language)|C--]]. Mnoho z kódu GHC je napsáno pomocí [[literate programming|písmenného programování]].
 
[[Front end]] GHC zahrnující [[Lexikální analýza|exikálnílexikální analýzu]], [[Syntaktická analýza|syntaktickou analýzu]] a kontrolu [[typecheckerDatový typ|datových typů]] je navržen pro zachování co nejvyššího množství infrormaceinformace o zdrojovém kódu až do dokončení procesu [[type inference]] s důrazem na poskytování jasných výpisů chybových stavů uživateli. V poslední fázi front endu se provádí [[Syntactic sugar|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|systému F]], rozšířeného o výrazy <code>let</code> and <code>case</code>. Poté se se jádro rozšířilo o podporu obecných algebraických datových typů, a je postaveno na rozšíření systému F stává se z něj systém nazvaný System FC.
 
Podle zvyklosti z tradiční typově orientované kompilace se poté spouští zjednodušovač kódu GHC, neboli "[[middle end]]", který provádí většinu [[Optimalizace (informatika)|optimizacíoptimalizací]] implementovaných v GHC. Ty jsou strukturované jako posloupnost úprav aplikovaných na [[zdrojový kód]] při úpravách jádra. Analáza a úpravy spouštěné v 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í)(v tradičních překladačích nazvané "[[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|nadhodnocených]] funkcí, stejně jako soubor jednodušších místních úprav jako jsou [[constant folding]] a [[beta reduction|beta redukce]].
 
Závěrečná úrověňúroveň se 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ý model počítače|teoretického 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].
 
==Jazyk==
Řádek 29 ⟶ 28:
 
==Přenositelnost==
V současné době je několik verzí GHC dostupných pro různé [[platforma|platformy]], včetně [[Microsoft Windows|Windows]] a většiny variací [[Unix]]u (jako jsou různé distribuce [[Linux]]u nebo [[Mac OS X]].). GHC byl také portován na několik různých procesorových architektur.
 
 
==Externí odkazy==
* [http://www.haskell.org/ghc/ domovská– domácí stránka GHC]
 
[[ca:GHC]]