5 ms·
I agree with the spirit of the post, but not (many of) the actual points. Look at the list of languages the author points to in the first paragraph: PHP, Python
by devonrt 16y ago
I agree with the spirit of the post, but not (many of) the actual points. Look at the list of languages the author points to in the first paragraph: PHP, Python, Ruby and Objective-C. Only one of these has anything remotely close to an "officially sanctioned experience" and that's because it's a proprietary system.
His first complaint is that getting started with Clojure involves starting a REPL and that this is not how actual development is done. Well, no, it isn't. It is however, where you will spend most of your time. Not only that, but the most accessible documentation on both the Ruby and Python official sites mostly involve using a REPL. Clojure's only problem is that running the REPL is slightly more involved. Also, Clojure 1.1 is not already outdated and I'm not sure where the author got this idea. 1.2 will have some great features, but AFAIK will be completely backwards compatible. I'm not sure where a beginner would even learn about 1.2 without some serious internet trolling.
Next the author complains about how difficult obtaining Clojure is difficult. There is a "Download" link right on the clojure.org homepage that lists zip files for both 1.1 and 1.0, both of which include the source. This is less difficult than getting Python or Ruby, which involves downloading and installing a pre-compiled binary or compiling it from source. Also, the author complains about 1.2 not being available, even though 1.2 has not been publicized and is still in beta; true beginners probably don't know that 1.2 even exists.
The author complains about the fact that there are a whopping three choices for IDEs for Clojure, despite the fact that each of these IDEs also have plugins for Ruby, Python and PHP. There are no fewer IDE choices for these languages. If you ask most Rubyist which IDE you should use many of them will tell you TextMate, and editor that is neither free nor cross-platform. The author then brings up Xcode; well, of course every Objective-C developer uses Xcode, they don't have much choice. Clojure's myriad of IDEs is not a problem unique to Clojure.
Build systems, again, I don't think this problem is unique to Clojure. Where is the great documenation for Rake? Or Buildr? What build system do Pythonistas even use? Seriously, I've been using Python for a while now and I have no idea if there exists a canonical build tool. Comparing these platforms to the likes of Objective-C and .NET in terms of tool support is just unfair, in my opinion.
Like I said, I agree with the spirit of the post. Clojure is not an easy language to get into, but it has very little to do with the points the author made. Much of the cognitive load involved in getting started with Clojure has to do with the fact that it's a Lisp and most programmers are used to ALGOL syntax and Object Oriented semantics. Another thing to keep in mind is that Clojure is an incredibly young language. Much, much, much younger than Python, Ruby, PHP, Objective-C or even Scala. Taking into account Clojure's youth it's amazing that it's as far as it is.
- mkramlich 16y agoregarding your point about Python build tools: myself, I've never found the need to use a formal build tool. Shell scripts work just fine. The beauty of writing a shell script is that (1) it doesn't reinvent the wheel (you reuse all the other shell commands & userland tools you had available anyway), (2) it's as short and simple as you want, and (3) as long as you only have to build on fairly similar systems (Unixen, Linux distros) it's really not that hard to make it cross-platform enough for your needs. True you don't get fancy target/lazy/dependency resolution semantics: but so? It sometimes just doesn't matter. Plus CPU + disk are cheap these days, programmer time is still not cheap.
- regularfry 16y agoI just use Rake :-)
- mkramlich 16y agoon Clojure being young: agreed. Criticism about Clojure lacking polish at this stage strikes me as somebody criticizing a toddler with, "Head too big. Bad balance. Can't feed himself yet."