Simplify Web Application Development with Clojure, ClojureScript and Datomic
Softwareentwicklung mit Open Source
10.09.2020
9:10 – 17:00 Uhr
HSLU Campus Rotkreuz
Max. Teilnehmer: 30
Einleitung
Clojure (and thus ClojureScript) is a functional, dynamically-typed dialect of Lisp with strong emphasis on immutability , persistent data structures and concurrency. It’s a hosted language and targets the Java VM, CLR and JavaScript runtimes which makes it symbiotic with established platforms.
Clojure’s value proposition lies in it’s set of features which are carefully designed with idiomatic simplicity in mind. The combination of an expressive Lisps syntax, functional orientation, immutable data structures, REPL and idiomatic concurrency make it robust, simple and practical to use.
- Lisp: declarative, lambda calculus yields a very small core, almost no syntax, code = data.
- Functional: Immutable data and first-class functions. Immutability makes much of the problem go away.
- Concurrency: immutability makes it possible to share state freely between threads
- REPL: enables dynamic development
- Hosted: symbiosis abstracts away OS and makes use of a huge set of facilities (types systems, GC, Bytecode + JIT compilation..).
Programm
The workshop should be arranged in two sessions. The first session will introduce Clojure and its main features. The second session will focus hands-on development of a sample application in Clojure.
Introduction to Clojure/ClojureScript/Datomic – 40 + 40 minutes
- Clojure rationale – why Clojure?
- EDN and Homoiconicity – Code is Data
- Persistent Data Structures – Its better to have 100 functions on 1 data structure than 10 functions on 10 data structures
- Spec – expressing data without types.
- The REPL – Interactive Development
- Concurrency and Parallelism – atoms, refs and agents
- Datomic – functional database
- ClojureScript – Functional Web Programming
Web Application Development (Hands on session) – 40 + 30 minutes
- Tooling – Interactive Development Workflow
- Composition – Libraries not Frameworks
- HTTP Abstraction – Ring and Compojure
- Database Abstraction – Datomic
- Web abstraction – ClojureScript
Kursziel
Main takeaways:
- Understand what Clojure’s value proposition and how it differs from imperative languages?
- How homoiconicity, immutability, functional orientation and REPL/dynamic development make software development simpler and productive.
Adressaten
Software Entwickler im Allgemein. Alle die Interesse haben über den eigenen Tellerrand zu schauen!
Voraussetzungen
Basic familiarity with programming languages: C/C++, C#, Java, Python, Ruby, JavaScript ….
Understanding of fundamental concepts of programming languages:
- Basic data types
- Means of composing (functions, objects)
- Means of abstraction: naming, procedural and data abstraction
Infrastruktur
Anschlussmöglichkeit um eine Präsentation vom Laptop zu projizieren. Wifi-Verbindung.
Referenten
Peter Makumbi
N/ASeit Ende des Studiums (2000) in Deutschland in der Softwareentwicklung mit Java/JEE tätig. Bis Juni 2006 als selbständiger in Frankfurt am Main bei der Deutsche Börse, Dresdner Bank und Europäische Zentralbank. In der Schweiz seit Juli 2006 als Software Ingenieur bei Credit Suisse und IBM. Seit 2009 bei Swiss Re, inzwischen als fester Mitarbeiter.