After reading through Day 3 of this text, I know that Clojure means serious business. I knew from the 2nd day that it was powerful, and if you built up some knowledge and studied hard into the language, you could do some very complicated work with some simple and elegant statements.
We’ve had all of this stuff going on, and now they throw in threading! Not to say that I don’t understand threading, but I don’t have a lot of experience coding in it, even in my native computer programming languages. The system they describe for state transactional memory seems very powerful and useful to modern day multiprogrammers. It uses State Transactional Memory on items that are sensitive to data clobbering in concurrent programming. In order to perform actions on refs, the action must be performed within a transaction, and the data can only be writable by one transaction at a time. This (and the blocking behavior of futures) is similar to the concept of a mutex (mutual exclusion) lock which was introduced my last semester in CPSC 405. I can’t even pretend I understand the Atom section, as the example problem does not even work.
I’ve got some issues with this language. Primarily, though, I believe is the matter of work, play, and time. Clojure seems like it would be a language I would love to explore some more, and do more work with, but I simply do not have the time to play around with it much! There are so many concepts introduced already, and I really can’t wrap my head around them. I don’t feel the author does a tremendously good job of providing examples in the last 50% of the Clojure section.
Clojure is not for the weak hearted
If you want to be successful in this language and to maximize your utilization of its functionality, you’d better be a very good self-teacher. The learning curve is so steep, and in the scope of this course, I hardly think I can climb this hill.
The author lists a few grievances and concerns in the end of this section, and I fully agree:
- Clojure is hard to read to newcomers
- Prefix notation – the natural way of doing things we’ve been taught since elementary school go out the window for a new difficult to read, and sometimes difficult to understand, mathematical notation. The benefit – performing mass batch list calculations and operations. This language is all about power.
- Parenthesis – I couldn’t tell you how many times I have tried to write some practice or experimental function and had some type of an error due to either a missing, misplacement, or over-addition of parenthesis.
- The learning curve is DEMORALIZING
- After a few weeks of playing with ML, I feel like I have been able to get a good handle on things. As for Clojure, I feel I may have brushed off a flake of snow at the tip of the iceberg.
- I tried the Atom cache examples in the text and they won’t work! I fixed syntax and naming convention issues, but it still won’t do it. Not only that, I have no idea where else to go do fix this.
- It is not at all easy to just pick up one day and start developing larger programs – user inaccessibility.