4 ms·
I use clojure not just because it's a practical lisp (it is), but because Rich Hickey is a genius, and is stirring up programming language design in ways we hav
by arohner 17y ago
I use clojure not just because it's a practical lisp (it is), but because Rich Hickey is a genius, and is stirring up programming language design in ways we haven't seen in a long time.
If you haven't, go read his slides from the "Are We There Yet?" talk http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit200... (PDF) . It's worth a read, regardless of what programming language you like best.
Where everyone else (except for maybe the Haskell people) seems to be doing the same old grab bag design "oh that's a cool feature, oh, and that too", Rich has a clear idea of what programming should be, and he moves closer to that goal daily.
I think people overestimate the significance of choosing e.g. Ruby over Python or vice versa. C vs. Java is a legitimate choice, Java vs. Clojure is legitimate, Ruby vs. Python is not, IMO. I'd like to see an example of where choosing Ruby / Python / Perl is a momentous decision.
- ewjordan 17y agoI'd like to see an example of where choosing Ruby / Python / Perl is a momentous decision. The only one I can think of is that a lot of people have an intense hatred for one of the three, so you've got to weigh your team's preferences to make sure you offend the fewest number of people. Personally, I have a deep seated, all-consuming, perfectly irrational (though I'll happily invent reasons) loathing for Perl, and I just refuse to use it. But Ruby or Python? Eh, close enough that I'm not going to complain either way...I'm sure you'll find plenty of Ruby zealots that wouldn't touch Python with a ten foot pole, though, and vice versa.
- bphogan 17y agoI love Ruby. It's the first language that's made me happy as a programmer. I don't like special characters, and I can tolerate ruby's occasional =>, |e| and {}, and I tend to avoid the other ones. For the same reason, I like Python. Languages that introduce characters for the sake of making a compiler happy make me, personally, unhappy. I have a really hard time being comfortable with (){}; all over the place. And it's taken me years to realize why - it slows me down. I don't see very well, and those little things cause me sometimes hours of pain. So I'm a bit of a language snob. The more clean the syntax, the more I'm going to be drawn to it, and the more I'm gonna be productive in it. In fact, it's why I like SASS more than LESS (for CSS). So I guess I'm saying Ruby vs Python? Exactly. Meh. Ruby over Perl or C#? Any day of the week.
- eru 17y agoYou should have a look at colorForth. The author replaced punctuation with colors exactly because he has poor vision. (So I have heard.)
- strlen 17y ago> I think people overestimate the significance of choosing e.g. Ruby over Python or vice versa. C vs. Java is a legitimate choice, Java vs. Clojure is legitimate, Ruby vs. Python is not, IMO. I'd like to see an example of where choosing Ruby / Python / Perl is a momentous decision. I agree here as well re: Ruby vs. Python vs. Perl. I've found that since I know Perl (have spent many years working on it, both professionally and on my own), I can fairly easily work on Python projects. Out of those three, my choices are generally going to be based on whether one has a better library than the other two (e.g., Python having a better ncurses library than Perl, Perl having an better XML parser interface). I've no personal preference between the languages themselves, as I feel when I program in them, I am not learning anything that I don't already know well. (Ruby being a slight exception with its Smalltalk-like features, co-routines, etc...). It's pretty much the same way for me with C# vs. Java and C++: C# has language features which make it a more pleasant than the other two, but ultimately the choices come down to platform choices/library availability/project-specific limitations (e.g., I'll use C++ or C# for desktop applications, C/C++ for non-trivial UNIX command line utilities, Java for server side/distributed applications which make extensive use of threading; C# might be nice for that role as well, but having Windows in a datacenter can easily kill a project or a even company -- and Mono isn't quite "there" yet). Again, compared to each other, neither of these languages teaches me something the others won't, with a few notable exceptions (e.g., Java's interfaces taught me the pattern to use -- most of the time -- with C++'s multiple inheritance: inherit a single non-abstract, constructable class and multiple purely abstract classes). Doug Hoyte called the concept "blub central": there's game theoretic disadvantages to the mainstream languages introducing new features (e.g., for the long time Java wasn't taken seriously in the mainstream due to being a garbage collected language; I'd imagine there was similar debate around closures being added to C#, but now Java will -- after much botching -- have them). On the other hand Scala, Clojure, Haskell, OCaml, Scheme and Common Lisp each teach me new concepts that I haven't seen before. Even if I ultimately disagree with the languages' aims, I still find these languages worth learning: e.g., I tend to think that, ultimately, dynamically typed languages with optional type hints (e.g., Common Lisp, Clojure, Strongtalk) are preferable to statically typed languages, statically typed languages with well-designed type systems (Haskell, OCaml, Scala) are still very much worth learning.