This is an argument that will probably go on for a long, long time, and 
I wonder if it might have to do with the way that people think and 
program.  Personally, I tend to throw together lots of small experiments 
in the process of developing, and being able to use short symbols for 
common operations is absolutely what I prefer.  It is less annoying than 
having to type long-function-names-that-describe-what-they-do, but much 
more importantly, they can be read easier.  Short names for common 
operations means fewer lines that have to be broken, and eventually I 
think your mind can pick up common patterns, like (conj lst foo) in one 
glance, rather than having to read a method name and think about what it 
is doing.  The number of characters required to accomplish any operation 
should correspond inversely to its frequency of usage.  Hence the syntax 
for #(...) anonymous functions, maps being functions of their keys, etc. 
  I agree, it does add a bit to the learning curve, but I bet within two 
or three evenings of watching screencasts and writing mini programs you 
have conj, assoc and more soft-wired into your neural fibers.

I was going to say, "hey, you can always just make your own macros, and 
it won't even have a speed penalty."  But actually, that is a bad idea. 
  In Common Lisp people made 9 million versions of everything, even 
common utility methods, which means lots of libraries and support code 
feel half done, half maintained and half annoying.  Life was much easier 
in the Ruby community, where the ruby way, much defined by Matz but 
evolved by the community, seems more accepted and used throughout. 
Clojure is already building on possibly the worlds largest code-base, 
Java, but I hope a similar level of unity will be maintained in the pure 
clj ecosystem.

-Jeff

Robert Lally wrote:
> One of the many things that I really like about Clojure is that it 
> abandoned Lisp tradition where it was pragmatic to do so. One of the 
> prime examples for me was the use of first and rest rather than car and 
> cdr. Sure, I can read code with car and cdr but it never really 
> communicated that well; I always had to go through a translation step in 
> my head.
> 
> With this in mind it surprises me ( and disappoints a little ) that 
> there are still abbreviated function names in many places  - aget, aset, 
> assoc, conj, coll?, comp, and so on. Is there any need for this in the 
> 21st century? The trade off between meaningful method names and number 
> of characters typed doesn't seem to be a good one from my perspective; 
> particularly as IDE support matures and you will only need to type 
> 'asso' to have the IDE expand the function name to 'associate' for you. 
> Using full words as function names leads to more readable code .. which 
> can only be a good thing.
> 
> I'm not suggesting that terseness is bad, merely that I don't believe 
> the trade off is worth it in this case. I've shown Clojure to a number 
> of people and the Lisp derived syntax coupled with abridged names makes 
> it harder for people to comprehend, makes it less likely that on first 
> encountering a piece of Clojure code that they'll be able to understand 
> it, and so make it less likely that I'll get to write Clojure for a 
> living ... which makes me sad.
> 
> Just some thoughts.
> 
> 
> Rob Lally.
> 
> 
> 
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to