Grin logo
en de es fr
Shop
GRIN Website
Publish your texts - enjoy our full service for authors
Go to shop › Computer Science - Programming

Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure

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

Master's Thesis , 2013 , 98 Pages , Grade: 1,0

Autor:in: Lutz Leonhardt (Author)

Computer Science - Programming
Excerpt & Details   Look inside the ebook
Summary Excerpt 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.

Excerpt


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.

Excerpt out of 98 pages  - scroll top

Details

Title
Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure
College
University of Applied Sciences - Beuth
Grade
1,0
Author
Lutz Leonhardt (Author)
Publication Year
2013
Pages
98
Catalog Number
V381390
ISBN (eBook)
9783668578692
Language
German
Tags
Clojure Concurrency Core.Logic Software Transactional Memory
Product Safety
GRIN Publishing GmbH
Quote paper
Lutz Leonhardt (Author), 2013, Modernes Clojure. Einsatz und Bewertung moderner Sprachfeatures in Clojure, Munich, GRIN Verlag, https://www.grin.com/document/381390
Look inside the ebook
  • Depending on your browser, you might see this message in place of the failed image.
  • https://cdn.openpublishing.com/images/brand/1/preview_popup_advertising.jpg
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
Excerpt from  98  pages
Grin logo
  • Grin.com
  • Payment & Shipping
  • Contact
  • Privacy
  • Terms
  • Imprint