SlideShare a Scribd company logo
Clojure
Why does it matter?
@friemens
● Published 2008 by Rich Hickey.
● Dynamically typed.
● Compiles to bytecode.
A pragmatic Lisp for the JVM
&
Simplicity
Advanced stuff
Lisp
Deconstruction
&
Simplicity
Advanced stuff
Lisp
Deconstruction
Few ubiquitous data
structures and
powerful core library.
Simple Complicated
Data encapsulated
behind specific APIs of
OO classes.
Immutable data. Mutable class
instances &
synchronization.
Embedded „code
generators“.
External DSL tooling.
Pure functions. Side effects &
dependence on
context.
Design is deconstruction
Small libraries,
no big frameworks!
HTTP
server
Middle-
ware
functions
Routing
function
Handler
functions
Page
renderer
Deconstructing the database
Datomic
A modular,
facts-based
database system.
Storage service
Transactor
Query
Cache
Peer library
Application
Database
State and Identity
OO style (conflated) Clojure style (separated)
&
Simplicity
Advanced stuff
Lisp
Deconstruction
&
Simplicity
Advanced stuff
Lisp
Deconstruction
Huh? Lisp?
Lisp!
Other Languages
Time
Expressive
Power
The elegance of Lisp
http://xkcd.com/297
Functional programming
Functions as values
Powerful data structures
„[...] a unit tester's wet dream.“
No assignments
Laziness
Example: Square root approximation
gn+1 := (n/gn + gn) / 2
Concise code
public <K,V> Map<V, K> revertKeysVals(Map<K, V> src) {
final Map<V, K> dst = new HashMap<V, K>();
for (Map.Entry<K, V> e : src.entrySet()) {
dst.put(e.getValue(), e.getKey());
}
return dst;
}
(defn revert-kv [m]
(->> m (map (juxt second first)) (into {})))
Prefer purity
Pure functions
Side effects
Context
Code is data, or: why does Lisp look different?
Code
Data
Common How it could be
Build
config
DSL
grammar
Settings
Serialization
XML
Xtext
.properties
JSON
Debug
output
Anything
EDN
EDN
EDN
EDN
EDN
Clojure is a superset of Extensible Data Notation
A powerful language allows for simpler tools
Interactive development
Demo
&
Simplicity
Advanced stuff
Lisp
Deconstruction
&
Simplicity
Advanced stuff
Lisp
Deconstruction
Persistent datastructures
0 1 2 3 4 5 6 6 7 8 9
10
7
Concurrency support
Actor style:
Pulsar librarySoftware
Transactional
Memory
CSP style:
core.async library
Widely used:
Synchronization and LockingJava
Clojure
Advanced libraries
core.logic
core.async
core.typed
core.reducers
Datomic
map + fold parallelized
Logic programming
CSP style programming
Optional type system
Facts-based database
Internal DSLs just happen
HTTP routing
UI form description
Data access
Full stack Clojure
Browser
App Server
Database
ClojureScript
Clojure
Datomic
&
Simplicity
Advanced stuff
Lisp
Deconstruction
Advanced thinking
Expressive power
Fosters dev skills
Advanced concurrency support
Perfect for unit testing
What's in for you?
Concise data manipulation
Interactive programming
Thank you. Questions?
@friemens www.itemis.de

More Related Content

PDF
Post-relational databases: What's wrong with web development?
PPT
Orm and hibernate
PPTX
CG Core v2 schema from the DSpace perspective
KEY
Legislation.gov.uk
PPT
NoSQL Overview
PDF
Visualize your graph database
PPTX
Drop acid
Post-relational databases: What's wrong with web development?
Orm and hibernate
CG Core v2 schema from the DSpace perspective
Legislation.gov.uk
NoSQL Overview
Visualize your graph database
Drop acid

What's hot (20)

ODP
MongoDB + Pylons FTW: Scalable Web apps with Python & NoSQL
PDF
Review of KohaCon18
PDF
Gwt cdi jaxrs_hbraun
PDF
Object- Relational Persistence in Smalltalk
PPTX
MongoDB - Getting Started
PPTX
Neo4j - Graph Database
PDF
Single Page Apps
PPTX
No SQL - Intro
PDF
Single page applications with backbone js
PPTX
RavenDB - Indexes Deep Dive
PPTX
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
PPT
Groovygrails
PDF
GraphQL is actually rest
PPTX
Munching the mongo
PPTX
Apache geode
PPTX
Why Drupal?
PPTX
NoSQL - Not Only SQL
PDF
TypeSafe NoSQL @ TopConf 2012
PPTX
Portofolio project
MongoDB + Pylons FTW: Scalable Web apps with Python & NoSQL
Review of KohaCon18
Gwt cdi jaxrs_hbraun
Object- Relational Persistence in Smalltalk
MongoDB - Getting Started
Neo4j - Graph Database
Single Page Apps
No SQL - Intro
Single page applications with backbone js
RavenDB - Indexes Deep Dive
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Groovygrails
GraphQL is actually rest
Munching the mongo
Apache geode
Why Drupal?
NoSQL - Not Only SQL
TypeSafe NoSQL @ TopConf 2012
Portofolio project
Ad

Viewers also liked (14)

PDF
Clojure+ClojureScript Webapps
PDF
Some basic FP concepts
PDF
ClojureScript Introduction
PDF
Making design decisions in React-based ClojureScript web applications
PDF
ClojureScript - A functional Lisp for the browser
PDF
An Adventure in Serverless ClojureScript
PDF
Why you should be excited about ClojureScript
PDF
JavaFX GUI architecture with Clojure core.async
PPTX
FlatGUI: Reactive GUI Toolkit Implemented in Clojure
PDF
All for Web development
PDF
Clojurescript slides
PDF
Thinking Functionally with Clojure
PPTX
CLI utility in ClojureScript running on Node.js
PDF
Build Features, Not Apps
Clojure+ClojureScript Webapps
Some basic FP concepts
ClojureScript Introduction
Making design decisions in React-based ClojureScript web applications
ClojureScript - A functional Lisp for the browser
An Adventure in Serverless ClojureScript
Why you should be excited about ClojureScript
JavaFX GUI architecture with Clojure core.async
FlatGUI: Reactive GUI Toolkit Implemented in Clojure
All for Web development
Clojurescript slides
Thinking Functionally with Clojure
CLI utility in ClojureScript running on Node.js
Build Features, Not Apps
Ad

Similar to Clojure - Why does it matter? (20)

PDF
Qcon 090408233824-phpapp01
PDF
Facebook architecture
PDF
Facebook architecture
PDF
Facebook的架构
PPTX
In-memory Databases
PPTX
20160524 ibm fast data meetup
PPTX
Expertezed 2012 Webcast - XML DB Use Cases
PPTX
6 weeks 6 months live project summer industrial training in cmc limited 2012
PPTX
Bigdata antipatterns
DOC
Web services soap rest training
PPTX
What is Hibernate Framework?
PPT
MySQL Alta Disponibilidade com Replicação
ODP
MySQL And Search At Craigslist
PDF
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
KEY
Mashups with Drupal and QueryPath
PDF
The View - Leveraging Lotuscript for Database Connectivity
PPTX
in-memory database system and low latency
PPTX
Chapter 12:Understanding Server-Side Technologies
PDF
Serverless Data Platform
PPTX
Introduction to SalesForce
Qcon 090408233824-phpapp01
Facebook architecture
Facebook architecture
Facebook的架构
In-memory Databases
20160524 ibm fast data meetup
Expertezed 2012 Webcast - XML DB Use Cases
6 weeks 6 months live project summer industrial training in cmc limited 2012
Bigdata antipatterns
Web services soap rest training
What is Hibernate Framework?
MySQL Alta Disponibilidade com Replicação
MySQL And Search At Craigslist
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Mashups with Drupal and QueryPath
The View - Leveraging Lotuscript for Database Connectivity
in-memory database system and low latency
Chapter 12:Understanding Server-Side Technologies
Serverless Data Platform
Introduction to SalesForce

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
MYSQL Presentation for SQL database connectivity
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
A Presentation on Artificial Intelligence
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Encapsulation theory and applications.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
MYSQL Presentation for SQL database connectivity
The AUB Centre for AI in Media Proposal.docx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Review of recent advances in non-invasive hemoglobin estimation
20250228 LYD VKU AI Blended-Learning.pptx
Programs and apps: productivity, graphics, security and other tools
A Presentation on Artificial Intelligence
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Unlocking AI with Model Context Protocol (MCP)
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Digital-Transformation-Roadmap-for-Companies.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
NewMind AI Weekly Chronicles - August'25-Week II
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation_ Review paper, used for researhc scholars
Encapsulation theory and applications.pdf
Spectroscopy.pptx food analysis technology
Reach Out and Touch Someone: Haptics and Empathic Computing

Clojure - Why does it matter?