3 ms·
Background has been mostly in C/Java and Scala. Scala for the past 3 years. It's a fantastically complicated language with even its creator Martin Odersky looki
by oulu2006 12y ago
Background has been mostly in C/Java and Scala. Scala for the past 3 years. It's a fantastically complicated language with even its creator Martin Odersky looking to do a major rethink and turn it into something simpler [1]. I never could finish reading the language standard. There was a lot of effort put into a lot of libraries that just made it harder to use Scala, like Scalaz which pimped almost every standard scala library class. Almost every time I went to use an external library I had to also learn the DSL that came along with it (the popular dispatch library for HTTP requests, "dispatch", needs a periodic table to decipher how to use it [2]). Then usually after that cognitive load I would encounter the inevitable limitations of the DSL and find no-way out of DSL hell; I went through 4 different DB libraries, trending down from ORM-high, ORM-ligher, ORM-almost nothing to "just some string interpolation around SQL". Some people find a lot of pleasure in debating language feature X and Y, and at first I cared about that, I really tried, but I was just fooling myself, I didn't really.
I like Lisp and specifically Clojure, for a number of reasons, with a lot of those reasons being because it's the _same_ .....everywhere. I read Clojure code like I read English, I can glance at a piece of Clojure and not wonder why there is an implicit argument that needs to passed and where the compiler might be finding it; the rules for Scala static implicit resolution go in and out even after reading them a few times for me.
Clojure has a lot of improvements on CLOS, I'm not sure how much Clojure experience you've had? There's enough differences that some of the arguments I noticed in the paper (which seem to be really just syntactical) on why ruby is an acceptable Lisp don't really apply to Clojure. For example, in Clojure you don't use lambda, you use "fn" to do the same thing. One of the things I really like about Clojure is that I get to run it on the JVM, which still beats hands down the Ruby VM, AFAIK, I did check a little while ago.
I'm not that familiar with the Python REPL, but Clojure's is pretty good and I love being able to jack into production when I have to and modify executing code to do tracing or debugging without having to restart it :) I know, it should never get to that point, but testing only covers so much.
Ok, I think I'll leave it at that.
Another poster on this thread made a comment around, people think in different ways, some people love thinking C++ and classes for everything....I'm not one of those people, I want to just say exactly what I want to say and nothing else; if I want a class I'll make one, else get it out of my way. I think LISP so when I type it's an almost 1-1 correspondence.
Cheers!
p.s. nice work on the Javascript port of arc, I didn't know that had been done.
[1] http://www.infoworld.com/article/2609013/java/scala-founder--language-due-for--fundamental-rethink-.html http://www.infoworld.com/article/2609013/java/scala-founder-...
[2] http://www.flotsam.nl/dispatch-periodic-table.html http://www.flotsam.nl/dispatch-periodic-table.html