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

  1. Clojure rationale – why Clojure?
  2. EDN and Homoiconicity – Code is Data
  3. Persistent Data Structures – Its better to have  100 functions on 1 data structure than  10 functions on 10 data structures
  4. Spec – expressing data without types.
  5. The REPL – Interactive Development
  6. Concurrency and Parallelism  – atoms, refs and agents
  7. Datomic  – functional database
  8. ClojureScript – Functional  Web Programming

Web Application Development (Hands on session) – 40 + 30 minutes

  1. Tooling – Interactive Development Workflow
  2. Composition – Libraries not Frameworks
  3. HTTP Abstraction – Ring and Compojure
  4. Database Abstraction – Datomic
  5. 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/A


Seit 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.