Glasgow Haskell Compiler: Porovnání verzí

Přidáno 14 bajtů ,  před 13 lety
formulace, typo
(formulace, typo)
 
==Historie==
Vývoj GHC původně započalzačal v roce 1989 jako prototyp napsaný v [[Lazy ML|LML (Lazy ML)]] Kevinem Hammondem na [[University of Glasgow|Universitě Glasgow]]. Později byl, ve stejném roce, byl tento prototyp kromě jeho [[parser|parseru]] kompletně přepsán v Haskellu Cordeliusem Hallem, 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 [[Monady ve funkcionálním prokramová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 kke společnosti [[Microsoft Research]] v [[Cambridge]] v Anglii, kde byli hlavními osobami, které byli zodpovědné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 [[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 zVětšina kódu GHC je napsánonapsána pomocí [[literate programming|písmenné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 [[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Časem se jádro rozšířilo o podporu obecných algebraických datových typů, a 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 poté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 strukturované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 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á ú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==
GHC pracuje podle posledního jazykového standardu jazyka nazvaného ''Haskell 98''. Podporuje také mnoho volitelných rozšíření, jako jsou například: knihovna '''[[Software transactional memory|STM]]''', která umožňuje kontrolovat zápisy do sdílené paměti a další.
 
==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==
489

editací