Mike, I think that the whole issue about Lisp creates a big cloud about
Clojure.

Choosing a Lisp like syntax for a new language is a good choice because
of the expressiveness,
it requires less code lines, yields a better design, easier to test, ...
That's a choice between a number of options.
If it was the only sane one then we would all be coding using Lisp like
syntax. That's not the case
obviously. Talk to Ruby people, they made different choices...

If you sum up Clojure as being a Lisp because of what it look likes and
use only this to compare it to other
languages then you are missing the forest and looking at a single tree.

If you code in a Lisp like language using setq or set! or alike then you
can get very far away from functional
programming and end up writing procedural code with parenthesis. You
will eventually face the issues that Clojure avoids.

Clojure takes a brutal approach, forget the left-right assignment that
almost every language eventually
supports, forget variable mutations visible to everyone, forget
procedural code...
Oups these are the real show stoppers independently of the syntax used.
There's no escapes in Clojure while in other languages you can still
cheat (setq/set! and similar).

What I found non-trivial in Clojure were these "restrictions", no the
syntax. As soon as I understood
the decisions behind these choices, my mental blockage vanished.

Immutable data structures, transparent iterations over a variety of
structures,  lazy sequences, a workable STM implementation,
parallel processing capabilities ridiculously simple to use, huge set of
Java librairies available, easy to use, ...
These are the real features that make Clojure distinct from other
languages. All the choices made are sound and the
sum of these decisions is coherent. Nothing looks like it's been added
late to fill a gap like a nose in a face.

Syntax by itself is nothing, it never made a good language
implementation.

I have a few years of Lisp behind me, I started to use Lisp in the
1980s.I used to prototype software in Lisp that I had to deliver
in a more "classical" language. The main reason of this being the lack
of basic librairies and incompatible Lisp implementations plus
the maintenance issue. 
After my Clojure learning curve, I removed LispWorks from my desktop. I
do not see the use for it anymore. 

My 25 years of experience is not the same as "5 years" of Scheme, I
experimented more stuff in software
in various environments than the majority of today's average developer.

I adhere to justified critics when a rationale has been exposed
otherwise I call it (repeat "blablabla").
To expose some rationale it implies that you understand the subject you
are talking about. If you don't then you should
be cautious about what you state or you state it conditionally.

The above does not mean that I will not ever critic Rich's bad decisions
in the future. I do not see this likely to happen
however given its present score...

Luc



On Thu, 2009-12-17 at 19:02 -0500, Mike Meyer wrote:

> On Thu, 17 Dec 2009 10:26:03 -0800 (PST)
> Santhosh G R <kusim...@gmail.com> wrote:
> 
> > > You warn that you learn languages "just for the fun of it". I would be
> > > curious to know how much time you spent learning Clojure...
> > 
> > I have been working with Scheme for the past 5 years.
> 
> I think this is a critical element!
> 
> > Yep, I don't have 20+ years in development; neither 12+ months in
> > Clojure. My learning of Clojure has been for the past 2-3 months.
> 
> I expect that 5 years with Scheme is worth more than 20+ years with
> C/C++/Java when it comes to learning Clojure. Clojure is, after all, a
> LISP dialect. Once you've gotten your mind around the proper way to
> write programs in LISPy languages - which is a non-trivial thing -
> adopting to another one is fairly easy. I feel that mind-set coming
> back after my absence from the language as I read through the
> examples.  The other unique features of Clojure should be relatively
> straightforward to deal with once you've gotten past this.
> 
> > > So either you are a genius and went through Clojure faster than we
> > > could, learning all the features it offers, or you just skimmed the
> > > surface.
> > Neither a genius, nor did I skim through. 
> 
> Right. Just someone who was already familiar with programming in a
> LISPy environment.
> 
> > I completely miss this. As I said "I am not a clojure developer. I am
> > a programming language enthusiast and have learnt multiple languages
> > with different programming paradigms; just for the fun of it.
> > Programming languages which I know are Java, Python, Scheme, okie-
> > dokie PERL, C# which for me is Java with a different library and
> > idiom, C, C++ including the (in)famous STL, COBOL & FORTRAN purely
> > because it was in my syllabus, Javascript both in its prototype and
> > functional forms. I have tried to be unbiased; if it exists it might
> > be due to my stronger background in Java, Python, Scheme."
> 
> Given that list of languages, I'd suggest taking a look at
> Eiffel. It's imperative and statically typed, but it's a lot saner
> than the C++/C#/Java languages. It has a high mechanism for dealing
> with concurrency that make an interesting contrast to STM. It's the
> source of the function pre/post condition facilities that Clojure has.
> 
>      <mike
> -- 
> Mike Meyer <m...@mired.org>           http://www.mired.org/consulting.html
> Independent Network/Unix/Perforce consultant, email for more information.
> 
> O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
> 

-- 
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

Reply via email to