Programmierparadigmen in Erlang

Ausgewählte Kapitel des Software Engineering


Seminararbeit, 2008

35 Seiten, Note: 1


Leseprobe


Inhaltsverzeichnis

Abbildungsverzeichnis

Listingverzeichnis

1 Kurzfassung

2 Begriffsdefinitionen

3 Einleitung

4 Syntax
4.1 Ausdrücke
4.2 Variablen
4.3 Atome
4.4 Tupel
4.5 Listen
4.6 Module und Funktionen
4.7 Error Handling

5 verfügbare Programmierumgebungen
5.1 Standard-Programmierumgebung
5.2 Erlide

6 Unterschiede zu weitverbreiteten Sprachen

7 Paradigmen in Erlang
7.1 Ausgewählte Programmierparadigmen
7.2 Realisierung von Paradigmen in Erlang
7.3 In Erlang nicht realisierte Paradigmen

8 Allgemeiner Nutzen von Erlang

9 Literaturverzeichnis

Abbildungsverzeichnis

Abbildung 1: Klassifizierung von Programmiersprachen [Grabmüller 2003, S. 12]

Listingverzeichnis

Listing 1: Eine einfache Berechnung in Erlang

Listing 2: Zuweisung von Variablen mittels Pattern Matching

Listing 3: Anlegen eines Tupels, welcher mehrere Tupel enthält

Listing 4: Einsatz des Pattern Matching Operators zum Extrahieren von Werten

Listing 5: Einige Beispiele mit Listen

Listing 6: Definition einer Liste mit verschiedenen Figuren

Listing 7: Modul geometrie.erl

Listing 8: Kompilieren des Moduls geometrie und Test der Funktion flaeche()

Listing 9: Erweiterung des Moduls geometrie durch die Funktion totaleFlaeche()

Listing 10: Anwendung der Funktion totaleFlaeche()

Listing 11: Verwendung von case-Konstrukten in flaeche()

Listing 12: flaeche() mit Exceptions

Listing 13: Aufruf der neuen Funktion flaeche()

Listing 14: Funktion flaecheMitTryUndCatch()

Listing 15: Aufruf der Funktion flaecheMitTryUndCatch()

Listing 16: Pattern Matching in Funktionen [Armstrong 2007, S. 45]

Listing 17: Rekursive for-Schleife in Erlang [Armstrong 2007, S. 47]

Listing 18: Key-Value-Server, [Armstrong 2007, S. 170ff]

Listing 19: lokaler Testlauf des Servers

Listing 20: Start Node 1

Listing 21: Start Node 2

Listing 22: Nodes auf verschiedenen Maschinen

Listing 23: Testlauf KVS auf verteilten Rechnern

1 Kurzfassung

"Erlang ist eine nebenläufige und verteilte funktionale Sprache." [Sahlin 1996]

Die native Unterstützung dieser drei Paradigmen durch einfache und leicht erlern- sowie anwendbare Sprachstrukturen machen die Programmiersprache Erlang zu einem äußerst mächtigen Werkzeug wenn es darum geht, verteilte Anwendungen, die durch viele leichtgewichtige Prozesse abbildbar sind, unkompliziert und sicher zu realisieren.

Die Eigenschaft der Zustandsfreiheit, der prinzipielle Verzicht auf geteilten Speicher und die Behandlung von Fehlern, die mittels Verbinden von Prozessen behandelt werden können, stellen Funktionen zur Verfügung, welche die geforderte Sicherheit verteilter Softwaresysteme auf relativ einfache Weise garantieren können.

Besonders im Hinblick darauf, dass Leistungszuwächse von Rechnern neuer Generationen nicht auf schnellere einzelne Prozessoren sondern auf die Verteilung der Rechenlast auf mehrere Prozessoren zurückzuführen sein wird, kann davon ausgegangen werden, dass dieser Programmiersprache in naher Zukunft noch bedeutende Relevanz zukommen wird.

2 Begriffsdefinitionen

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 1: Begriffsdefinitionen

3 Einleitung

Die folgende Arbeit behandelt die Programmiersprache Erlang mit speziellem Augenmerk auf die Umsetzung der Paradigmen funktionaler, verteilter und nebenläufiger Programmierung in dieser Sprache.

Zu diesem Zweck wird in den einleitenden Kapiteln 4-6 die Sprache, ihre Syntax sowie Parallelen und Unterschiede zu bekannten Programmiersprachen vorgestellt.

In weiterer Folge werden in Kapitel 7 die für diese Sprache wesentlichen Paradigmen theoretisch behandelt. Abschließend werden die theoretischen Kriterien dieser Paradigmen mit der konkreten Umsetzung in Erlang verglichen.

Zum Abschluss der Arbeit wird der allgemeine Nutzen von Erlang im Hinblick auf die Anwendungsmöglichkeiten behandelt.

4 Syntax

Die Syntax eines Erlang-Programms unterscheidet sich in einigen Teilen sehr wesentlich von der Syntax konventioneller Sprachen wie C++ oder Java. Im folgenden Kapitel sollen auf die Grundstrukturen der Erlang-Syntax eingegangen und wichtige Sprachkonstrukte dargestellt werden.

4.1 Ausdrücke

Ein Erlang-Programm ist primär aus verschiedenen Ausdrücken aufgebaut. Ein Ausdruck in Erlang hat immer einen bestimmten Wert und wird mit einem "." als Trennzeichen beendet. Kommentare werden in Erlang dagegen mit einem "%"- Zeichen eingeleitet. Der folgende Erlang-Code soll dies verdeutlichen [vgl. Armstrong 2007, S. 14]:

Abbildung in dieser Leseprobe nicht enthalten

Listing 1: Eine einfache Berechnung in Erlang

Zahlen können in Erlang entweder ganzzahlig (Integer) oder als Gleitkommazahl (Float) benützt werden. Für die Integer-Arithmetik benützt Erlang intern beliebig lange Integer. Dadurch wird das Problem eines Integer-Überlaufs ausgeschlossen.

4.2 Variablen

Variablennamen beginnen in Erlang stets mit einem Großbuchstaben und darauf folgend optional beliebig viele alphanumerischen Zeichen inklusive "_" und "@".

Beispiele für gültige Variablennamen wären somit: Variable1,

Meine_Zweite_Variable und Email@server_com.

Der erste wichtige Unterschied einer funktionalen Programmiersprache wie Erlang gegenüber konventionellen Programmiersprachen wie Java oder C++ wird bei den Variablen sichtbar. In Erlang können Variablen nur einmal mit einem Wert belegt werden. Ist der Wert einer Variable einmal festgelegt, kann er nicht mehr geändert werden. Dies hat den großen Vorteil, dass es keine Seiteneffekte durch veränderbare Variablen gibt, und sich Erlang Programme sehr einfach, parallel und über mehrere Systeme verteilt, ausführen lassen.

Eine Variable kann sich in den Zuständen ungebunden (noch kein Wert zugewiesen) und gebunden (bereits ein Wert zugewiesen) befinden. Alle Variablen sind anfangs in einem ungebundenem Zustand. Mittels Pattern Matching Operator "=" kann einer Variable ein Wert zugewiesen werden.

[Armstrong 2007, S. 18]. erklärt den Pattern Matching Operator im Zusammenhang mit der Zuweisung von Variablen folgendermaßen:

"Lhs = Rhs really means this: evaluate the right side (Rhs), and then match the result against the pattern on the let side (Lhs).

Now a variable, such as X, is a simple form of pattern. As we said earlier, variables can be given a value only once. The first time we say X = SomeExpression, Erlang says to itself, "What can I do to make this statement true?" Because X doesn't yet have a value, it can bind X to the value of SomeExpression, the statement becomes valid, and everyone is happy."

Der folgende Code soll dies weiter veranschaulichen [Vgl. Armstrong 2007, S. 19]:

Abbildung in dieser Leseprobe nicht enthalten

Listing 2: Zuweisung von Variablen mittels Pattern Matching

Besondere Bedeutung kommt den sogenannten anonymen Variablen zu, die mit "_" beginnen. Sie werden beim Pattern Matching als Wildcard verwendet.

4.3 Atome

Atome werden in Erlang benützt um verschiedenste konstante nicht-numerische Werte zu repräsentieren. Am ehesten lassen sich Atome mit Konstanten in C++ oder Java vergleichen. Der Wert eines Atoms ist das Atom selbst, d.h. das Atom "mai" trägt auch den Wert "mai".

Atome beginnen im Gegensatz zu Variablen mit einem Kleinbuchstaben und können, ähnlich wie Variablen, darauf folgend beliebig viele alphanumerische Zeichen inkl. "_" und "@" enthalten. Einige Beispiele für gültige Atome sind: atom1, blau, mai, true, false.

Den letzten zwei Atoms kommt eine besondere Bedeutung zu, denn Erlang kennt an sich keine booelschen Datentypen. Dieses Manko wird dadurch behoben, das stattdessen die Atoms true bzw. false benützt werden. Dies ist allerdings nur eine Konvention und sollte unbedingt von selbst geschriebenen Funktionen eingehalten werden.

4.4 Tupel

Tupel können am ehesten mit strukturierten Datentypen aus C verglichen werden. Sie werden immer dann benützt, wenn verschiedene Daten in einer einzelnen Entität zusammengefasst werden sollen. Tupel können ihrerseits auch wieder Tupel enthalten, wie der nachfolgende Code verdeutlichen soll [Vgl. Armstrong 2007, S. 24]:

Abbildung in dieser Leseprobe nicht enthalten

Listing 3: Anlegen eines Tupels, welcher mehrere Tupel enthält

Die Werte eines Tupels werden also zwischen zwei geschweiften Klammern, und mit Beistrichen getrennt, angegeben. Das obige Tupel {person, ...} besteht selbst aus mehreren Tupel wie zB {footsize, 42}. Hierbei stellt das Atom footsize den ersten Wert des Tupels dar und 42 als Integer-Wert den zweiten Wert. Die Atome im obigen Code, werden verwendet, um die Lesbarkeit zu erhöhen, sie könnten aber auch weggelassen werden.

Um Werte aus einem Tupel wieder zu extrahieren, kann der Pattern Matching Operator verwendet werden, wie im Folgenden dargestellt wird:

Abbildung in dieser Leseprobe nicht enthalten

Listing 4: Einsatz des Pattern Matching Operators zum Extrahieren von Werten

Wie schon in einem vorhergehenden Kapitel erwähnt wird hier "_" als anonyme Variable verwendet, die wie ein Wildcard Operator funktioniert. Gleichzeitig werden die Atome person und footsize verwendet, welche auch mit den Atomen person und footsize in der Variable Person matchen. Der Variable X wird der Wert 42 aus dem Tupel {footsize, 42} zugewiesen.

4.5 Listen

Listen werden in Erlang benützt um eine variable Anzahl von Elementen zu speichern. Erlang speichert beispielsweise Strings als eine Liste von Integer-Werten die den ASCII-Codes der einzelnen Zeichencharakter entsprechen.

Eine Liste besteht in Erlang immer aus einem Head und einem Tail. Das erste Element wird als Head bezeichnet, während die übrige Liste den Tail darstellt. Listen werden dadurch erzeugt, dass die Listenelemente durch Beistriche getrennt in eckigen Klammern angegeben werden. Bei einer gegebenen Liste [1,2,3,4,5] wäre zB der Head der Integer 1 und der Tail die Liste [2,3,4,5]. Die kleinste Liste, ist die leere Liste []. Zur Erzeugung einer Liste kann auch der [ ... | Tail ] Konstruktor verwendet werden, wie im nachfolgenden Beispiel unter anderem dargestellt wird:

Abbildung in dieser Leseprobe nicht enthalten

[...]

Ende der Leseprobe aus 35 Seiten

Details

Titel
Programmierparadigmen in Erlang
Untertitel
Ausgewählte Kapitel des Software Engineering
Hochschule
Johannes Kepler Universität Linz  (Seminar Software Engineering)
Note
1
Autoren
Jahr
2008
Seiten
35
Katalognummer
V141456
ISBN (eBook)
9783640513666
ISBN (Buch)
9783640512102
Dateigröße
587 KB
Sprache
Deutsch
Anmerkungen
Schlagworte
Erlang, parallele Programmierung, verteilte Programmierung, verteilte Systeme, Nebenläufigkeit, funktionale Programmierung
Arbeit zitieren
Christoph Pernsteiner (Autor:in)Holger Kreisel (Autor:in), 2008, Programmierparadigmen in Erlang, München, GRIN Verlag, https://www.grin.com/document/141456

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Programmierparadigmen in Erlang



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