4 ms·
I think Clojure is not a simple language. The reason is, that you have to learn about 1) Lisp, 2) Clojure's approach to concurrency (immutable data structures +
by fp 17y ago
I think Clojure is not a simple language. The reason is, that you have to learn about 1) Lisp, 2) Clojure's approach to concurrency (immutable data structures + reference types) and 3) the JVM. These are all fairly complex systems on their own. The combination of them is what makes Clojure interesting, and, in my opinion, you can't leave one out and still have a great language.
Depending on your knowledge, this may make it a bad choice as a first language because it's so much to learn at once. You could be better off, to start by learning something more similar to what you already know (possibly Python/Django or Ruby/Rails for web programming).
That said, Clojure is learnable, of course. It may just take more time. If it feels right to you, then go for it. Enthusiasm about the tools will help your learning. And either way, it's not like you are making a mistake.
- Towelie 17y agoThanks for your response. :) Quick question: regarding learning about the JVM, are you aware of any good resources, especially any which look at it from a Clojure perspective?
- anonjon 17y ago1) Lisp isn't exactly a complicated pattern to match (syntax is much more simple/readable than say, Java/Ruby). If you do a lot of macros there are difficult things involved, but then again, macros are an entire level of power greater than Ruby/Python. 2) You don't have to use the concurrency stuff if you are just learning programming. The whole point of STM is that it takes care of the concurrency and transactions for the programmer. This is like saying garbage collection is more difficult than hand allocating memory because the system that implements it is more complicated. 3) Huh? I mean, if you want to use Java libraries you have to learn a bit of the java idiom (.... camelCase), as well as the library that you want to use, but there is no demand that you become intimately acquainted with the JVM any more that you become intimately acquainted with the specific implementation details of python or ruby. I'm not sure if your post is FUD or genuine ignorance of Clojure (or both).
- deleted 17y ago[deleted]
- deleted 17y ago[deleted]
- swannodette 17y agoClojure's beauty is in that it _is_ simple. It's also a language where it's completely unnecessary to have to understand all the parts at once. I coded in it for 6 months and never used a single concurrency primitive. That said, JVM stuff does present a challenge but not more than the various non-sensical annoyances I've experience with every programming language. Two other real difficulties is lazy-sequences and less than ideal error-reporting. lazy-sequences is like learning pointers- tough and then you get it. error-reporting is a symptom of early days. This issue is offset somewhat by Clojure's FP sensibilities.
- eru 17y agoLazy-sequences may also help to prepare you for a completely lazy language.