Review what you have learned and learn anew.
Confucius
| Instructor | Colin Jones |
|---|---|
| Location | 8th Light Chicago |
| Date | 2011-04-14 |
| Price | $699 - Early Bird |
Clojure: Functional Programming on the JVM
Description
What if there was a dynamic, general-purpose language that made it easier to write multithreaded programs, reason about state, and interoperate with legacy Java applications? What if this language had a vibrant and helpful community and a burgeoning ecosystem of libraries and tools? And what if this language was easy to grasp, with a bit of effort and practice?
It turns out that this language does exist, and it's called Clojure. Built for the JVM, Clojure provides a trusted platform, while at the same time offering the increased development speed and power of Lisp.
In this course, you'll grow your knowledge and skill to the point where you're ready to embark on your first Clojure project. With numerous hands-on exercises and labs, this isn't just a collection of lectures. Practice will ensure that concepts really sink in, and the exercises are a lot of fun to boot!
Who should attend?
Developers who want to:
- reduce the incidental complexity in their programs
- make multithreaded programming easier
- expand their minds to improve day-to-day tasks
- program at a higher level
Preliminary Schedule
Day 1
The Basics: Clojure Koans
Get acquainted with the basics of syntax and some core Clojure functions with the Clojure Koans, on the start of your path to Clojure enlightenment. With zen-like patience, we'll become comfortable with much of the core language, from sequences to higher-order functions, by filling in the blanks in simple Clojure code examples to make each test pass.
Java Interoperability
Lisp has been around for quite awhile - one of the things that sets Clojure apart is the ease of interoperation with Java. Calling from Clojure into Java and back is relatively painless. In Clojure, we essentially inherit the whole of Java's library ecosystem to use where appropriate.
Concurrency
Clojure's philosophy of immutability by default solves many of the concurrency problems inherent in a language like Java. When modeling state becomes necessary in a program (and it likely will), Clojure provides the var, ref, atom, and agent mechanisms to manage state in a controlled manner.
Day 2
Functional Programming
Object-oriented programming dominates the programming mindshare in many circles, but it's not the only game in town. We can use many of the same principles of software development we already follow, but other concepts are fundamentally different. Using a variety of problems, we'll expand our programming minds to accommodate the functional idiom.
Protocols, Datatypes, and Multimethods
Protocols and datatypes provide one of the primary benefits of object-oriented programming: polymorphic dispatch on type. Multimethods go a step further and provide arbitrary dispatch on function arguments.
Libraries / Tools
Theory and practice take us a long way, but in order to get things done with Clojure, it's best not to reinvent the wheel. We'll get familiar with libraries and frameworks for data crunching, web development, and GUIs.
About the Instructor:
Colin Jones is a software craftsman at 8th Light, the maintainer and a primary author of the Clojure Koans, and contributor to several Clojure projects including Leiningen, the most-used build tool for Clojure, and Clojure itself. He has presented talks and workshops on Clojure at Agile 2010, Chicago Code Camp, Chicago Clojure, and the McHenry Software Craftsmanship Group.
