SlideShare a Scribd company logo
1 of 19
Roman Obukhivskyi

About Clojure
Afterword :)
You can do everything

❖

JVM

❖

CLR

❖

Javascript
How to start
❖

http://clojure.org/

❖

http://www.4clojure.com/

❖

http://leiningen.org/

❖

http://clojurescriptone.com/
http://www.clojure-toolbox.com/
Dev environment
❖

Good
❖
❖

❖

Emacs
IntelliJ

Kinda geek
❖
❖

❖

Vim
Sublime Text

Others… (Eclipse, Netbeans…)
3 basic questions

❖

How?

❖

What?

❖

Why?
HowTo pattern #1
Fun with code (Quick Sort)
❖

APL: qsort ← {1≥⍴⍵:⍵⋄e←⍵[?⍴⍵]⋄ (∇(⍵<e)/⍵) , ((⍵=e)/⍵) , ∇(⍵>e)/⍵}

❖

J: quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)

❖

Clojure:
(defn qsort [L]
(if (empty? L)
'()
(let [[pivot & L2] L]
(lazy-cat (qsort (for [y L2 :when (< y pivot)] y))
(list pivot)
(qsort (for [y L2 :when (>= y pivot)] y))))))
Some facts
❖

Typing: dynamic, strong

❖

(Almost) no syntax (S-expressions)

❖

Lisp-1

❖

Persistent data structures

❖

Laziness

❖

Less brackets than in Java :)
❖

(list 1 2 3) ‘(1 2 3)

❖

(vector 1 2 3) [1 2 3]

❖

(hash-map :a 1 :b 2) {:a 1, :b 2}

❖

(hash-set 1 2 3) #{1 2 3}
❖

LISP + JVM foundation

❖

Simplicity - core of the language design

❖

Best parallelism primitives

❖

Modular libraries

❖

Code is data

❖

DSL
Best answers to “Why?”
question
❖

http://www.infoq.com/presentations/Are-We-There-Yet-Rich

❖

http://www.youtube.com/watch?v=f84n5oFoZBc

❖

http://www.infoq.com/presentations/Simple-Made-Easy

❖

http://www.infoq.com/presentations/Value-Values

❖

http://www.youtube.com/watch?v=ROor6_NGIWU

❖

http://www.infoq.com/presentations/DesignComposition-Performance
Bonus: little demo
Introduction to Clojure - EDGE Lviv

More Related Content

What's hot (7)

Mongo
MongoMongo
Mongo
 
Kotlin, a modern language for modern times
Kotlin, a modern language for modern timesKotlin, a modern language for modern times
Kotlin, a modern language for modern times
 
Taming Clojure applications with Components
Taming Clojure applications with ComponentsTaming Clojure applications with Components
Taming Clojure applications with Components
 
JSON and The Argonauts
JSON and The ArgonautsJSON and The Argonauts
JSON and The Argonauts
 
Run once
Run onceRun once
Run once
 
3 little clojure functions ii
3 little clojure functions ii3 little clojure functions ii
3 little clojure functions ii
 
WebCampKL 9 - 30-second tips to happiness. 16 apps in 8 minutes
WebCampKL 9 - 30-second tips to happiness. 16 apps in 8 minutesWebCampKL 9 - 30-second tips to happiness. 16 apps in 8 minutes
WebCampKL 9 - 30-second tips to happiness. 16 apps in 8 minutes
 

Viewers also liked

Cd cover analysis
Cd cover analysisCd cover analysis
Cd cover analysis
emilycaden
 
Feedback for digipak design 2
Feedback for digipak design  2Feedback for digipak design  2
Feedback for digipak design 2
ChrisAshwell
 
Yearly lesson plan 2014 math f4
Yearly lesson plan 2014 math f4Yearly lesson plan 2014 math f4
Yearly lesson plan 2014 math f4
miashera84
 
2024-AEP_Linecard_85x11-web-ready
2024-AEP_Linecard_85x11-web-ready2024-AEP_Linecard_85x11-web-ready
2024-AEP_Linecard_85x11-web-ready
Chantal Sylvestre
 

Viewers also liked (17)

First presentation
First presentationFirst presentation
First presentation
 
Sermão aos peixes
Sermão aos peixesSermão aos peixes
Sermão aos peixes
 
Travel Map
Travel MapTravel Map
Travel Map
 
First presentation
First presentationFirst presentation
First presentation
 
Cd cover analysis
Cd cover analysisCd cover analysis
Cd cover analysis
 
Blueworld
BlueworldBlueworld
Blueworld
 
Feedback for digipak design 2
Feedback for digipak design  2Feedback for digipak design  2
Feedback for digipak design 2
 
Folder cf 02-01(juntos)
Folder cf 02-01(juntos)Folder cf 02-01(juntos)
Folder cf 02-01(juntos)
 
Escapada pola costa da morte
Escapada pola costa da morteEscapada pola costa da morte
Escapada pola costa da morte
 
Yearly lesson plan 2014 math f4
Yearly lesson plan 2014 math f4Yearly lesson plan 2014 math f4
Yearly lesson plan 2014 math f4
 
Diana Gutierrez's resume
Diana Gutierrez's resumeDiana Gutierrez's resume
Diana Gutierrez's resume
 
VODI_TheThinkTek
VODI_TheThinkTekVODI_TheThinkTek
VODI_TheThinkTek
 
Las prácticas docentes en acción pp cap 3 Davini
Las prácticas docentes en acción pp cap 3 DaviniLas prácticas docentes en acción pp cap 3 Davini
Las prácticas docentes en acción pp cap 3 Davini
 
Art history lecture 7 greek and roman art
Art history lecture 7 greek  and roman artArt history lecture 7 greek  and roman art
Art history lecture 7 greek and roman art
 
Biología II. DGB
Biología II. DGBBiología II. DGB
Biología II. DGB
 
2024-AEP_Linecard_85x11-web-ready
2024-AEP_Linecard_85x11-web-ready2024-AEP_Linecard_85x11-web-ready
2024-AEP_Linecard_85x11-web-ready
 
Presentacion para la materia de poo
Presentacion para la materia de pooPresentacion para la materia de poo
Presentacion para la materia de poo
 

Similar to Introduction to Clojure - EDGE Lviv

NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
Eric Evans
 
Cassandra: Not Just NoSQL, It's MoSQL
Cassandra: Not Just NoSQL, It's MoSQLCassandra: Not Just NoSQL, It's MoSQL
Cassandra: Not Just NoSQL, It's MoSQL
Eric Evans
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
StarTech Conference
 
Node.js for Rubists
Node.js for RubistsNode.js for Rubists
Node.js for Rubists
Sagiv Ofek
 

Similar to Introduction to Clojure - EDGE Lviv (20)

NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
 
Implementing SSH in Java
Implementing SSH in JavaImplementing SSH in Java
Implementing SSH in Java
 
Cassandra: Not Just NoSQL, It's MoSQL
Cassandra: Not Just NoSQL, It's MoSQLCassandra: Not Just NoSQL, It's MoSQL
Cassandra: Not Just NoSQL, It's MoSQL
 
The State of Lightweight Threads for the JVM
The State of Lightweight Threads for the JVMThe State of Lightweight Threads for the JVM
The State of Lightweight Threads for the JVM
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John Stevenson
 
Clojure made really really simple
Clojure made really really simpleClojure made really really simple
Clojure made really really simple
 
Clojure Small Intro
Clojure Small IntroClojure Small Intro
Clojure Small Intro
 
Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018
 
Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...
Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...
Atmosphere 2016 - Krzysztof Kaczmarek - Don't fear the brackets - Clojure in ...
 
iSoligorsk #3 2013
iSoligorsk #3 2013iSoligorsk #3 2013
iSoligorsk #3 2013
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the web
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Iron Sprog Tech Talk
Iron Sprog Tech TalkIron Sprog Tech Talk
Iron Sprog Tech Talk
 
Node.js for Rubists
Node.js for RubistsNode.js for Rubists
Node.js for Rubists
 
Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)Building Hermetic Systems (without Docker)
Building Hermetic Systems (without Docker)
 
Defcon CTF quals
Defcon CTF qualsDefcon CTF quals
Defcon CTF quals
 
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMClojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
 
Linux shell
Linux shellLinux shell
Linux shell
 
Perl Moderno
Perl ModernoPerl Moderno
Perl Moderno
 

More from zenyk

SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті державиSEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
zenyk
 

More from zenyk (13)

Semasearch Spring - 2015
Semasearch   Spring - 2015Semasearch   Spring - 2015
Semasearch Spring - 2015
 
Проект Каскад
Проект КаскадПроект Каскад
Проект Каскад
 
Ecois.me and uMuni
Ecois.me and uMuniEcois.me and uMuni
Ecois.me and uMuni
 
Semasearch Intro
Semasearch IntroSemasearch Intro
Semasearch Intro
 
Rapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache HadoopRapid Development of Big Data applications using Spring for Apache Hadoop
Rapid Development of Big Data applications using Spring for Apache Hadoop
 
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті державиSEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
SEMASEARCH - Високі технології у боротьбі з корупцією та на захисті держави
 
Puppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE LvivPuppet / DevOps - EDGE Lviv
Puppet / DevOps - EDGE Lviv
 
Spring for Apache Hadoop
Spring for Apache HadoopSpring for Apache Hadoop
Spring for Apache Hadoop
 
Hadoop Solutions
Hadoop SolutionsHadoop Solutions
Hadoop Solutions
 
Emotional Intelligence
Emotional IntelligenceEmotional Intelligence
Emotional Intelligence
 
Lviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQLLviv EDGE 2 - NoSQL
Lviv EDGE 2 - NoSQL
 
Amazon Clouds in Action
Amazon Clouds in ActionAmazon Clouds in Action
Amazon Clouds in Action
 
Modern Java Web Development
Modern Java Web DevelopmentModern Java Web Development
Modern Java Web Development
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Introduction to Clojure - EDGE Lviv