www.wikidata.de-de.nina.az
Der Glasgow Haskell Compiler auch The Glorious Glasgow Haskell Compilation System 4 aber vor allem bekannt als GHC ist ein quelloffener Compiler fur die Programmiersprache Haskell Er ist selbst in Haskell geschrieben und erzeugt nativen Maschinencode fur die jeweilige Plattform Glasgow Haskell CompilerBasisdatenEntwickler Simon Peyton Jones Simon MarlowErscheinungsjahr Dezember 1992 1 Aktuelle Version 9 4 4 2 3 24 Dezember 2022 Betriebssystem Plattformunabhangig UNIX Windows Programmiersprache HaskellKategorie CompilerLizenz BSD Freie Software http haskell org ghc GHC gilt heute als die Haskell Implementierung mit den meisten Features und der weitesten Verbreitung 2011 erhielt er den Programming Languages Software Award von ACM SIGPLAN Inhaltsverzeichnis 1 Geschichte 2 Funktionsweise 3 Sprache 4 Bedienung 4 1 GHCi 4 2 Kritik 5 EinzelnachweiseGeschichte BearbeitenHaskell wurde nach der Conference on Functional Programming Languages and Computer Architecture 1987 entworfen auf der deutlich geworden war dass die Entwicklung der funktionalen Programmierung durch die Aufsplitterung in viele verschiedene Sprachen viele davon Mitglied der ML Familie aufgehalten wurde Aus diesem Grund sollte eine neue umfassende Sprache entworfen werden und zwar Haskell Der Name wurde als Hommage an den Mathematiker Haskell B Curry gewahlt Kurz darauf begann Kevin Hammond an der Universitat von Glasgow daher auch der Name des Compilers die Entwicklung einer Implementierung in Lazy ML die praktisch ein Frontend fur eine existierende Lazy ML Implementierung darstellte Als diese Implementierung lauffahig war Juni 1989 stiess Simon Peyton Jones zu der Entwicklergruppe Der Prototyp besass zu diesem Zeitpunkt bereits alle in Haskell 1 0 beschriebenen Eigenschaften und war verhaltnismassig stabil Allerdings wurde die steigende Komplexitat der Implementierung zunehmend zum Problem da der Compiler gross und langsam wurde Daraufhin wurden einige Features wieder aus dem offiziellen Standard entfernt Im Herbst desselben Jahres begann dann die Arbeit an einer vollig neuen Implementierung allein der Parser geschrieben in C und mit der Hilfe von Yacc wurde ubernommen wieder unter Mitarbeit von S P Jones ausserdem Cordelia Hall und Will Partain Entwickelt wurde komplett in Haskell moglich wurde dies durch Bootstrapping indem der neue Compiler zunachst mit der alten Implementierung kompiliert wurde bis die neue Implementierung sich selbst kompilieren konnte self hosting 1992 erschien die erste komplette Version 0 10 5 Funktionsweise BearbeitenZunachst wird der Haskell Code in eine einzige Datenstruktur geparst um Typprufungen durchzufuhren Haskell ist eine sehr stark typisierte Sprache weshalb dieser Schritt wichtig ist Nach dieser ersten Phase wird das Programm in eine Zwischensprache namens Core umgeformt Die Core Sprache ursprunglich basierend auf dem Lambda Kalkul besitzt eine sehr uberschaubare Definition was es einfach macht Routinen zu schreiben die sie umformen zum Beispiel um das Programm zu optimieren Die Core Sprache ist eine der Starken des GHC da sie eine modulare Optimierungsarchitektur darstellt die gut angepasst werden kann 6 Aus der Core Form wird eine STG Darstellung Spineless Tagless G machine eine Erfindung von Jones erzeugt aus der dann zunachst C Code gewonnen wird um schliesslich in C inzwischen nicht mehr LLVM oder Maschinencode uberfuhrt zu werden Die resultierende Datei wird zumeist statisch gegen das GHC Laufzeitsystem gelinkt das in C und C geschrieben ist 5 Sprache BearbeitenDer GHC unterstutzt die beiden wichtigen Haskell Standards Haskell 98 und Haskell 2010 komplett Daruber hinaus implementiert er noch viele weitere Erweiterungen der Sprache und des Typsystems Bedienung BearbeitenGHC bietet ahnlich wie zum Beispiel C Compiler viele Sprach und Warnoptionen auf der Kommandozeile an Er zeichnet sich ausserdem durch die Fahigkeit aus ganze Programme mittels der Option make bauen zu konnen Dabei werden Modulabhangigkeiten automatisch beachtet und aufgelost ahnlich wie bei make GHCi Bearbeiten GHCi ist eine interaktive Haskell Umgebung und Teil von GHC Es liest einen Haskell Ausdruck wertet ihn aus und gibt schliesslich das Ergebnis aus Ausserdem ermoglicht GHCi das Kompilieren und Laden von Quelltext um ihn zu testen das Einbinden von Modulen und das Ausgeben von Informationen uber Funktionen Typklassen Datentypen und Module Nachfolgend eine Beispielsitzung mit Nachladen von Code Informationen uber Funktionen Instanzen und Typen etc GHCi version 7 6 3 http www haskell org ghc for help Loading package ghc prim linking done Loading package integer gmp linking done Loading package base linking done Prelude gt l 1 hs 1 of 1 Compiling Main 1 hs interpreted Ok modules loaded Main Main gt i toDiffString toDiffString a gt DiffString a Defined at 1 hs 7 1 Main gt i DiffString newtype DiffString x DiffString x gt x Defined at 1 hs 4 9 instance Show x gt Show DiffString x Defined at 1 hs 15 10 instance Monoid DiffString x Defined at 1 hs 18 10 Main gt fromDiffString toDiffString Hello World Loading package transformers 0 3 0 0 linking done Loading package mtl 2 1 2 linking done Hello World Main gt k DiffString DiffString gt Main gt Kritik Bearbeiten Haufig genannte und 2005 in einer Umfrage bestatigte Kritikpunkte am GHC sind unter anderem seine geringe Geschwindigkeit die oft schwierig zu entziffernden Fehlermeldungen die Grosse und mangelhafte Ausfuhrungsgeschwindigkeit des erzeugten Codes und die Grosse und Unubersichtlichkeit des Quellcodes von GHC 7 Einzelnachweise Bearbeiten Paul Hudak John Hughes Simon Peyton Jones Philip Wadler A History of Haskell Being Lazy With Class 16 April 2007 Version 9 4 4 released 24rd December 2022 24 Dezember 2022 abgerufen am 25 Februar 2023 Current Stable Releases 9 4 4 amp 9 2 6 24 Dezember 2022 abgerufen am 25 Februar 2023 ghc version a b Hudak Paul John Hughes Simon Peyton Jones und Philip Wadler A History of Haskell Being Lazy With Class 2007 Proceedings of the Third ACM SIGPLAN History of Programming Languages Conference HOPL III Simon Peyton Jones Compiling Haskell by program transformation a report from the trenches 1996 GHC Survey Memento vom 8 Juni 2013 im Internet Archive Abgerufen von https de wikipedia org w index php title Glasgow Haskell Compiler amp oldid 228322089