Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Applikationen mit Clojure

Web Applikationen mit Clojure

Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

Neben den Grundlagen von Clojure werden Sie in an diesem Abend auch Schritt für Schritt sehen, wie man hiermit eine Web-Anwendungen entwickeln kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen, werden Sie schnell sehen, dass die Ausdrucksstärke von Clojure und der Einsatz einer rein funktionalen Programmiersprache für Web-Applikationen sehr gut passt.

Michael Vitz

March 02, 2017
Tweet

More Decks by Michael Vitz

Other Decks in Programming

Transcript

  1. @michaelvitz Clojure > Lisp-Variante auf JVM > Funktionale Sprache >

    Dynamisch typisiert > Immutable Datenstrukturen
  2. @michaelvitz Datenstrukturen “Hello World" 3 3.14 3/2 \a :first foo

    #“Ch.*se” (“Hello”, :first) [3 4 3] { :name “Michael”, :company “innoQ” } #{3 4 3} true false nil
  3. @michaelvitz Funktionen (+ 1 2) > 3 (:city {:name “OOP”

    :city “München”}) > “München” (map inc [1 2 3]) > (2 3 4)
  4. @michaelvitz Funktionen (fn [x y] (+ x y)) (def add

    (fn [x y] (+ x y))) (defn add
 [x y] (+ x y))
  5. @michaelvitz Ring: Middleware (defn wrap-logging
 [handler] (fn [request] (print request)


    (let [response (handler request)] (print response) response)))
  6. @michaelvitz Compojure: Handler (def handler (GET “/hello” [] “Hello, world!”))

    (handler {:request-method :get, :uri “/hello”}) > {:body “Hello, world!”} (handler {:request-method :post, :uri “/hello”}) > nil
  7. @michaelvitz Compojure: Routes (def my-routes (routes (GET “/hello” [] “Hello!”)

    (GET “/bye” [] “Bye!”))) (defroutes my-routes (GET “/hello” [] “Hello!”) (GET “/bye” [] “Bye!”))
  8. @michaelvitz Fazit > Funktionale Sprache ideal für Web-App > Verbreitung

    nimmt zu > Libraries anstelle von Frameworks > Community gesund und hilfsbereit
  9. Michael Vitz | @michaelvitz [email protected] innoQ Deutschland GmbH Krischerstr. 100

    40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 www.innoq.com Ohlauer Straße 43 10999 Berlin Germany Ludwigstraße 180 E D-63067 Offenbach Germany Kreuzstr. 16 D-80331 München Germany https://www.innoq.com/de/talks/2017/03/web-applikationen-mit-clojure-rheinjug-march-2017/ Danke! Fragen? Kommentare?