Haskell im anschließenden Vergleich mit Java


Facharbeit (Schule), 2011

15 Seiten


Leseprobe


Inhaltsverzeichnis

Einleitung

Teil 1: Programmiersprachen
1. Haskell
1.1. Allgemeines
1.2. Programmieren in Haskell
1.2.1 Datentypen
1.2.2 Typ - Synonyme
1.2.3 Grundlagen der Funktion
1.2.4 Typklassen
1.2.5 Liste
1.2.6 Bytestring
1.2.7 Tupel
1.2.8 If - else, Guards und lokale Funktionen
1.2.9 Funktionen höherer Ordnung
1.2.10 Curry
1.2.11 Pattern Matching
1.2.12 Rekursion
1.2.12 Module
1.2.13 Ein- und Ausgabe
1.2.14 Exceptions

2. Allgemeines über Java

Teil 2: Vergleich 13 +

Schluss

Literaturverzeichnis

Einleitung

Auf den folgenden Seiten werde ich auf die wesentlichen Bestandteile der Programmiersprache Haskell eingehen und diese kurz an Beispielen verdeutlichen. Dabei werde ich gegebenenfalls auf Ähnlichkeiten mit der Sprache Java eingehen und beide Sprachen nochmals gezielt am Ende gegenüberstellen.

Teil 1: Programmiersprachen

1. Haskell

1.1 Allgemeines

Haskell ist eine nach dem Mathematiker und Logiker "Haskell Brooks Curry" benannte rein funktionale Programmiersprache von 1990. Wie die meisten funktionalen Programmiersprachen basiert Haskell auf dem Lambda-Kalkül, weshalb das Lambda-Zeichen auch als Logo festgelegt wurde.7 Anfangs sollte Miranda als Grundlage dienen, jedoch waren die Entwickler nicht gewillt, den Quellcode freizugeben4. Ein Haskell-Programm ist im Gegensatz zu imperativen Programmiersprachen eine einzige Kette von Ausdrücken, die nach der Auswertung einen Ergebniswert liefert. Es besteht also ausschließlich aus Funktionen. Nach dem Lambda-Kalkül können jegliche Ausdrücke durch „Reduktionen“ bis zu den elementaren Ausdrücken hin vereinfacht werden4. Ausdrücke sind jegliche Stücke von Code, die einen Wert zurückgeben. Außerdem ist Haskell stark statisch typisiert, was bedeutet, dass jedem Ausdruck genau ein Typ zugewiesen wird, welcher bereits beim Kompilieren bekannt ist. Dadurch werden mögliche Fehler übergangen. Dies kann auch durch „type interference“ - Haskell kann also selbst auf einen Typ schließen, sodass man diesen nicht selbst bestimmen muss. Da bei der Eingabe von gleichen Argumenten die Rückgabe immer gleich ist, hängt der Ergebniswert ausschließlich von den Parametern ab. Es gibt also keine Zustandsvariablen. Haskell hat unter anderem Python und Scala beeinflusst.

1.2 Programmieren in Haskell

1.2.1 Datentypen

Die Datentypen für natürliche Zahlen sind in Haskell Int (begrenzte Größe) und Integer (unbegrenzte Größe). Für Kommazahlen sind diese Float und Double (größer). Genau wie in Java gibt es Bool mit den Wahrheitswerten True und False und Char und String zur Darstellung von Buchstaben und Wörtern.

Um eigene Datentypen zu definieren, verwendet man den Befehl data:

data <Datentyp> = <Wertkonstruktor1> | <Wertkonstruktor2> | ...

Wertekonstruktoren sind Funktionen, weshalb diese auch Parameter bekommen können: data Form = Kreis Float | Rechteck Float Float | Quadrat Float Man sollte sie nicht mit den Konstruktoren in der Programmiersprache Java vergleichen, in der sie dazu da sind, ein Objekt zu initialisieren; man definiert unterschiedliche Strukturen des gleichen Datentyps. Ein häufig verwendeter Datentyp ist Maybe a, vordefiniert als: data Maybe a = Nothing | Just a Er wird verwendet, wenn der Rückgabewert garnichts, also Nothing sein kann. Ansonsten ist er Just <Datentyp>.

Will man klarer machen, welcher Typ wofür steht oder will man auf die einzelnen Elemente zugreifen, ist der „record syntax“ sehr hilfreich:

data Lehrer = Lehrer {vorname :: String,

nachname :: String,

fach :: String} deriving (Show, Read)

Durch deriving (Show, Read) ist der Typ Lehrer eine Instanz der Typklasse Show und Read. Da Lehrer jetzt ein Teil dieser Klassen ist, kann er durch show als String dargestellt und durch read von seiner Stringdarstellung wieder in einen Datentypen umgewandelt werden.

meinLehrer = Lehrer {vorname = "unbekannt", nachname = "Ortmann", fach = "Informatik"}

1.2.2 Typ - Synonyme

Durch Typ-synonyme ist String als Liste von Char definiert (type String = [Char]).

Man erzeugt damit keine neuen Typ, sondern lediglich ein Synonym für existierende Typen, um somit den Code lesbarer zu machen. Würde man viel mit Vektoren oder Paaren(2-Tupeln) arbeiten, könnte man diese so definieren:

Abbildung in dieser Leseprobe nicht enthalten

1.2.3 Grundlagen der Funktion

Funktionen werde durch Gleichungen definiert und Parameter durch Leerzeichen voneinander getrennt: addieren [Abbildung in dieser Leseprobe nicht enthalten]

Es ist egal, in welcher Reihenfolge Funktionen definiert werden. Da Haskell rein funktional ist, sind auch Operatoren wie (+) solche.

Die Syntax einer Funktionssignatur ist wie folgt:

Abbildung in dieser Leseprobe nicht enthalten

a = Typen-variable der Typklasse Num. Funktionen mit Typen-variablen werden polymorphe Funktionen genannt, solche ohne diese monomorph. Durch die Typklasse Num wird a auf Zahlen eingeschränkt. Ohne Typ-variablen könnte man es auch so schreiben: „addieren :: Int -> Int-> Int“. Dann könnte man die Funktion allerdings nur mit Zahlen des Typs Int aufrufen.

Zweistellige Funktionen können nicht nur in Präfixnotation, sondern auch in Infixnotation geschrieben werden. Bspw. kann addieren 2 3 auch als 2 'addieren'

3 geschrieben werden. In Haskell bindet Funktionsanwendung am stärksten: (head [3,4]) + (max 3 42) == head [3, 4] + max 3 42

„+“ hat einen niedrigeren Präzedenzwert als head und max (Werte werden von 1 bis 9 vergeben).

[...]

Ende der Leseprobe aus 15 Seiten

Details

Titel
Haskell im anschließenden Vergleich mit Java
Autor
Jahr
2011
Seiten
15
Katalognummer
V173817
ISBN (eBook)
9783640949113
ISBN (Buch)
9783640948987
Dateigröße
468 KB
Sprache
Deutsch
Schlagworte
haskell, vergleich, java
Arbeit zitieren
Malte Weiss (Autor:in), 2011, Haskell im anschließenden Vergleich mit Java, München, GRIN Verlag, https://www.grin.com/document/173817

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Haskell im anschließenden Vergleich mit Java



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden