9 ms·
I've been looking at Clojure a lot lately. It's a really cool looking language that appears pretty powerful. As an outsider I'd really like to see some more "ra
by SmileyKeith 12y ago
I've been looking at Clojure a lot lately. It's a really cool looking language that appears pretty powerful. As an outsider I'd really like to see some more "ramping up" kind of posts to get my head around all the basics of the tooling (leiningen) and how to actually structure a program.
- siscia 12y agoYou can follow planet clojure [1] on twitter[2] or even facebook[3]. [1]: http://planet.clojure.in/ http://planet.clojure.in/ [2]: https://twitter.com/planetclojure https://twitter.com/planetclojure [3]: https://www.facebook.com/clojurian https://www.facebook.com/clojurian
- AlwaysBCoding 12y agoClojure is a great language that has an achilles heel right now. The community doesn't treat the lack of learning resources / documentation as a serious problem. I've heard prominent members of the community say this exactly, "Clojure is such a great language that the lack of learning resources doesn't constitute a real problem in the grand scheme of things." I know what they're trying to communicate, but to beginners it comes off like "We've created the greatest thing since sliced bread - but we're not going to tell you how to use it - and if you would just take our word for it and blindly follow with no guidance you'll be a better developer". Which is really frustrating to hear, because it's like this thing seems so great, and smart people are all about it, but the only way to learn it is absolute misery. It's a tough perspective to have when you're only a couple years in to your dev career. Clojure gives you massive benefits, but god it's a brutal road to competence. Things that should be simple like setting up a web server, adding user authentication, making JSON API's, trying to find the best libraries, it's all a time-consuming trudge through pain and suffering. And after some months when you get somewhat competent with the language, you realize that in order to get the full power of Clojure you need to not only learn the Clojure language, but the entire Clojure ecosystem. So you need Clojure, Clojurescript, Datomic, Edn, Core.async etc... And each piece of that puzzle is equally horribly documented and has no beginner resources so you have to struggle at each point in the process, praying to god that it's ultimately worth it. It's frustrating as hell, but it really is rewarding, because you have to learn every little piece at a low-level to ever make anything happen. There's no Rails-like framework that makes things 'just-work' waiting for you. I find that using Clojure is awesome, but learning Clojure is awful. I'm hoping to play a role in fixing that second part pretty soon, but really wish the community would be more active in helping to remedy the problem. The first step is admitting that the problem exists and it matters, and not sure that we're there yet.
- hga 12y agoI haven't found that true, especially compared to any other language at this stage of development (complicated by the lack of the modern Internet, but I'm thinking especially about C++). E.g. I'm helping someone with a web application and I've found no need whatsoever for Datomic (PostgreSQL + korma is just fine), I gather that means Edn is irrelevant, Core.async appears to be less than a year old, so I'm not surprised it might be lacking in documentation, and I don't see it as critical for a lot of applications, including mine. Clojurescript: we'll see, I do engines, and would prefer to continue to have others do almost all of that side of things. Granted, it did take me a while to find and get up to speed on a set of libraries to do the web app I'm working on (mostly CRUD with some non-real time backend external communications), but it's been relatively pain free. I started with a recommended set, then as I found I needed to do something new, like JSON, I found a good library in a few minutes with Google and didn't find it at all difficult to fold it in. Did change after a bit my form validation library to Red Tape, which modulo one detail (limited data available to form level cleaners (functions that act on more than one item in the form)) is superb. And "superb" in general describes my experience doing all this. And I fully expect documentation and other learning resources to continue to improve as Clojure gets greater acceptance. (Disclaimer: I'm an old Lisp and Scheme hand, e.g. not someone who had to learn anything conceptually new to use loop and recur. I could see the above plus learning basic functional Lisp concepts to be brutal if you're new to everything. On the other hand, I can remember the days when learning MACLisp required reading an old David Moon manual and then the archives of a mailing list following it's publication; thank goodness there was a really great Lisp Machine Lisp manual and they were just starting to be somewhat available to use and learn on.)
- siscia 12y agoI am definitely not the best developer you will ever find, however I learn clojure by myself and it wasn't so hard... (This is exactly the behaviour you are point as wrong, and I know it.) The resource I had (back in the 2011/2012) were just a book, `The joy of Clojure`, my background was some C and mostly python, nothing about FP. I don't see any of ClojureScript, Edn (???) nor core.whatever so fundamental... Those are just other tools, you can write any webserver using the old JS, JSON and any other lib you may need... (Anyway you should not try to learn clojure building web server, are the less clojure-y piece of software you can build IMHO) IMHO, the biggest problem is the paradigm shift that most developer need to have in order of learn clojure.
- brunov 12y agoAphyr's Clojure from the ground up [1] series is the best place to start in my opinion. [1]: http://aphyr.com/tags/Clojure-from-the-ground-up http://aphyr.com/tags/Clojure-from-the-ground-up
- platz 12y agoThis course on pluralsight wasn't half bad and covers a lot of a basics. I knew how clojure felt and behaved, but IMHO you still have to memorize most of the core library, or most code will look confusing. http://pluralsight.com/training/courses/TableOfContents?courseName=clojure-fundamentals-part-one http://pluralsight.com/training/courses/TableOfContents?cour...
- puredanger 12y agoI find http://clojure.org/cheatsheet http://clojure.org/cheatsheet to be a great help in getting an overview of what's in the core library.
- platz 12y agoYes the cheat sheet is great once you 'have a foot in the door', so to speak. For beginners, getting familiar with namespaces in the REPL quickly is key, if you're trying to load a sample of code froma file. Also another gotcha is multiple arity functions which I haven't seen before (in a dynamically typed language).
- base698 12y agoI have ample Java experience and had been using JavaScript and Node for three years now. I have spend quite a lot of time programming in Clojure with just toy examples and am building a simple game to get a handle on it from a more practical standpoint. That said I too still can't figure out how to use leiningen and it seems clunky and slow. It's also easy to find examples that don't work. I'm not sure if getting it to work with as little hassle as npm would help it's growth, but seems like it couldn't hurt.
- technomancy 12y agoPlease open a bug report in the Leiningen issue tracker if the problems you encountered came from the official documentation.
- a-saleh 12y agoWe have been using clojure for 2 years for testing web apps in our q/a team. My journey looked ~like this: 1) Managed to get counter-clockwise working, played around with http://tryclj.com/ http://tryclj.com/, solved most of the http://clojurekoans.com/ http://clojurekoans.com/, and first ~15 of 99 functional problems that float around the web. 2) what helped, that I have already gone through a course of haskell while undergrad, so functional paradigms weren't that foreign :-) (immutability, laziness, partial application, e.t.c), so if you want to give it a try, you can look at Learn You a Haskell :P 3) we have since moved to python, and when I am sad, I try to write my code without loops, but using (for in) generator for everything, pretending I am still using lisp :P 4) clojuredocs.org/clojure_core/ were quite helpfull but after a year, clojure 1.5 was already out, and lots of functions recieved updated counterparts, so I spent quite a lot of time reading their sources ...