Grin logo
en de es fr
Shop
GRIN Website
Texte veröffentlichen, Rundum-Service genießen
Zur Shop-Startseite › Informatik - Programmierung

Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure

Titel: Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure

Masterarbeit , 2013 , 98 Seiten , Note: 1,0

Autor:in: Lutz Leonhardt (Autor:in)

Informatik - Programmierung
Leseprobe & Details   Blick ins Buch
Zusammenfassung Leseprobe Details

Diese Masterarbeit wird sich mit dem jungen und modernen Lisp-Dialekt Clojure und seinen Sprachfeatures beschäftigen. Clojure läuft innerhalb der Java Virtuel Machine (JVM) und kann somit nahtlos in objektorientierte Java-Programme integriert werden, um beispielsweise nebenläufige Algorithmen umzusetzen. Daneben existieren alternativ auch eine CLR- sowie JavaScript-Implementierung.

Im Rahmen dieser Arbeit wird neben den Concurrency-Features auch die Technologie Software Transactional Memory (STM) vorgestellt, mit dessen Hilfe sich die ACID-Eigenschaften auf den zu manipulierenden transienten Speicher abbilden lassen. Eine Transaktion bündelt Befehle, die auf gemeinsame Ressourcen zugreifen. Falls zwei Transaktionen auf die gleiche Ressource zugreifen möchten, wird eine der beiden Transaktionen abgebrochen. Die Sprache bietet hierfür die benötigten
Konstrukte. Ein wichtiges Pattern innerhalb der Objektorientierten Programmierung ist die Trennung der Programmierschnittstelle von der Implementierung, realisiert durch Sprachelemente wie Interfaces und Klassen sowie Vererbung und Polymorphie. Clojure kann als funktionale Sprache diesen traditionellen Lösungsansatz nicht verwenden und führt Alternativen ein. Die Sprachelemente Protocols, Multimethods und Datatypes werden hierzu näher beschrieben.

Neben den Clojure-spezifischen Sprachfeatures werden weitere grundlegende Prinzipien und Entwurfsmuster der Funktionalen Programmierung wie z.B. Macros, Lambdas, Currying, Memoization, Closures und Monaden vorgestellt. Um Clojure von anderen funktionalen Sprachen abgrenzen zu können, werden abschließend Alternativen vorgestellt und ein Vergleich bezüglich Funktionsumfang und Performance mit Haskell durchgeführt.

Leseprobe


Inhaltsverzeichnis

  • 1 Einleitung
    • 1.1 Motivation
    • 1.2 Zielstellung
  • 2 Grundlagen der Funktionalen Programmierung
    • 2.1 Eigenschaften Funktionaler Programmierung
      • 2.1.1 Werte und veränderliche Objekte
      • 2.1.2 First-Class, High-Order und Reine Funktionen
      • 2.1.3 Collections und Datentypen
    • 2.2 Programmierparadigmen
      • 2.2.1 Imperative und Prozedurale Programmierung
      • 2.2.2 Objektorientierte Programmierung
      • 2.2.3 Deklarative Programmierung
      • 2.2.4 Weitere Programmierparadigmen
    • 2.3 Funktionale Idiome
      • 2.3.1 Lambda und Anonyme Funktionen
      • 2.3.2 Closures
      • 2.3.3 Currying
      • 2.3.4 Memoization
    • 2.4 Zusammenfassung
  • 3 Clojure-spezifische Sprachmerkmale
    • 3.1 Makros
      • 3.1.1 Makros in anderen Sprachen
      • 3.1.2 Makros in Clojure
      • 3.1.3 Quote und Syntax-Quote
      • 3.1.4 Hygiene
    • 3.2 Datentypen und Protokolle
      • 3.2.1 Definition von Protokollen
      • 3.2.2 Erweitern von Datentypen
      • 3.2.3 Benutzerdefinierte Typen
        • 3.2.3.1 defrecord
        • 3.2.3.2 deftype
        • 3.2.3.3 Inline Implementierung von Protokollen
    • 3.3 Multimethoden
      • 3.3.1 Mutlimethoden Type-Dispatch
      • 3.3.2 Hierarchien
    • 3.4 Ausnahmebehandlung
    • 3.5 Clean Code und Entwurfsmuster
      • 3.5.1 Dependency Injection
      • 3.5.2 Strategy Pattern
    • 3.6 Zusammenfassung
  • 4 Sprachfeatures zur nebenläufigen Programmierung
    • 4.1 Grundlagen paralleler Programmierung
      • 4.1.1 Multitasking und Multithreading
      • 4.1.2 Schwierigkeiten der parallelen Programmierung
      • 4.1.3 Klassische Lösung der Threading-Probleme
    • 4.2 Zustand und Identität
    • 4.3 Referenztypen
      • 4.3.1 Referenztyp var
      • 4.3.2 Referenztyp atom
      • 4.3.3 Referenztyp ref und Software Transactional Memory
      • 4.3.4 Referenztyp agent
    • 4.4 Change Tracking und Validierung von Referenztypen
    • 4.5 Futures
    • 4.6 Zusammenfassung
  • 5 Erweiterter Einsatz von Clojure
    • 5.1 Monaden
      • 5.1.1 Definition einer Monade
      • 5.1.2 Gesetze der monadischen Operationen
      • 5.1.3 Verwendung und Einsatz
      • 5.1.4 Weitere Monadentypen
        • 5.1.4.1 Zustands-Monade
        • 5.1.4.2 Maybe-Monade
    • 5.2 core.logic
      • 5.2.1 Grundlagen von core.logic
        • 5.2.1.1 Einführung in die Logische Programmierung
        • 5.2.1.2 Inferenzumgebung run
        • 5.2.1.3 Relationen vs. Funktionen
        • 5.2.1.4 Fakten und Regeln
        • 5.2.1.5 Logische Variablen
        • 5.2.1.5 conde und Pattern Matching
      • 5.2.2 Anwendung
        • 5.2.2.1 Anwendungsfälle
        • 5.2.2.2 Praktisches Beispiel
        • 5.2.2.3 Logisches Puzzle
      • 5.3 Zusammenfassung
  • 6 Alternative Funktionale Sprachen
    • 6.1 Vorstellung alternativer Sprachen
      • 6.1.1 Objective Caml
        • 6.1.1.1 Das Typsystem
        • 6.1.1.2 Funktionen
        • 6.1.1.3 Pattern Matching
        • 6.1.1.4 Rekursion
        • 6.1.1.5 Weiteres
      • 6.1.2 F#
        • 6.1.2.1 F# vs. OCaml
        • 6.1.2.2 Weiteres
      • 6.1.3 Erlang
        • 6.1.3.1 Multithreading-Support
        • 6.1.3.2 Das Typsystem
        • 6.1.3.3 Pattern Matching
        • 6.1.3.4 Funktionen
        • 6.1.3.5 Weiteres
    • 6.2 Clojure im Vergleich mit Haskell
      • 6.2.1 Funktionsumfang
      • 6.2.2 Sprachfeatures
      • 6.2.3 Performance
    • 6.3 Zusammenfassung

Zielsetzung und Themenschwerpunkte

Diese Masterarbeit befasst sich mit der funktionalen Programmiersprache Clojure und analysiert die Anwendung und Bewertung moderner Sprachfeatures in diesem Kontext.

  • Die Arbeit untersucht die Grundlagen der funktionalen Programmierung und ihre Eigenschaften.
  • Sie analysiert spezifische Sprachmerkmale von Clojure, einschließlich Makros, Datentypen und Protokollen, Multimethoden, Ausnahmebehandlung und Entwurfsmuster.
  • Die Arbeit befasst sich mit Sprachfeatures, die für die nebenläufige Programmierung in Clojure relevant sind, wie z. B. Referenztypen, Futures und Zustandstracking.
  • Sie untersucht den erweiterten Einsatz von Clojure, insbesondere Monaden und die Bibliothek core.logic.
  • Die Arbeit stellt alternative funktionale Sprachen vor, wie z. B. Objective Caml, F# und Erlang, und vergleicht sie mit Clojure.

Zusammenfassung der Kapitel

  • Kapitel 1 bietet eine Einleitung in das Thema der Arbeit, indem es die Motivation und die Zielstellung der Arbeit darlegt.
  • Kapitel 2 behandelt die Grundlagen der Funktionalen Programmierung, einschließlich ihrer Eigenschaften, Programmierparadigmen und funktionaler Idiome.
  • Kapitel 3 analysiert Clojure-spezifische Sprachmerkmale, darunter Makros, Datentypen und Protokolle, Multimethoden, Ausnahmebehandlung und Entwurfsmuster.
  • Kapitel 4 befasst sich mit Sprachfeatures zur nebenläufigen Programmierung in Clojure, einschließlich Referenztypen, Futures und Zustandstracking.
  • Kapitel 5 untersucht den erweiterten Einsatz von Clojure, insbesondere Monaden und die Bibliothek core.logic.
  • Kapitel 6 stellt alternative funktionale Sprachen vor und vergleicht sie mit Clojure.

Schlüsselwörter

Funktionale Programmierung, Clojure, Sprachfeatures, Makros, Datentypen, Protokolle, Multimethoden, Ausnahmebehandlung, Nebenläufige Programmierung, Referenztypen, Futures, Monaden, core.logic, alternative funktionale Sprachen, Objective Caml, F#, Erlang, Haskell.

Ende der Leseprobe aus 98 Seiten  - nach oben

Details

Titel
Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure
Hochschule
Beuth Hochschule für Technik Berlin
Note
1,0
Autor
Lutz Leonhardt (Autor:in)
Erscheinungsjahr
2013
Seiten
98
Katalognummer
V381390
ISBN (eBook)
9783668578692
Sprache
Deutsch
Schlagworte
Clojure Concurrency Core.Logic Software Transactional Memory
Produktsicherheit
GRIN Publishing GmbH
Arbeit zitieren
Lutz Leonhardt (Autor:in), 2013, Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure, München, GRIN Verlag, https://www.grin.com/document/381390
Blick ins Buch
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
  • Wenn Sie diese Meldung sehen, konnt das Bild nicht geladen und dargestellt werden.
Leseprobe aus  98  Seiten
Grin logo
  • Grin.com
  • Zahlung & Versand
  • Impressum
  • Datenschutz
  • AGB
  • Impressum