From: Eric S on
Simon <o.simon(a)gmail.com> wrote in news:a08412a9-16a6-4b11-ba4f-
fad745d4526f(a)g39g2000pri.googlegroups.com:

> One comment I find a lot when people talk about Lisp is that Lisp is
> wonderful, but CL has a lot of problems (problems I cannot understand
> due to my newbieness). Now, I don't want to learn the wrong Lisp.

The problems people perceive in CL are mostly caused by not learning it
very well. It's extremely powerful, but you have to understand a lot of
abstract ideas to really understand it in depth and be able to make the
best use of it. The majority of the people on the planet, programmers
and otherwise, are reluctant to learn anything, much less CL. It's much
easier to make excuses against CL than learn it. That's close to the
exact meaning of the metaphor "sour grapes".

Imagine a company with a million programmers, all willing and able to
learn. Would that company be well served by writing their own compilers
etc. for whatever language they use? Yes, because they have a million
programmers, the cost of doing things in house to make those programmers
more cost effective, is divided by a million. By writing their own
compilers they get more control and ability to quickly fix whatever
problems they encounter in their compilers etc.

Now imagine that same company works to make their programming language
more sophisticated, by adding new features to that language and their
compiler for it. Those new features can make those million programmers
even more productive. It's far better in a situation like that to spend
more on the compiler than to have all the programmers work around its
limitations.

CL is like that. The compiler, etc., are far more costly to develop, but
you get a lot more. And if a million programmers use them, you come out
way ahead.

But we don't need a million programmers, because CL has been under
development for decades, and was launched in a time when it got major
funding from government. So we effectively get most of the compilers
etc. as if they were free, or as if we could divide the cost among a
million programmers.

When someone invents a new programming language now, from scratch, they
don't make it anywhere near as sophisticated as CL. It would take too
much time and effort. So CL is really our only chance to be able to use
such powerful and sophisticated programming tools.

So some people love CL and some people hate it. They see the same thing
from different points of view. Some say "whoa, treasure beyond my
wildest dreams", and others say "whoa, what a mess, let's start over from
scratch and invent something cleaner."

Those who start over from scratch to invent something cleaner but equally
powerful, spend years at it, sometimes their whole lives, and usually end
up making their own mess, much worse than CL, and less powerful.
From: Tamas K Papp on
On Sat, 12 Jun 2010 11:06:19 -0700, Simon wrote:

> I don't remember all the comments I read about some-great-Lisp vs. CL,
> but one easy to locate is Paul Graham's
> http://www.paulgraham.com/popular.html . I quote from section 4
> Hackability:
>
> « Historically, Lisp has been good at letting hackers have their way.
> The political correctness of Common Lisp is an aberration. Early Lisps
> let you get your hands on everything. »
>
> « A really good language should be both clean and dirty: cleanly
> designed, with a small core of well understood and highly orthogonal
> operators, but dirty in the sense that it lets hackers have their way
> with it. C is like this. So were the early Lisps. »

I think that you can safely ignore the above statements. They are
very vague and ideological. "Political correctness"? What does he
even mean? I only wish that he used "abomination" instead of
"aberration". The former sounds so much more theological.

PG wrote two books on CL, so he is certainly very knowledgeable about
the language. But lately, he started designing his own dialect,
called Arc. Arc has a lot of "principles" like the above, but I don't
think that many people consider it very innovative. Last time I
checked, I got the impression that one can implement the whole things
as a thin library layered on CL/Scheme. I fail to see what the fuss
is about, and why this necessitates a new language. But apparently, it
is enough to make CL evil now :-)

Best,

Tamas
From: Pascal J. Bourguignon on
Giovanni Gigante <giov(a)cidoc.iuav.it> writes:

> Simon wrote:
>> I'm deeply interested in Lisp. I'm learning it through Peter Seibel's
>> PCL.
>>
>> One comment I find a lot when people talk about Lisp is that Lisp is
>> wonderful, but CL has a lot of problems (problems I cannot understand
>> due to my newbieness). Now, I don't want to learn the wrong Lisp.
>>
>> What do people mean by Lisp in this context? Is it Lisp 1, Lisp 1.5,
>> the particular dialect they used and fall in love with?
>>
>> If this unidentified Lisp is so great, why don't they use it and avoid
>> all the pitfalls of CL?
>
>
> From a still-partly-newbie:
>
> There is no Lisp per se, nor "unidentified lisp". Lisp is a family of
> languages.
>
> The most evident feature of CL is that it's a very big language. This
> means that it's either "bloated"/"unelegant" or
> "feature-rich"/"industrial strength", depending on the point of view.

This is wrong.

In 1984-1986, when Common Lisp has been standardized, the standard
document was big, compared to other programming languages of that
time. But if you compared apples-to-apples, and oranges-to-oranges,
Common Lisp is actually as small a language as any other.

The difference, is that at that time, the specifications of Scheme,
Pascal, or C or any similar languages took only about 50 pages,
because they specified only the core of the language, while the
Common Lisp standard included the standard library.

If you add the specifications of the SRFIs (for scheme), of any set of
'standard' library for Pascal or C (eg POSIX.1-2001), you will soon
get document sizes much bigger than the ANSI Common Lisp standard
document.


And nowadays, you would have to include all the network, graphic, GUI,
web, xml, database access and whatever other "essential" library in
your standard, then the CL language starts to looks like a microb of a
language compared to monsters such as perl (including CPAN), Ruby
(including Gems), python (including whatever they have) and even
Haskell (including his cabale stuff which is so big they have to
specifically address the problem of "too many libraries").



Programming languages are all small, on the same order of magnitude.

What's big, and what's takes ten years to master, is their ecosystems,
their libraries (whether they're documented in a "standard document"
or are just de-facto "standards"), and their cultures.



> Another thing: CL is a "lisp-2", meaning that there are separate
> namespaces for functions and values. Instead, Scheme is a
> "lisp-1". There are advantages and disadvantages, none of which should
> you care at the moment.
>
> "Lisp 1" (without the hyphen) and "lisp 1.5", instead, refer to very
> early designs, of antiquarian interest only.

Actually, that would be "LISP I" and "LISP 1.5". At that time, men
were men, women were women, it was LISP, and no confusion with a lisp
was possible.


> There is no wrong lisp to learn. All lisps are right. Stay with CL,
> it's fine.
>
> gg

--
__Pascal Bourguignon__ http://www.informatimago.com/
From: Pascal Costanza on
On 12/06/2010 18:36, Simon wrote:
> I'm deeply interested in Lisp. I'm learning it through Peter Seibel's
> PCL.
>
> One comment I find a lot when people talk about Lisp is that Lisp is
> wonderful, but CL has a lot of problems (problems I cannot understand
> due to my newbieness). Now, I don't want to learn the wrong Lisp.
>
> What do people mean by Lisp in this context? Is it Lisp 1, Lisp 1.5,
> the particular dialect they used and fall in love with?
>
> If this unidentified Lisp is so great, why don't they use it and avoid
> all the pitfalls of CL?

The claim that Common Lisp has a lot of pitfalls is highly exaggerated.
What is actually the case is that Lispers either accidentally used one
particular dialect, and then may have difficulties moving to some of the
other ones, or they have studied several different dialects, and chose
one or more of them as their preferred dialects, and can give reasons
for their choice, which are sometimes good, and sometimes not so good.
Languages are never designed in a vacuum, and unless they are just very
minimal academic exercises, have to make compromises and trade offs in
order to resolve different, sometimes conflicting goals. Different users
have different preferences with regard to such goals, and so they also
have different preferences with regard to which dialect with a certain
set of trade offs they prefer.

The most commonly used dialects are Scheme and Common Lisp (and,
depending on your perspective, Emacs Lisp). In recent years, Clojure
also gained some popularity, but whether it will become one of the
long-lasting Lisp dialects remains to be seen (I am skeptical). As far
as I can tell, the applicability of Emacs Lisp is limited, so you are
basically confronted with choosing between Scheme, Common Lisp and
Clojure, of which I would describe Scheme and Common Lisp as being the
most archetypal dialects. My strong recommendation is to take a look at
both of these, since they make very different trade offs and have some
fundamentally different design decisions, and see which of them
resonates best with your style of programming. You should then spend
some time with that Lisp dialect, to get some proficiency in it. After
some time, you will better understand certain aspects of that dialect,
which will then help you to better understand the other dialects as
well, once you decide to take a second look at them. By then, you will
probably be able to make a better decision which dialect you will mostly
use in the long run.

Lisp 1.5 is an ancient dialect for which you will hardly find any
implementations anymore. The term "Lisp 1" probably doesn't mean
anything, at least not the way you seem to use it. (There exist the term
"Lisp-1", but that's a technical term that doesn't refer to a Lisp
dialect, but to something completely different.)

Even if you find implementations of Interlisp or other similar Lisp
dialects, they are mostly interesting for historians. For practical
purposes, the above mentioned Lisp dialects are the most important ones.


Pascal

--
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: Pascal J. Bourguignon on
Simon <o.simon(a)gmail.com> writes:

> On Jun 13, 2:29�am, Tim Bradshaw <t...(a)tfeb.org> wrote:
>> On 2010-06-12 17:36:50 +0100, Simon said:
>>
>>
>>
>> > One comment I find a lot when people talk about Lisp is that Lisp is
>> > wonderful, but CL has a lot of problems (problems I cannot understand
>> > due to my newbieness). Now, I don't want to learn the wrong Lisp.
>>
>> I think what you are obsreving is that Lisp people like to moan, and
>> complaining about the indequacies of various dialects & implementations
>> is a very common way they do this. �The reasons for this are lost in
>> time - however you'll fairly quickly realise that people are often
>> complaining vigorously to avoid actually getting stuff done, often
>> because they don't really have much idea what to do: obviously if you
>> can persuade yourself that it's *Lisp* preventing you from writing the
>> Great American Compiler, then you don't have to face the fact that, in
>> fact, it's you.
>>
>> > If this unidentified Lisp is so great, why don't they use it and avoid
>> > all the pitfalls of CL?
>>
>> There are two very common patterns you'll see. �Firstly is the CL/other
>> lisp-related-language thing, where adherents of the other sect spend a
>> huge amount of time being rude about CL. �The other is "once upon a
>> time, we had <implementation> which was perfect, but now it is gone,
>> nothing will ever be that good again, the heroes have ridden into the
>> west it is the end of an age mutter". �What they never say was that
>> <implementation> was used by 6 people ever, was written in assembler on
>> a machine which could address some tens of k and executed a few hundred
>> thousand instructions a second, didn't have a working garbage
>> collector, had only upper-case characters, used octal, had no string
>> data type, no numbers greater than 48.6, and in fact on closeer
>> investigation turns out never to have existed at all.
>>
>> CL is just fine.
>
> Thank you all for your answers. I'll continue learning CL and then see
> from there where to go next.
>
> I don't remember all the comments I read about some-great-Lisp vs. CL,
> but one easy to locate is Paul Graham's http://www.paulgraham.com/popular.html
> . I quote from section 4 Hackability:
>
> � Historically, Lisp has been good at letting hackers have their way.
> The political correctness of Common Lisp is an aberration. Early Lisps
> let you get your hands on everything. �


You must also remember that the years 1980 where the years when
software was enslaved by proprietary software producers like Microsoft
(but the movement was initiated by the US government prohibing IBM to
bundle its software with its hardware, and thus susciting the
development of proprietary software.

In this context, access to the sources of a Common Lisp
implementation was unthinkable.

On the other hand lisp systems developed in the years 1970 gave source
access to the whole system, and you could modify any function at
run-time, even something deep in the "kernel". Well, with a lot of
care, of course.

On the other hand, it's true that the CL standard specifies things in
a way that specifically allows the implementations to take shortcuts
in order to provide easily an efficient implementation. This makes it
indeed possible to develop an implementation of CL in which it is not
possible to modify an internal function without breaking the system.

That said, there is always the possibility in lisp to implement your
"changes" in the guise of a metalinguistic abstracion (ie implementing
your lisp over the current lisp) on one hand, and on the other, most
implementations let you modify things in the CL package (at your risks
and perils), and some even offer compilation time options to make it
even easier to do so (eg sbcl :sb-fluid feature).

Moreover, nowadays, whatever the problem you may have with a program,
you can get the sources and modify it, so if anything is not of your
liking in a Common Lisp implementation (or any other programming
language or program), wget, emacs, and five minutes is all you need.

So today you can effectively get your hands on everything, and this
criticism is not in order anymore, if it was ever.



> � A really good language should be both clean and dirty: cleanly
> designed, with a small core of well understood and highly orthogonal
> operators, but dirty in the sense that it lets hackers have their way
> with it. C is like this. So were the early Lisps. �


--
__Pascal Bourguignon__ http://www.informatimago.com/