Clojure

Werbung
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
Herunterladen