Adventures in ClojureClojure and Functional Programming
A brief account of my starting point for investigating the Clojure programming language.
After many months of wading in the shallow waters of functional programming, I've finally decided to dive in head first and do it properly. My interest was piqued after a week of Haskell programming and 'pure' functional programming immersion , followed by a few dips into Scala (which is definitely something I want to spend a bit more time on when I can afford it).
Being someone who doesn't like to follow the hype, I prefer to wait for the right moment to get stuck in and also choose my tools carefully. If I want to choose the best tool for the job, I gotta know more than just one (if all you have is a hammer...)! So to get started, I've decided to dig deeper into Haskell and Clojure and see where that takes me. Why these languages? Well, Haskell is particularly relevant to me right now as it forms a key part of my MSc Software Engineering thesis; and Clojure appears to be an incredibly powerful language on a platform that I'm familiar with... the ubiquitous JVM.
So far I've read most of Real World Haskell and also the first few chapters of Clojure Programming , and will no doubt create a few simple applications along the way to make sure I have got my head fully around the functional approach to software engineering. These are likely to be web applications, as that's my primary focus and interest both at work and personally. I also went along to the Functional Web Architecture event at Skills Matter last night and was introduced to both Ring and Compojure - two interesting Clojure web frameworks that looks fairly straight-forward to get started with (although I'll be interested to see whether this simplicity remains as the complexity of the application grows).
I'll do my best to report back progress for anyone else that shares this interest and hopefully get some useful feedback. I'm also curious to know which companies use Clojure in production or as a significant part of the development efforts.