A very brief overview of the Clojure language. The majority of the presentation is in GIT revision history available from the GitHub link on the last slide:
http://github.com/larrytheliquid/buzzer
1. : an overview
presentation by Larry Diehl
language by Rich Hickey
Monday, March 2, 2009
2. What is Clojure?
• A programming language (note the j)
• ~1.3 years old (as of 02/26/09)
• A dialect of Lisp
• JVM-hosted
• Concurrency-minded
• Expressive
• Malleable
Monday, March 2, 2009
3. Why Clojure?
• Less code to read
• Meta-programming and DSLs
• Simpler concurrency model
• Lots of Java libraries to reuse
• As fast as Java when necessary
• Dynamic and JIT, but optionally AOT
Monday, March 2, 2009
4. Concurrency
• The age of multiple cores is here
• Thread-safety in a Java library is practically
a feature
• Thread-safety in a Clojure library is
practically an assumption
• No language-level support for distributed
concurrency
Monday, March 2, 2009
5. Examples
• Things that don’t change but are used often
• Unit testing Java code
• Graphing
• Rapid prototyping
• Lightweight REST APIs
Monday, March 2, 2009
6. Clojure as a Lisp
• Functional (not Object Oriented)
• Prefix syntax (simple!)
• Data type literals (less parentheses)
• Lexically scoped (mostly)
• Code as data (HOFs and homoiconic)
Monday, March 2, 2009
7. Editors
• Emacs + SLIME
• not the only option!!!
• IntelliJ IDEA (official JetBrains plugin)
• Netbeans (Enclojure)
• Eclipse (clojure-dev)
Monday, March 2, 2009
10. Buzzwords
http://github.com/larrytheliquid/buzzer
• rest of presentation will center around
developing a library
• the purpose of the library is to detect and
report on buzzword usage within text
• new concepts will gradually be introduced
with new features
• TDD will be employed to help the learning
process
Monday, March 2, 2009