FreieSoftwareOG – Clojure - Programmiersprache für Java VM Vorstellung ● Wer ist wer ? ● Erfahrungen ● Java, Scala, C++, C# ? ● Python, Ruby, Groovy ? ● ML, Haskell ? ● Lisp ? ● Clojure ? Agenda ● Vorstellung ● Herkunft von Clojure ● erster Kontakt ● detaillierte Einführung ● Ausführungstechnik ● Fazit ● Perspektive Herkunft von Clojure ● Trends / moderne Probleme ● Multicore Hardware ● Concurrente Programmierung ● Die Basis ist die Plattform statt dem Betriebssystem ● ● alte Sprachen, die den Trend verfolgen, werden nicht einfacher [ <Name> hier ] Neue Sprachen werden experimentiert Herkunft von Clojure ● gute Kanditaten ● Functionelle Programmierung als Standard ● JVM (auch CLR) ● Dynamische Sprachen [ Lisp ] ● Statisch-typisierten Sprachen [ CAML, F#, Haskell ] Herkunft von Clojure ● Was ist die funktionelle Programmierung ? ● Funktionen ohne Nebeneffekte ● Funktionen als normalen Werte (“first-level functions”) ● Statuslose Programmierung (“stateless”) ● unveränderbaren Datenstrukturen (“persistent data structures” ) ● Rekursivität ● Deklarative (statt imperative) Programmierung Herkunft von Clojure ● ● ● ● Was ist die JVM ? portierbare Java Plattform mehr als das Betriebsystem: GC, Objekte, Libs, JIT compiler, uvm... pragmatische Lösung für produktive Systeme ● von den PHB vertraut ● verfügbar von DB Treiber bis Web-Server ● Armeen von Entwicklern Herkunft von Clojure ● Was ist Lisp ? ● eine multi-paradigmen Sprache ● Tiefe Wurzeln in Kalkulationstheorie(n) (im Gegenteil zu Toy-Sprachen) ● statuslose Programmierung ● deklarative (statt imperative) Programmierung Herkunft von Clojure ● Was ist Lisp ? ● ● geboren in 1958, John McCarthy Seiner Zeit voraus (immer noch) ● funktionell ● Garbage-Collecting ● REPL ● Macros ● “Homoiconicity” Herkunft von Clojure Was ist Lisp ? ● Mehrere Dialekte und Implementierungen ● mit K.I. Assoziiert ● 80-er: Lisp-Machines ● Common Lisp für die Software Industrie (Nichenerfolge) Herkunft von Clojure ● Was ist Lisp ? ● für die Produktion: Common Lisp ● doch wenig portierbar ● nicht threaded ● Mangel an Libs ● eigene Welt zu eng Herkunft von Clojure ● Was ist Clojure ? ● Clojure = Lisp reloaded ! ● bewährte Tradition ● modernisiert: abgespeckt ● modernisiert: neue Funktionalitäten ● ● ● ● ● Java Interoperabilität Sequences Functional als Standard Concurrency ist einfach uvm... erster Kontakt ● vor einer tieferen Untersuchung, die Basis ● clojure.org/license ● clojure.org/getting_started ● clojure.googlecode.com/files/clojure-1.1.0.zip ● die “REPL” ● Emacs (v.23) + “Slime/Swank” github.com/technomancy/swank-clojure ● blip.tv/search?q=clojure detaillierte Einführung Rich Hickeys Präsentation (1) Rich Hickeys Präsentation (2) Ausführungstechnik ● ● R...E...P...L... Ausführungstechnik Ausführungstechnik Ausführungstechnik Demo Fazit ● Clojure ist pragmatisch ● löst echte produktive Probleme ● nutzt die Java Welt mit Effizienz ● bietet einen soliden Einstieg für modernen Anwendungen ● Bsp: clojure.contrib ● web-server, servlets, RESTful (Compojure) ● DB integration (Clojure QL, contrib.sql) ● Processing ● uvm... ● Fazit ● aktive Community ● www.clojure.org ● richhickey.github.com/clojure-contrib/ ● groups.google.com/group/clojure ● github.com/languages/Clojure ● clojars.org ● Bücher: “Programming Clojure”, “Joy of Clojure”, “Practical Clojure”, “Clojure in action” “Clojure: Grundlagen, Concurrent Programming, Java” Fazit ● aktive Community ● ● Tutorials ● intensivesystems.net/tutorials.html ● java.ociweb.com/mark/clojure/article.html ● blip.tv, youtube, … Blogs ● clj-me.cgrand.net ● onclojure.com ● nakkaya.com/tags/#clojure ● bc.tech.coop/blog/081031.html Perspektive ● Vorteile von Clojure ● ● bessere Programme als mit xxxx ? ● gute Wiederverwendbarkeit ● schnellere Reaktivität ● weniger Code, weniger Wartung ● “secret weapon” Effekt (Viaweb / Paul Graham) besseres Multithreading ! Perspektive ● Nachteile von Clojure ● steile Lernkurve ● Code-Profiling ist tricky Danke ! Fragen ? Weitere Informationen bekommen Sie hier: http://www.FreieSoftwareOG.org und [email protected] oder kommen Sie doch einfach zu unserem regelmäßigen Treffen, jeden 1. Mittwoch im Monat ab 20:00 Uhr. (Treffpunkt laut Webseite) Cba