Re: Clojure / Common Lisp Question

2010-06-28 Thread Alessio Stalla
On 26 Giu, 07:53, rob levy  wrote:
> > It can (but its startup is slow, currently). May I ask you why you
> > wouldn't want to use it?
>
> One reason is that from what little I know about ABCL it seems more
> straightforward working with Java libraries in Clojure, but also there is a
> huge amount of enthusiasm and energy going into Clojure, whereas with ABCL
> the developer is more on their own, with less eyes on the code, smaller
> community of users, etc.  That and I enjoy lots of other things about
> Clojure, and want to use it, so playing with two JVM Lisps seems a little
> redundant and it becomes an either/or proposition for me.  But I think I
> would use it if there was something written common lisp thing that I wanted
> to integrate into some other JVM-based thing, why not?  I haven't had that
> experience but it seems like it could happen.

Fair enough, thanks for sharing your ideas.

[snip]
> > I use Common Lisp because that's the Lisp I know. I'm interested in
> > Clojure because it has put some nice ideas on the table, but currently
> > I see no reason to use it outside heavily parallelism-oriented
> > applications, especially given that ABCL is there and it offers a nice
> > combination of CL with Java libraries. OTOH, I think that for the
> > average Java developer Clojure is probably friendlier.
>
> Concurrency is not very developed at all in Common Lisp, which could be a
> major point against it going forward, but I'm sure people will remedy that,
> as Lisp is always a good laboratory for adding new things to the language as
> libraries etc.  Of course in the case of Clojure the interesting new ideas
> didn't come from CL, though many good old ideas did.  CL people should
> probably study and consider Clojure's innovations in this case.

Concurrency is not developed at all in the ANSI Common Lisp standard,
but if you look at the various implementations (especially the
commercial ones) you'll see that is quite developed. Of course there's
not the focus on it that Clojure has, and CL being somewhat less
functional than Clojure (and Scheme) does not help in that regard.
Clojure has really filled a nice niche and it's great to see a Lisp
dialect be so (relatively) popular.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Clojure / Common Lisp Question

2010-06-26 Thread rob levy
> You can use Perl's map/grep pretty much anywhere, though they're not as
> nice to use because the language is a mess (albeit more functional than
> Python). I, too, have found myself using fewer and fewer explicit loops as
> time goes on, starting with a revelation about the versatility of map while
> I was still living in Perlistan. I haven't used a single loop statement yet
> in Clojure, and I doubt I will ever do so except for performance reasons.
>
>
Yes, that is true, you can use that approach everywhere in Perl, but for the
exact reason you cite an explicit loop in Perl can sometimes be less
awkward/ hard to read/ require less auxiliary yak-shaving, whereas in Lisps
these higher order forms that abstract away the looping are consistently the
natural way to do things, and the code is more  declarative/clean.  In Perl,
the "right way" to do it seems to depend on the situation, sometimes a while
loop, sometimes a foreach-style loop (though I can't remember the last time
it seemed like a good idea to use a classic "for i to n"-style loop).  Perl
offers an obscene amount  of syntax to choose from which is good for
expressiveness, but I'll take ultra-simplicity, homoiconicity,
no-syntax/DIY-syntax approach to expressiveness of the Lisp family of
languages over that any day.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Re: Clojure / Common Lisp Question

2010-06-26 Thread Michael Gardner
On Jun 26, 2010, at 12:37 AM, rob levy wrote:

>> Rich Hickey's insightful videos have caused me to stop
>> writing loops whenever possible. For me this is the same
>> level of "thinking-change" that happened when I moved to
>> using "Structured Programming" rather than GOTO (in Fortran).
>> Rich needs to write a paper called
>>  "Loops considered harmful"
>> 
> 
> That is a great thing, I like that about both Common Lisp and Clojure.  
> Compare with Perl or even Python; you can use map/grep, list comprehensions 
> etc some of the time but not all of the time.  I Lisp it's always possible to 
> that in a neat way I think.  I know there is a loop macro in CL, which I'm 
> sure can cause many people to just write in some other language's idiom 
> instead of the native one.

You can use Perl's map/grep pretty much anywhere, though they're not as nice to 
use because the language is a mess (albeit more functional than Python). I, 
too, have found myself using fewer and fewer explicit loops as time goes on, 
starting with a revelation about the versatility of map while I was still 
living in Perlistan. I haven't used a single loop statement yet in Clojure, and 
I doubt I will ever do so except for performance reasons.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Clojure / Common Lisp Question

2010-06-25 Thread rob levy
>
> It can (but its startup is slow, currently). May I ask you why you
> wouldn't want to use it?
>
>
One reason is that from what little I know about ABCL it seems more
straightforward working with Java libraries in Clojure, but also there is a
huge amount of enthusiasm and energy going into Clojure, whereas with ABCL
the developer is more on their own, with less eyes on the code, smaller
community of users, etc.  That and I enjoy lots of other things about
Clojure, and want to use it, so playing with two JVM Lisps seems a little
redundant and it becomes an either/or proposition for me.  But I think I
would use it if there was something written common lisp thing that I wanted
to integrate into some other JVM-based thing, why not?  I haven't had that
experience but it seems like it could happen.

>   The nudging of paradigm/idiom makes many things easier in Common
> Lisp.
>
> That depends on a lot of things and it's very personal. Common Lisp is
> not automatically easier than Clojure for everyone.
>
>
I agree with you on this actually, I was kind of playing devil's advocate to
try to think of arguments for both sides...


> I use Common Lisp because that's the Lisp I know. I'm interested in
> Clojure because it has put some nice ideas on the table, but currently
> I see no reason to use it outside heavily parallelism-oriented
> applications, especially given that ABCL is there and it offers a nice
> combination of CL with Java libraries. OTOH, I think that for the
> average Java developer Clojure is probably friendlier.
>
>
Concurrency is not very developed at all in Common Lisp, which could be a
major point against it going forward, but I'm sure people will remedy that,
as Lisp is always a good laboratory for adding new things to the language as
libraries etc.  Of course in the case of Clojure the interesting new ideas
didn't come from CL, though many good old ideas did.  CL people should
probably study and consider Clojure's innovations in this case.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Re: Clojure / Common Lisp Question

2010-06-25 Thread rob levy
>
> Rich Hickey's insightful videos have caused me to stop
> writing loops whenever possible. For me this is the same
> level of "thinking-change" that happened when I moved to
> using "Structured Programming" rather than GOTO (in Fortran).
> Rich needs to write a paper called
>  "Loops considered harmful"
>

That is a great thing, I like that about both Common Lisp and Clojure.
 Compare with Perl or even Python; you can use map/grep, list comprehensions
etc some of the time but not all of the time.  I Lisp it's always possible
to that in a neat way I think.  I know there is a loop macro in CL, which
I'm sure can cause many people to just write in some other language's idiom
instead of the native one.


> Common lisp, however, gives me precise machine-level to
> massive function semantics, e.g. (car ...) is a machine
> pointer and (integrate ...) is a huge function but I can
> freely mix them in (integrate (car ...)). I don't feel the
> same "one-ness" in Clojure/Java.
>
>
Yes it is awesome.  SBCL has a good enough compile that someone could write
a fast OS kernel in it I think.  And then we could actually read it and know
what it's doing later on, and not have weird buffer overflows. ;)

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Re: Clojure / Common Lisp Question

2010-06-23 Thread evins.mi...@gmail.com


On Jun 18, 9:52 am, rob levy  wrote:
> As an informal survey of people who use both Clojure and Common Lisp for
> different projects, what do you see as the main determining factors behind
> your choice to use either Clojure or Common Lisp for a project, given the
> present state of Clojure.  Let's only assume we are talking about projects
> you completely own and have complete freedom to do what you want with.

At this point, Clojure is my default choice for new projects. If there
isn't a compelling reason to do a project in a another language, I use
Clojure.

It doesn't take very much practical pressure to get me to use Common
Lisp instead; I still like it nearly as much as Clojure, and there are
still things I like better about it.

It takes much more practical pressure to get me to use something other
than Clojure or Common Lisp. I do like Haskell very much, and wouldn't
squawk if some reason to use it for a project cropped up. I even have
a personal project I'm doing in Haskell for reasons that aren't
relevant to this topic.

So how do I make the choice between Clojure and Common Lisp? It's a
little hard to answer clearly. As I say, Clojure is my default choice.
Basically, if there is some reason I'd prefer not to rely on the JVM,
or if there's something about the particular project that makes me
want features that a favorite Common Lisp implementation has and
Clojure or the JVM doesn't, then I use Common Lisp.

Both Clojure and Common Lisp are decent approximations to an imaginary
Lisp that is my favorite programming language. They're closer to that
imaginary language than anything except a long-extinct version of
Dylan.

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Clojure / Common Lisp Question

2010-06-22 Thread Alessio Stalla
On 18 Giu, 16:52, rob levy  wrote:
> As an informal survey of people who use both Clojure and Common Lisp for
> different projects, what do you see as the main determining factors behind
> your choice to use either Clojure or Common Lisp for a project, given the
> present state of Clojure.  Let's only assume we are talking about projects
> you completely own and have complete freedom to do what you want with.
>
> Common lisp:
>    Compiled on the processor, fast.
>    Reader macros.
>    Quality, not quantity of libraries.
>    Multi-paradigm programming with no nudging -- programmer has freedom to
> be insane/bizarre in ways Clojure makes hard (see Let Over Lambda for
> examples)
>    Downsides:
>      Hard to deploy. -- but not a problem as server side of web app
>      Can't run on on GAE. -- need to run a server or rent/maintain virtual
> server.
>      Limited to native librares, though they tend to be awesome.
>
> Clojure:
>    Neat concurrency stuff.
>    Better deployment.
>    Can run on Google App Engine. (maybe ABCL can too, but I wouldn't want to
> use that personally).

It can (but its startup is slow, currently). May I ask you why you
wouldn't want to use it?

>    Lots of Java libraries, many more than for CL.

ABCL has that, too. Many of your points are not really about Clojure
vs CL, but about JVM vs the platforms the various CLs run on instead.

>    Increasing a large number of awesome native libraries.
>    Downsides:
>       As server side of web app in apache, less straigtforward requires
> Tomcat, Java crud.
>       Java interop is great-- but Java itself sucks!  There is an impedance
> mismatch of language semantics.

This is the biggest flaw I see in Clojure - I think it's too heavily
tied to Java. Granted, that can also be seen as a plus.

>       The nudging of paradigm/idiom makes many things easier in Common Lisp.

That depends on a lot of things and it's very personal. Common Lisp is
not automatically easier than Clojure for everyone.

>       Lots of cool benefits of Clojure (such as any/all GUI stuff for
> example) depend on crufty Java nonsense you must contend with.

Lots of cool libraries in CL depend on crufty C/C++ nonsense you must
contend with. FFI is great but it's not a panacea.

> So, for me at this point, if I don't need interesting concurrent stuff, and
> I do my own hosting, Common Lisp in Hunchentoot or mod lisp still seems like
> a superior web development approach.  On the other hand if I am doing
> desktop apps, applets, want to use GAE, etc, Clojure seems better.   I feel
> like as time goes on we will be more abstracted away from the pain of Java.
>
> Any thoughts on how you make your decision for specific projects?

I use Common Lisp because that's the Lisp I know. I'm interested in
Clojure because it has put some nice ideas on the table, but currently
I see no reason to use it outside heavily parallelism-oriented
applications, especially given that ABCL is there and it offers a nice
combination of CL with Java libraries. OTOH, I think that for the
average Java developer Clojure is probably friendlier.

The good thing about the JVM is that it makes it relatively easy for
different languages to coexist and cooperate on the same platform. You
can have library code in Java, scripts in JavaScript or BeanShell or
Python, concurrent stuff in Clojure, everything else in Common Lisp ;)
I'm exaggerating, but you can see the point.

Cheers,
Alessio

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Clojure / Common Lisp Question

2010-06-19 Thread Tim Daly

Clojure is an amazing piece of work.

I'm interested in Clojure for the concurrency.

I'm also interested in the immutable data structure work.
Someone needs to write a paper about the performance
characteristics of immutable structures when the whole
structure changes. That is, what are the performance
comparisons of mutable/immutable for various sorts?

I'm using Clojure as a "console front end" to our
huge Java project. Rather than writing Java programs to
generate test or output I write Clojure.

Rich Hickey's insightful videos have caused me to stop
writing loops whenever possible. For me this is the same
level of "thinking-change" that happened when I moved to
using "Structured Programming" rather than GOTO (in Fortran).
Rich needs to write a paper called
  "Loops considered harmful"

Common lisp, however, gives me precise machine-level to
massive function semantics, e.g. (car ...) is a machine
pointer and (integrate ...) is a huge function but I can
freely mix them in (integrate (car ...)). I don't feel the
same "one-ness" in Clojure/Java.

In general, I'm a common lisp bigot :-)

Tim Daly

rob levy wrote:
As an informal survey of people who use both Clojure and Common Lisp 
for different projects, what do you see as the main determining 
factors behind your choice to use either Clojure or Common Lisp for a 
project,  given the present state of Clojure.  Let's only assume we 
are talking about projects you completely own and have complete 
freedom to do what you want with.


Common lisp:
   Compiled on the processor, fast.
   Reader macros. 
   Quality, not quantity of libraries.
   Multi-paradigm programming with no nudging -- programmer has 
freedom to be insane/bizarre in ways Clojure makes hard (see Let Over 
Lambda for examples)

   Downsides:
 Hard to deploy. -- but not a problem as server side of web app
 Can't run on on GAE. -- need to run a server or rent/maintain 
virtual server.

 Limited to native librares, though they tend to be awesome.

Clojure:
   Neat concurrency stuff.
   Better deployment. 
   Can run on Google App Engine. (maybe ABCL can too, but I wouldn't 
want to use that personally).

   Lots of Java libraries, many more than for CL.
   Increasing a large number of awesome native libraries.
   Downsides:
  As server side of web app in apache, less straigtforward 
requires Tomcat, Java crud.
  Java interop is great-- but Java itself sucks!  There is an 
impedance mismatch of language semantics.
  The nudging of paradigm/idiom makes many things easier in Common 
Lisp.
  Lots of cool benefits of Clojure (such as any/all GUI stuff for 
example) depend on crufty Java nonsense you must contend with.



So, for me at this point, if I don't need interesting concurrent 
stuff, and I do my own hosting, Common Lisp in Hunchentoot or mod lisp 
still seems like a superior web development approach.  On the other 
hand if I am doing desktop apps, applets, want to use GAE, etc, 
Clojure seems better.   I feel like as time goes on we will be more 
abstracted away from the pain of Java.


Any thoughts on how you make your decision for specific projects?

Thanks,
Rob
--
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
Note that posts from new members are moderated - please be patient 
with your first post.

To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en 


--
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Clojure / Common Lisp Question

2010-06-18 Thread rob levy
As an informal survey of people who use both Clojure and Common Lisp for
different projects, what do you see as the main determining factors behind
your choice to use either Clojure or Common Lisp for a project, given the
present state of Clojure.  Let's only assume we are talking about projects
you completely own and have complete freedom to do what you want with.

Common lisp:
   Compiled on the processor, fast.
   Reader macros.
   Quality, not quantity of libraries.
   Multi-paradigm programming with no nudging -- programmer has freedom to
be insane/bizarre in ways Clojure makes hard (see Let Over Lambda for
examples)
   Downsides:
 Hard to deploy. -- but not a problem as server side of web app
 Can't run on on GAE. -- need to run a server or rent/maintain virtual
server.
 Limited to native librares, though they tend to be awesome.

Clojure:
   Neat concurrency stuff.
   Better deployment.
   Can run on Google App Engine. (maybe ABCL can too, but I wouldn't want to
use that personally).
   Lots of Java libraries, many more than for CL.
   Increasing a large number of awesome native libraries.
   Downsides:
  As server side of web app in apache, less straigtforward requires
Tomcat, Java crud.
  Java interop is great-- but Java itself sucks!  There is an impedance
mismatch of language semantics.
  The nudging of paradigm/idiom makes many things easier in Common Lisp.
  Lots of cool benefits of Clojure (such as any/all GUI stuff for
example) depend on crufty Java nonsense you must contend with.


So, for me at this point, if I don't need interesting concurrent stuff, and
I do my own hosting, Common Lisp in Hunchentoot or mod lisp still seems like
a superior web development approach.  On the other hand if I am doing
desktop apps, applets, want to use GAE, etc, Clojure seems better.   I feel
like as time goes on we will be more abstracted away from the pain of Java.

Any thoughts on how you make your decision for specific projects?

Thanks,
Rob

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en