Clojure: Funktionale Programmierung für die JVM
Von André Steingress, Silvia Schreier und Tobias Bayer
()
Über dieses E-Book
Ähnlich wie Clojure
Titel in dieser Serie (100)
Skalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Bewertung: 0 von 5 Sternen0 BewertungenServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Bewertung: 0 von 5 Sternen0 BewertungenNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Bewertung: 0 von 5 Sternen0 BewertungenNFC: Near Field Communication für Android-Entwickler Bewertung: 5 von 5 Sternen5/5Einstieg in Google Go Bewertung: 0 von 5 Sternen0 BewertungenAlgorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenSharePoint-Entwicklung für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Bewertung: 0 von 5 Sternen0 BewertungenHTML5 für Mobile Web Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Bewertung: 0 von 5 Sternen0 BewertungenMobile Business: Was Entscheider morgen wissen müssen Bewertung: 0 von 5 Sternen0 BewertungenErfolgreiche Spieleentwicklung: OpenCL Bewertung: 0 von 5 Sternen0 BewertungenHTML5 Security Bewertung: 0 von 5 Sternen0 BewertungenPaaS - Die wichtigsten Java Clouds auf einen Blick: Die wichtigsten Java Clouds auf einen Blick Bewertung: 0 von 5 Sternen0 BewertungenZend Framework 2: Für Einsteiger und Umsteiger Bewertung: 0 von 5 Sternen0 BewertungenOAuth 2.0: Client & Server Bewertung: 0 von 5 Sternen0 BewertungenJava 7: Fork-Join-Framework und Phaser Bewertung: 0 von 5 Sternen0 BewertungenIT Wissensmanagement: Theorie und Praxis Bewertung: 0 von 5 Sternen0 BewertungenGeolocation mit PHP: Foursquare-API, Google Places & Qype Bewertung: 0 von 5 Sternen0 BewertungenUX Design für Tablet-Websites: Ein Überblick Bewertung: 0 von 5 Sternen0 BewertungenJava EE 7: Ein Ausblick Bewertung: 0 von 5 Sternen0 BewertungenÜberzeugende Präsentationen: Konzeption, Technik und Design Bewertung: 0 von 5 Sternen0 BewertungenAmazon Web Services für .NET Entwickler Bewertung: 0 von 5 Sternen0 BewertungenF#: Ein praktischer Einstieg Bewertung: 0 von 5 Sternen0 BewertungenMemory Leaks Tools Bewertung: 0 von 5 Sternen0 BewertungenQualitätssicherung mit JavaScript und PHP Bewertung: 0 von 5 Sternen0 BewertungenJava EE Security Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Bewertung: 0 von 5 Sternen0 BewertungenQualität in IT-Architekturen: Management Bewertung: 0 von 5 Sternen0 BewertungenTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnliche E-Books
C# 6.0 – kurz & gut Bewertung: 5 von 5 Sternen5/5C# 8.0 – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenJava 9 Streams Bewertung: 0 von 5 Sternen0 BewertungenC# 10 – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Java-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenDSL mit Xtext/Xtend. 4GL mit externem Quellcode Bewertung: 0 von 5 Sternen0 BewertungenJavaScript für Anfänger: Die Top 100 Essentials Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren mit PHP: Grundlagen der Programmierung von Web-Applikationen mit der Skript-Sprache PHP Bewertung: 0 von 5 Sternen0 BewertungenC++ – kurz & gut: Aktuell zu C++17 Bewertung: 4 von 5 Sternen4/5A++ Die kleinste Programmiersprache der Welt: Eine Programmiersprache zum Erlernen der Programmierung Bewertung: 0 von 5 Sternen0 BewertungenJavaScript und TypeScript für C#-Entwickler Bewertung: 0 von 5 Sternen0 BewertungenR – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenJavaScript auf dem Server Bewertung: 0 von 5 Sternen0 BewertungenJava – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Bewertung: 4 von 5 Sternen4/5Angular 2: Moderne Frontends für alle Plattformen entwickeln Bewertung: 0 von 5 Sternen0 BewertungenVon A++ nach ARS++: A++ mit einer Schnittstelle zu anderen Programmiersprachen Bewertung: 0 von 5 Sternen0 BewertungenSprachenkompendium: Vala, Go und Rust Bewertung: 0 von 5 Sternen0 BewertungenOpenLaszlo: schnell + kompakt Bewertung: 0 von 5 Sternen0 BewertungenRoutineaufgaben mit Python automatisieren: Praktische Programmierlösungen für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenMQL: Eine hierarchische Abfragesprache mit TypeScript erstellen Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in Google Go Bewertung: 0 von 5 Sternen0 BewertungenPHP for Office: Automatisierte Dokumentenerstellung mit PHPExcel, PHPWord und PHPPowerPoint Bewertung: 1 von 5 Sternen1/5Programmieren lernen mit A++: Funktional programmieren in Python und Java Bewertung: 0 von 5 Sternen0 BewertungenOracle PL/SQL kurz & gut Bewertung: 4 von 5 Sternen4/5Funktionale Programmierung in Java: Eine umfassende Einführung Bewertung: 0 von 5 Sternen0 BewertungenAngular: Das Praxisbuch zu Grundlagen und Best Practices Bewertung: 0 von 5 Sternen0 BewertungenJavaScript kurz & gut Bewertung: 3 von 5 Sternen3/5Programmieren in TypeScript: Skalierbare JavaScript-Applikationen entwickeln Bewertung: 0 von 5 Sternen0 BewertungenDynamic Proxies: Effizient programmieren Bewertung: 0 von 5 Sternen0 Bewertungen
Informationstechnologie für Sie
Agiles Requirements Engineering und Testen Bewertung: 0 von 5 Sternen0 BewertungenZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Bewertung: 0 von 5 Sternen0 BewertungenAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Bewertung: 0 von 5 Sternen0 BewertungenBusiness-Intelligence-Lösungen für Unternehmen Bewertung: 0 von 5 Sternen0 BewertungenKompaktes Managementwissen: Die Grunstruktur agiler Prozesse Bewertung: 0 von 5 Sternen0 BewertungenBlockchain: Praktische Anwendungen, Praktisches Verständnis Bewertung: 0 von 5 Sternen0 BewertungenKnigge für Softwarearchitekten. Reloaded Bewertung: 0 von 5 Sternen0 BewertungenEinplatinencomputer - ein Überblick Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Clojure
0 Bewertungen0 Rezensionen
Buchvorschau
Clojure - André Steingress
André Steingress, Silvia Schreier, Tobias Bayer
Clojure
Funktionale Programmierung für die JVM
ISBN: 978-3-86802-512-5
© 2014 entwickler.press
Ein Imprint der Software & Support Media GmbH
1 Clojure – Status quo und Ausblick
Spätestens nach der Einführung des x-ten Sprachfeatures der Haus-und-Hof-Programmiersprache stellt sich die Programmiererin folgende Frage: Gibt es denn keine Sprache, die mit der mindestmöglichen Anzahl von Sprachmerkmalen ihr Auskommen findet, auf diesen aufbaut, anstatt nach und nach Konzepte in die Sprache einzuführen und in vorhandene Schnittstellen zu integrieren? Eine der möglichen Antworten wurde bereits vor etwa fünfzig Jahren am Massachusetts Institute of Technology (MIT) gefunden. John McCarthy ist der gedankliche Vater von Lisp. Mit seinen Ausführungen über das so genannte „Lambda-Kalkül legte er die mathematische Basis für eine der beiden bis dato am längsten in der Praxis existierenden Programmiersprachen. Es gibt kein „reines
Lisp. Vielmehr gibt es unterschiedliche Varianten, die Lisp-Dialekte. Die bekanntesten sind Common Lisp und Scheme. Im Gegensatz zum Aufbau europäischer Informatikstudien hat Lisp im amerikanischen Universitätsumfeld einen fixen Platz in der Ausbildung neben Java, C, C++ und den anderen üblichen Verdächtigen.
Clojure ist ein seit 2007 bestehender Lisp-Dialekt. Der Begriff „Clojure soll auf Closures, Java und Lisp anspielen. „Clojure
dient nicht nur als reiner Bezeichner für die Programmiersprache, sondern umfasst auch die aus mehreren Komponenten bestehende Laufzeitumgebung. Wichtiger Bestandteil ist dabei die REPL (engl. Read-Eval-Print Loop), ein einfaches konsolenähnliches Interface, das die schnelle Ausführung von Clojure-Code erlaubt. Die Laufzeitumgebung setzt dabei auf der JVM auf, generiert also an bestimmten Stellen JVM-kompatiblen Bytecode und kann somit in bestehenden Java-Umgebungen ausgeführt werden.
Clojure 1.6.0 setzt auf JDK 6 auf (1.5.x war mit JDK 5 kompatibel). Clojure-Programme müssen daher mindestens mit dem JRE 6 ausgeführt werden.
LIStProcessing
Lisp steht für LIStProcessing, also Listenverarbeitung. Die Liste hat dabei neben der Verwendung als Datenstruktur in herkömmlichen Java-Programmen (man denke an die java.util.ArrayList) eine besondere Stellung. Listen werden verwendet, um den eigentlichen Code zu formulieren. Wenn man so will, besteht jedes Programm aus einer Menge von Codelisten. Eine Liste repräsentiert zur Laufzeit einen Funktionsaufruf. Damit sind nicht nur Aufrufe im herkömmlichen Sinne gemeint. Clojure ist komplett funktional und verwendet Funktionen beispielsweise auch, um Variablen zu definieren (eine spezielle Form von Funktionen mit Seiteneffekten).
Um dieses Konzept zu verdeutlichen, sehen wir uns folgendes Beispiel an. Dieses Programm führt eine einfache Addition zweier Zahlen durch:
(+ 41 1)
Die runden Klammern umschließen die Elemente der Liste. Das + an erster Stelle ist ein so genanntes Symbol, 41 und 1 sind Zahlen. Symbole und Zahlen werden auch als Skalare (engl. scalars) bezeichnet. Clojure bietet eine Menge an Datentypen und dazugehörige Skalare beziehungsweise Literale (engl. literals): Integers, Floats, rationale Zahlen, Strings, Booleans, reguläre Ausdrücke, Collections etc. Die obige Codezeile stellt einen Funktionsaufruf dar. Zur Laufzeit wird dabei das erste Element der Liste (das Symbol) in einen Funktionsaufruf aufgelöst und die restlichen Elemente der Liste werden als Argumente dieser Funktion mitgegeben. Die Reihenfolge