> We are a Clojure User Group based in Dundee Scotland. We meet weekly.
> The group is primarily aimed at helping existing software developers with
> experience of at least one programming language learn Clojure and
> Functional Programming.
> If you are reasonably competent with an existing programming language,
> e.g. Java/C#/C++/Ruby/Python/PHP and want to learn Functional Language
> then you have come to the right place.
> Also if you're a Functional Programmer already and want to learn Clojure,
> then we can help!
> We primarily follow a hands-on-approach to learning. With lots of pair
> programming, discussion and group problem solving. You are encouraged to
> bring your own laptop, though it is not required that you do so.
Apologies if you've seen this already.
As it is me who is organising these events, I thought I'd take the
opportunity to reply to this post... Especially because I know there
are some Erlang and Functional Programmers on this list, along with a
number of Ruby, Java/.Net and Python users.
If you fall into any of these camps then you'll likely be interested in Clojure:
- If you're a Ruby programmer, then you like playing with cool things
and Clojure is probably the coolest general purpose language that you
can convince your boss to let you use. Like Ruby, Clojure is a hell
of a lot of fun! If you like meta-programming, DSL's and building a
language to solve your problem, you'll love Clojure! Like with Ruby,
Clojure lets you safely hide the details under the hood with little
ceremony... Oh and did I mention Clojure has all the duck-typing,
maps, filters, reduce's and inline regexes that you love... except
this time we have laziness and great performance!
- If you're a Java programmer, then you have the richest array of
class libraries in the world... with some of the best tools, garbage
collectors, and JIT-compiling virtual machines the world has to offer.
Java guys know the best code, is the code you didn't have to write...
but when you do have to write code, Java's no longer the nicest way to
do it... If you feel like this, then Clojure is for you. It'll give
you all the terseness and expressiveness of Ruby or Python, whilst
allowing seamless interoperability with Java libraries (and back
again). If you're worried about selling it to your boss, just tell
him "I've heard of this great new Java Library called Clojure!"...
Clojure deployment is as easy as deploying a jar or war file...
Clojure unlike Scala is a small, simple language with very few edge
cases. With Clojures immutable values you'll never see a
ConcurrentModificationException, deadlock or race-condition again...
you might even manage to sleep at night!
- If you're a python zen master, then you know the value of having a
language with good idioms. Like Python with Clojure it is often easy
to see what the most idiomatic way of doing something is. It also has
a minimal syntax, and is every bit as pragmatic in its approach. The
language jells together cohesively, without getting in your way.
Unlike Python, it has incredible support for in process concurrency,
allowing you to get all those cores working for you! Rich Hickey,
Clojure's inventor shares Guido's spidy-sense and is renowned
world-wide for the wise choices he makes with Clojure's design.
- If you're hailing from Erlang you'll like Clojure because like
Erlang it's a practical language geared at solving real world
problems. Unlike Erlang, its domain of suitability is wider... as it
will allow you to write functional programs achieving concurrency and
parallelism where you couldn't before (in the browser or in desktop
environments for example). Clojure like Erlang has a unique and
practical approach to concurrency, though Clojure's model is
significantly different from the Erlang model it is equally sane....
Like in Erlang everything's a value, and immutability is baked into
the core, meaning life is easy as nothing ever changes! Unlike
Erlang, all Clojure's data structures are persistent making them
incredibly efficient underneath!
- If you're a Haskell hacker then Clojure though eagerly evaluated has
the lazy infinite sequences you're used to! Though the compiler
doesn't enforce the use of pure functions through the type system,
Clojure strongly favours the use of pure functions, whilst providing
you an incredibly well thought out approach to state, that includes a
number of time management constructs; including an efficient
integrated STM implementation, allowing you to update multiple values
atomically, ensuring isolation and that watchers only ever see
consistent snapshots. Clojure like Haskell has all the lambdas you
can eat, along with homoiconicity, hygeinic macros, multimethods and
effecient polymorphic dispatch. Clojure's approach to state is sane
without the complexity of monads.
Ok, apologies for the somewhat trad language stereotypes... I merely
hope to have interested some of you enough to come along to one of our
meetings.... I have a deep respect for all the languages mentioned and
only hope to illustrate the point that Clojure has something to offer
If you're intreagued by what I've said then I can recommend this
introductory video series to Clojure here:
Our sessions are right now geared towards experienced programmers who
are competent in at least one language. If you're interested in
attending then you will need to join our mailing list at:
Right now we're doing this out of my office at work, so spaces are
limited... and I'd appreciate it if anyone wanting to attend confirms
this with me by sending a message to me or the group above asking for
> You received this message because you are subscribed to the Google Groups
> "edinburgh programming fringe" group.
> To post to this group, send email to code...@googlegroups.com.
> To unsubscribe from this group, send email to
> For more options, visit this group at