Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Don't fear the paren! 8 reasons you should give...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Giuseppe Capizzi
April 09, 2014
Programming
210
4
Share
Don't fear the paren! 8 reasons you should give Clojure a try
Giuseppe Capizzi
April 09, 2014
More Decks by Giuseppe Capizzi
See All by Giuseppe Capizzi
A (not so) gentle introduction to functional programming
gcapizzi
1
190
PHP: The good, the bad and the ugly
gcapizzi
3
390
Other Decks in Programming
See All in Programming
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
ふつうのFeature Flag実践入門
irof
7
3.5k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
250
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
540
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
180
Oxlintのカスタムルールの現況
syumai
5
990
AIエージェントの隔離技術の徹底比較
kawayu
0
460
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
350
さぁV100、メモリをお食べ・・・
nilpe
0
130
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Site-Speed That Sticks
csswizardry
13
1.2k
Agile that works and the tools we love
rasmusluckow
331
21k
How to build a perfect <img>
jonoalderson
1
5.6k
Test your architecture with Archunit
thirion
1
2.3k
Transcript
( ) DON’T FEAR THE PAREN! 8 reason you should
give Clojure a try
“2014 is the year of clojure” Federic Gala i
Uncle Bo “it might be the seed that starts the
process towards the last programming language”
1 functional
•Immutable, persistent data structures •first-class functions •dynamic polymorphism
“object orientation is overrated”
“mutable stateful objects are the new spaghetti code” All data
structures immutable & persistent
“It is better to have 100 functions operate on one
data structure than to have 10 functions operate on 10 data structures." Alan J. Perli Many functions defined on few primary data structures
“polymorphism is a good thing” protocols for class polymorphism, multimethods
for custom hierarchies
2 LISP
None
•(Almost) no syntax •code is data, let’s do macros! •not
constrained by backwards compatibility
3 on the jvm
•embraces the jvm as a platform •fast! almost as fast
as java •tons of high quality libraries •mature echosystem
4 concurrency
moore’s law is over
threads & locks are a mess
the actor model was designed to address the problems of
distributed programs
•immutable data can be shared freely •atoms •transactional references (stm)
•async agents •csp with core.async
clojurescript 5
javascript is everywhere
javascript is not very robust
clojurescript to the rescue
•interoperates with javascript •brings much of clojure goodness to the
js world (incl. core.async!) •uses google closure optimizations
6 tools
•nrepl •leiningen •editors (emacs, vim, light table, eclipse, intellij, netbeans)
•testing (clojure.test, speclj, midje, test.check)
7 echosystem
•core.typed optional type system •core.logic for logic programming •om (clojurescript
+ facebook react) •overtone (clojure + supercollider)
•rapidly evolving web stack based on ring •immutant (jboss as7
+ ring) •datomic •http-kit
8 community
•vivid •inclusive •tons of tutorials and documentation
thanks!