My programming experience has been thus: perl, c, lisp (clisp), python, scheme (mzscheme/drscheme), php, java (grudgingly), ruby. I’m now trying to find time to dabble with clojure.
Every time I came across a bit of lisp code that I could understand, I was drooling with envy. What interests me is the ability to interpolate data and code. I’m not aware of any other language besides the lisp family of languages that do away with that line entirely and meld them.. data = code = data.
I don’t program at my day job and haven’t done so for a long time. I program personal projects. I’ve tried to use lisp as much as I can for some of them. I’m a lazy programmer (I got that from perl – laziness, impatience, hubris). I like to think of a programming language as a tool to get me to the results I want as quickly and as efficiently as possible. If I have to write every piece of code, including a library or wrapper to talk to the file system or to internet data sources, it’s an immediate turn-off. Perl has a ton of libraries, including third party ones that lets you do almost anything.. but I can’t read my own code after a year. I don’t want to have to remember to do things a certain way. Python took that and came up with a much prescriptive way of programming, it even includes a lot of libraries as standard libraries, but tabs? Besides, it doesn’t do code as data very well. Ruby takes it a bit further making it a lot easier to do code as data. It has a lot of the good parts from a lot of other languages (perl, ruby, python, java, even lisp). I use it every time I would opt for perl or python.
I’ve tried different lisps, clisp, sbcl, allegro cl, drscheme etc. The problem for me with standard lisps has been that each of those lisps are a platform on their own and interfacing with the outside world is (for me) a case of acrobatics. The commercial lisps obviously have wonderful ways of doing that (with their own proprietary libraries). But, they’re commercial.
I’m neither a languge purist nor an academic. I want something that comes with batteries (like python), is lispy (code as data), has easy access to tons of third party libraries (like perl), is possibly cross platform (at least linux, windows and mac os x), is easy to ship (like jar files or scripts), has decent ide/editor support (emacs is not what I have in mind, even textmate is more useable for me) and is also fast.
Drscheme/mzscheme comes pretty close and is pretty darn good (except for the third party libraries thing besides native calls). Java has tons of libraries but I hate the verbosity and the 100 lines to do anything heritage. I waited for arc but was disappointed when it finally got here. It will evolve over time and I will definitely have to take a look at it once in a while.
Clojure, however, is here and is pretty close to what I want. It’s getting netbeans support soon, already has an inferior lisp mode for emacs, works wherever a JVM works, has access to anything that a JVM has access to, does lispy things really well (real macros, reader etc), and even has lazy evauators (sequences actually)..
So, I’m game. Some lisp or language purists will probably have things to say about this, but that’s ok.