The syntax is unremarkable, but the libraries are a pleasure to use. Everything is well organised and it fixes a few of Java's rough edges, heck even just the fact that everything has a ToString() prototype is a huge "win."
Although C#'s recent feature additions have made producing spaghetti code easier (e.g. Linq) although C# wasn't immune from that before [0].
The tooling makes the language tangible. paredit. eval as you write with SLIME. completion with SLIME. macros. It feels like you are working with something alive and can hold it in your hands, rather than just plain text.
Other langs get 1 or 2 of the nice tools but never all of them. The parenthesis are a chore at first, but after paredit they are an asset, ironically making it easier to write than any other syntax I've found.
Clojure is ok, but just isn't there with tooling. Also it requires project structure. Feels like a loss of freedom against the JVM as a dependency. With Common Lisp you can just open a buffer and get hacking, and outperform the JVM to boot!
We have a Clojure codebase and I agree that the JVM places a hard ceiling on some things, and there are big holes in the tooling ecosystem (or at least for Emacs, dunno about the other IDEs).
I wanted to second the comments about paredit though. It's something you have to force yourself to stay with for a few days at least, after which your eyes, brain and hands are all thinking in terms of S-expressions. This'll sound funny, but I honestly think it's one of the tools that has most reduced my stress levels in my whole career. Going back to other languages, you forget just how much syntax and structure you're wading through while trying to keep track of the meaning of your code.
Python. Great eco system. Beautiful code. Lists, sets and dictionaries are native data types, and list/dict comprehensions are a joy. Metaprogramming is easy.
Python. I am a beginner and I am loving amazing things I can do with Python. It's very beginner friendly, has a great community. You can find tutorials about anything on interwebs. Most of the things one want to do are already there in the form of libraries. And you just have to take all of those and build together. Just like LEGO.
That's what I love about Python. I am working on a project with Python, after that I will try to explore other language and learn.
I think, for everyone it probably depends a lot on what each of us build as a programmer, because although most programming languages are "general purpose" they have communities and toolchains that tend to be more heavily specialized to one area.
For me, I do lots of web application dev, not websites but applications which I think makes a big difference in my taste. Personally, I love using Ruby because its ecosystem lets me rapidly and succinctly build ideas and mesh together APIs and the incoherence of the web in a clean way. But I've absolutely hated the ruby experience when building number crunching programs and desktop apps, here I found python to be a much more robust solution.
For command line apps on the other hand I really like Go and C, because I hate having to wait for dynamic languages runtime to load before I can run my command. So "enjoyable" for me really does depend on the context and the problem set I'm dealing with, because lets face it if you need to do bitmask ops those fancy floating point js numbers are just going to annoy the heck out of you and you'll really wish you had that simple unsigned short :)
Elixir. The combination of pattern matching with Erlang processes and "let it crash" philosophy is an absolute joy. Actors/Erlang processes and FP are really great for modeling the problems I find myself solving in a clear and easy to understand way.
Lua. Simple yet powerful. And - important for me - easily embedded into C and C++ programs, also pure ANSI C so very portable. Sorta like Javascript but with all the fat removed.
Python. Has support for everything I need to get out of my way and let me focus on solving domain problems using programming rather than programming language problems.
Clojure. I find the average and best case functions written in Clojure are more beautiful and satisfying than most alternatives, and much quicker to find. Emacs with paredit, cider (REPL), company mode (completion) etc is great.
Stack traces and the fact that nobody has yet released a decent debugger for cider are pain points. Also leiningen (package manager etc) performance is pretty crappy.
I'm the only one willing to admit it? Ok. Javascript.
The syntax for arrays and objects is dirt simple. Lambdas are easier to implement in javascript than any other language i've tried them in (python, C++, C#), and for the most part it just seems to do what I want with minimal syntax and little BS.
I like template metaprogramming a great deal. I'd like to get so good I could be on the level of the guys who know the standards in and out, but that seems like a very difficult pursuit. :-)
C++. It allowes no sloppy coding. In mid 80's I was a BASIC
coder at home, but these days, even though it's just a hobby, I feel I need strict rules how to code.
Sam, Finland
The syntax is unremarkable, but the libraries are a pleasure to use. Everything is well organised and it fixes a few of Java's rough edges, heck even just the fact that everything has a ToString() prototype is a huge "win."
Although C#'s recent feature additions have made producing spaghetti code easier (e.g. Linq) although C# wasn't immune from that before [0].
[0] https://code.google.com/p/elmah/source/browse/src/Elmah/Stac...