From: ·········@gmail.com
Subject: Handling Complexity Using Lisp
Date: 
Message-ID: <1158875751.616164.278930@m7g2000cwm.googlegroups.com>
Hi,

Please have a look at this:
http://programming.reddit.com/info/jcio/comments/cjd5e
(comment thread in particular)

Would you like to add anything to it? 

Thanks!

From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.21.23.10.32.938379@gmail.com>
On Thu, 21 Sep 2006 14:55:51 -0700, ·········@gmail.com wrote:

> Hi,
> 
> Please have a look at this:
> http://programming.reddit.com/info/jcio/comments/cjd5e (comment thread in
> particular)
> 
> Would you like to add anything to it?

Naw, not really. 

Why? Because most of them seem like a bunch of "kids" thinking all the
wrong things about Lisp; just as I did.

The difference is that I knew that "things suck - something is very wrong
somewhere", and I was therefore willing to give Lisp a _serious_ and
_proper_ try. These people are not there yet.

So there you have it; these people do not hate their languages enough
yet. Trying to show them what is good and open their minds about Lisp is
/almost impossible/ if they cannot even see problems and imagine truly
general, lasting solutions to these problems, somehow - in the language
they are using now.

"No, this fix is not possible because it would break .. blablabla"
...Dumbass; use your imagination! :D

Sometimes it seems like it's the more-or-less complete newbies who are
asking all the right questions about a language. They have an open mind,
and when they see a problem and a solution that sucks they have the
ability to imagine a better solution and ask "why not this?". This might
be because they lack the knowledge to see that "this fix is not possible
because it would break ...".

Thinking about templates in C++, I remember asking myself again and again
"why on earth can I not do this? there is absolutely _no_ reason why I
cannot do this .. this SUCKS - I have to use thing cumbersome and nasty
hack instead!". I see newbies using C++-templates doing or saying the same
thing now. 

I realized that the problem was something fundamental deep inside C++.
"If they fix this; I will find something else later either deeper on this
same 'branch' or some other branch/feature of C++/templates, hm - so what
is needed is a fundamental and large change in how things are done."

You know what? I'm in luck - because Common Lisp is that change and it
has solved many of these problems once and for all using things like
dynamic typing and macros. In the end it doesn't really matter that much;
the world is slowly moving towards Lisp whatever "they" might think. 

..I'm just there already..

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1158945317.103545.326780@i42g2000cwa.googlegroups.com>
Lars Rune Nøstdal ha escrito:

> You know what? I'm in luck - because Common Lisp is that change and it
> has solved many of these problems once and for all using things like
> dynamic typing and macros. In the end it doesn't really matter that much;
> the world is slowly moving towards Lisp whatever "they" might think.

I don't think this is the point.
The point is that macros is a totally diferent technology which adds
lot of complication to the programmers mind, in the same sense that C++
templates does. Yes, it is still better than C++ templates, but it is
not so nice. In my opinion this is due to:

1) Everytime a new semantic is invented via macros, you have to learn
it. This is very different from C, Java, Python, etc, in which a
program always uses a well defined and understable semantic, regardless
of the algorithm it implements. Take for example the different
semantics which are implemented in CL, like loop, format, setf, generic
functions, and more. And several external libraries do invent different
semantics which you are forced to get used to if you need to use them.
2) Mixes concepts about compilation and runtime. Sometimes it is not
clear the limit between them. A lot of people (specially newbies) might
have a lot of trouble trying to understand when an expresion is
executed inside the compiler or at runtime.
3) There are several ways of implementing a single problem, and you can
even invent one more way. This is the same problem as Perl has, but on
stereoids. This is clearly an advantage for the programmer who wants to
develop a particular solution "from scratch", but manteiners must do an
extra effort to acomodate to it. The lack of this feature (mis-feature
for others) is what make Python and Java to success. In those languages
it is very easy to read other's code because the semantic is almost
always predecible and uniformal.
4) Because of the above points, it is not so nice to develop "glue"
applications in Lisp, in which you have to take several different
libraries and develop a single application based on those ones.

And I love Lisp, but I don't think it is apropiate for every user and
every problem.
From: Daniel Trstenjak
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <20060923095236.GA7202@linux>
Hello Javier,

On Fri, Sep 22, 2006 at 10:15:17AM -0700, Javier wrote:
> 1) Everytime a new semantic is invented via macros, you have to learn
> it. This is very different from C, Java, Python, etc, in which a
> program always uses a well defined and understable semantic, regardless
> of the algorithm it implements. Take for example the different
> semantics which are implemented in CL, like loop, format, setf, generic
> functions, and more. And several external libraries do invent different
> semantics which you are forced to get used to if you need to use them.

I really think that's an illusion. You always have to get used to
new things. In common languages these new things are only classes,
methods and functions. But this doesn't mean they are easier to learn,
you are just used that new things are on this level.
Some things can be expressed clearer with a macro, and clearer things
a easier to learn.

> 3) There are several ways of implementing a single problem, and you can
> even invent one more way. This is the same problem as Perl has, but on
> stereoids. This is clearly an advantage for the programmer who wants to
> develop a particular solution "from scratch", but manteiners must do an
> extra effort to acomodate to it. The lack of this feature (mis-feature
> for others) is what make Python and Java to success. In those languages
> it is very easy to read other's code because the semantic is almost
> always predecible and uniformal.

If you have more ways for expression, it's easier to find a clear
expression for a problem.


Regards,
Daniel Trstenjak
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.23.11.32.00.709739@gmail.com>
On Fri, 22 Sep 2006 10:15:17 -0700, Javier wrote:

> 
> Lars Rune Nøstdal ha escrito:
> 
>> You know what? I'm in luck - because Common Lisp is that change and it
>> has solved many of these problems once and for all using things like
>> dynamic typing and macros. In the end it doesn't really matter that
>> much; the world is slowly moving towards Lisp whatever "they" might
>> think.
> 
> I don't think this is the point.
> The point is that macros is a totally different technology which adds
> lot of complication to the programmers mind, in the same sense that C++
> templates does. Yes, it is still better than C++ templates, but it is
> not so nice. In my opinion this is due to:
..

No-no; this is wrong - and I think it is another somewhat common fallacy.

C++ templates are there to solve very real problems beyond the "hello
world"-type-of problems! They just totaly fail at solving them in a
larger scale, while Lisp-macros do not.

Let's talk about `goto' instead. It is a feature, just like `defmacro' is
a feature. I'll argue that just about _every single feature_ of a language
can be misused if you want to. Both library-code and application-code can
be written in a cryptic and unmaintainable way using almost any feature in
a bad way. _More_ power simply means you have the means to do either _more
good_, or _more evil_. When cooperating with others this makes this
somewhat of a trust-issue.

I'm also gonna say that you do not need to understand how things work on
the inside to use them; and you really do not want to think about things
on the inside either. Libraries and language-features are all about
solving problems you do not want to think about how to solve right now.
You really just want a good interface to send your arguments to and get
your responses from.

..heck, one of the many reasons C++-templates fail is exacly because they
cause non-relevant things inside the implementation to bubble up to the
surface; the very thing the implementator of the library/tool is trying to
escape from when doing application-code..

The difference is that in Lisp you and others can add new
language-features that makes solving _new kinds of problems_ "they"
originally did not think about much more easy and clear, while in other
languages you have to wait for the language-maintainers ("them") to do
this. 

..this is simply a different kind of tool that can create create new
tools in a way that other languages lack..

I guess you are saying that it is _too_ easy to add new tools; that this
is a kind of social or "political" problem - or a problem with moderation
or something. But I think it is like the `goto'; it either makes things
way more clear - or if misused makes a real mess out of things. More power
means greater responsibilities or more possible "paths" to think about,
and I can agree with that - but it is not a misfeature because if the
right "path" is chosen it creates a really good tool for solving new kinds
of problems. Your time is spent wisely on learning how to use these really
good tools that makes expressing or communicating your problem more clear.

The different semantics you mention are all examples of really good
tools. But you are not forced to understand how they work on the inside.
You can even ignore some of them completely and use other features or
tools instead. If you do not like difference between languages or tools in
general then what is the point in learning a new language or tool - or
something new at all? It just becomes more of the same; possibly with just
a little difference in syntax, but still lacking that "newnes" or "point".
There has to be a point, and the point is that if it is a "really good
tool" it is probably worth your invested time learning how to use by a
multitude. 

..so maybe it is more of a "trust"-issue on your side?..

What you say in point #2 is just more of the same bullshit (i'm sorry).
Newbies always have problems learning something new; that is to be
expected because they are newbies trying to learn something _new_. There
will _always_ be unexpected things and misunderstandings if you are trying
to do something that is _truly new_ and not just more of the same old crap!

..well, maybe I'm just saying "no, it isn't!" while you are saying "yes,
it is!"; this is not a misfeature at all IMHO - it is quite the opposite..

[/end-drunken-rant] ... :}

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159032983.548028.216160@h48g2000cwc.googlegroups.com>
Well, I'm going to resume your answer and make some comentaries.

Lars Rune Nøstdal ha escrito:

> ..this is simply a different kind of tool that can create create new
> tools in a way that other languages lack..

Well, you are asuming that Lisp can create tools, and other languages
can't. This is wrong in the sense that any language (even Basic) is
able to create libraries.
Ok, I know what are you going to say: Lisp do it different, in another
way. But let examine if that different way is really so much
productive, or the overhead to have to understand it really worth it.
I know, I know, you say that a newbie will always complain about
difficult things, but, how much is it needed to fully understand CL and
all the needed extra-tools compared with, for example, Java or Python?
My impression is that you can probably master in Java in about 2 or 3
years of continual use, starting from scratch, but you are probably
going to need more than 5 to 8 years to be an expert in Lisp or C++ .
Why Java succeded? I think that not only because of marketing
campaigns, but also because it is simpler than C++.  I can't imagine
Java being in the point it is actually if its syntax would be like Lisp
or Scheme (with macros).
The fact is that, today, C++ is only used for very high performance
applications like games or system programming. Even in this area,
people are coming back to C or moving to ObjetiveC, C# and and others.
just because their gained simplicity. People are inventing languages
like D, and they are doing so because they want to do things more
easly.These are examples that fullfeatured languages are not always
apropiate.
And the most important thing: I feel that if you need to program in
something, but you don't like very much to do it, the simpler it is,
the better is for you. Most programmers out there don't feel that
programming is so nice. If they have to do the extra-effort to learn
Lisp, they are probably not going to accept it and are going to move to
a simpler language.

Another point I haven't read any comment from you is the way in which
libraries can glue together. This is very important. Sometimes, in
Lisp, you have to deal with different paradigms using one or another
library, and you are forced to mix them up. They are not consistent in
the way they work. C or Java might be much less elegant, but they are
predecible, and their libraries ussually uses the same consistent form.

>
> I guess you are saying that it is _too_ easy to add new tools; that this
> is a kind of social or "political" problem - or a problem with moderation
> or something.

Not exactly, what I'm saying is that it is easy for somebody mastered
in Lisp to add new tools to the language, but it requires an extra
effort for manteiners and users.
What I say is that Lisp is nice for complex projects starting from
scratch, but not so good at producing small to medium projects based on
other tools.
It is a fact that lot of people here like to do things from scratch.
Who didn't, anytime in his Lisp programming life, ever tryed to make
his own object system?

> ..well, maybe I'm just saying "no, it isn't!" while you are saying "yes,
> it is!"; this is not a misfeature at all IMHO - it is quite the opposite..

Facts are facts anyway. If Lisp hasn't succeded so much is because
several reasons. Our opinions about that facts are like everybody
assholes: everyone has one. :)
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.23.19.58.26.541095@gmail.com>
On Sat, 23 Sep 2006 10:36:23 -0700, Javier wrote:

> Well, I'm going to resume your answer and make some comentaries.
> 
> Lars Rune Nøstdal ha escrito:
> 
>> ..this is simply a different kind of tool that can create create new
>> tools in a way that other languages lack..
> 
> Well, you are assuming that Lisp can create tools, and other languages
> can't.

You need to learn much more about Lisp before you say something more ..
really ..  you do.

..but I can try again; this time with an example .. if you break the
example down and discredit it somehow I can come up with many more
that will become harder and harder to discredit..

Take for instance C. Now think about what you could do if you where
missing the `while'-statement and wanted to implement this "tool" using
C. I think you will find that it is very hard, or even impossible. In
Lisp, you can create a `while'-statement in about 2-3 lines of trivial
macro-code!

If this Cish-language already had `for' you can now choose between
`while' and `for' - and this is _good_ because sometimes `while' is much
more easier and clearer. How can you say that this is a bad thing? I'm
sorry, but that really does not make sense at all ..

> Ok, I know what are you going to say: Lisp do it different, in another
> way. But let examine if that different way is really so much productive,
> or the overhead to have to understand it really worth it. I know, I know,
> you say that a newbie will always complain about difficult things, but,
> how much is it needed to fully understand CL and all the needed
> extra-tools compared with, for example, Java or Python? My impression is
> that you can probably master in Java in about 2 or 3 years of continual
> use, starting from scratch, but you are probably going to need more than 5
> to 8 years to be an expert in Lisp or C++ . Why Java succeeded?

Define success? I do not think Java has succeeded at all; it is a messy
and poor language and I do not like to use it at all - and I very rarely
(I think I can say never now) do after discovering Lisp.

> I think that not only because of marketing campaigns, but also because it is
> simpler than C++.  

Yes, and Lisp is even simpler than Java. So what is your argument?

> I can't imagine Java being in the point it is actually
> if its syntax would be like Lisp or Scheme (with macros).

Lisp-syntax is much clearer and better than Java's syntax. The problem is again with you. You have been using languages in another family than Lisp for too long - and you now think there is something wrong with the syntax of Lisp ("yes, that must be it!") because you find it is harder to learn Lisp than say Java after you've done C++. This is of course a wrong state of mind in every way. Of course Lisp will be harder; it is in a different family than the two almost similar languages you already know! This is not to say that being different is a bad thing. When almost everything else sucks (you'll realize this some day) being different is a _good thing_!

> The fact is that, today, C++ is only used for very high performance
> applications like games or system programming. Even in this area, people
> are coming back to C or moving to ObjetiveC, C# and and others. just
> because their gained simplicity. People are inventing languages like D,
> and they are doing so because they want to do things more easly.These
> are examples that fullfeatured languages are not always appropriate.

You really do not see or understand what is going on here at all. D has
_more_ features than C++. Lisp has _more_ features than both C++, D and
Java. You wanna know a _real_ fact? The real fact is that languages like
C# and D are signs that things are moving towards Lisp. They are still
miles away; but Lisp _is_ the direction things are headed.

Lisp is simpler _and_ it has more features _at the same time_! Are you
not curious as of how this is possible? Do you not trust me when I say
this? If you wanna know, the difference between you and me is that we both
have done C, C++ and languages from that family - but I am the only one of
us who know Lisp. You should study Lisp too before you come back. When you
understand Lisp you will come to the same conclusions as I have - I can
guarantee it. This is _not_ a matter of taste or anything like that; I am
a practical person and I use Lisp for real life work and I solve both
simple and hard problems of a broad specter of topics using Lisp.

> And the most important thing: I feel that if you need to program in
> something, but you don't like very much to do it, the simpler it is, the
> better is for you. Most programmers out there don't feel that programming
> is so nice. If they have to do the extra-effort to learn Lisp, they are
> probably not going to accept it and are going to move to a simpler
> language.

You could say the same thing about a hard-to-learn library in this simpler
language and generalize this so you view both the language and library as
"tools". This proves that your statement is a fallacy and it is the wrong
thing to do on all levels I can think of. The only possible exception is
when you are working on something that is already written in another
language and issues related to this.

The extra effort is so you can spend _less_ time doing the non-nice parts
of the programming .. is this not blindingly obvious? I am actually
disappointed :( ..lol..

Your argument does not make sense. If you say something like this again
I'm just gonna have to ignore you because I'm not going to discuss this
with someone that does not understand such a simple thing. It is such a
stupid thing to say that I almost cannot comprehend how someone old enough
(or whatever) to find `comp.lang.lisp' can say something like that. What
you are basically saying is: "Since I do not like potatoes for dinner I'll
eat 3 tons of it now and have chocolate for dinner later - instead of
eating the chocolate now and have 3 potatoes for dinner later." Do you
understand? The good parts of programming is the chocolate, while the bad
parts are the potatoes - now what do you choose? The red pill or the blue
pill? ( http://bc.tech.coop/blog/060811.html )

> Another point I haven't read any comment from you is the way in which
> libraries can glue together. This is very important. Sometimes, in Lisp,
> you have to deal with different paradigms using one or another library,
> and you are forced to mix them up. They are not consistent in the way they
> work. C or Java might be much less elegant, but they are predictable,
> and their libraries usually uses the same consistent form.

The reason I did not comment this is because I have no idea what you are
talking about. I use a ton of different Lisp-libraries. Some of these
libraries are dependent on other libraries and so on.

This again shows that you really need to study Lisp before you come with
fallacies like you do here.

>> I guess you are saying that it is _too_ easy to add new tools; that this
>> is a kind of social or "political" problem - or a problem with
>> moderation or something.
> 
> Not exactly, what I'm saying is that it is easy for somebody mastered in
> Lisp to add new tools to the language, but it requires an extra effort for
> maintainers and users.

No it does not. I do not know what I can say besides just "no" here. I
see nothing concrete in your statement; it is just an empty opinion with
nothing concrete to hold on to.

> What I say is that Lisp is nice for complex projects starting from
> scratch, but not so good at producing small to medium projects based on
> other tools.
> It is a fact that lot of people here like to do things from scratch. Who
> didn't, anytime in his Lisp programming life, ever tryed to make his own
> object system?

I've never done that. I'm happy with what is already out there.

I've done other things from scratch; but I do that in other languages
too. Both things are easier and more fun in Lisp; it is easier to do
things from scratch in Lisp, and it is easier not to do things from
scratch in Lisp. (hey, what sort of comment do you expect?)

> 
>> ..well, maybe I'm just saying "no, it isn't!" while you are saying "yes,
>> it is!"; this is not a misfeature at all IMHO - it is quite the
>> opposite..
> 
> Facts are facts anyway. If Lisp hasn't succeeded so much is because
> several reasons.

Lisp has succeeded and is succeeding in every single way I can imagine.
I've done programming since I was a kid, and it is the best language I've
seen _ever_.

Britney Spears sells more copies of her albums than artists that are miles
better than her. That is a fact. Now apply this to your statement about
number of users and it'll redefine your view of what success means or
widen your understanding of it.

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159110272.155895.90700@h48g2000cwc.googlegroups.com>
Lars Rune Nøstdal ha escrito:

> Lisp is simpler _and_ it has more features _at the same time_!

Please don't make me laught. Lisp is _not_ simpler than C, D, Java,
Python and more. Just take the example of any advanced programming
techniques book (for example On Lisp) and compare it with whatever you
want in any of the other languages. It is roughtly clear that Lisp can
be (and it is most of the time) a very complex language, despite of its
simple syntax.
A simple sintax doesn't mean that it is simpler. If not, take for
example assembler, its syntax is probably easier to learn than Lisp,
but unfortunaly it is a very difficult language to manage with.

> It is such a
> stupid thing to say that I almost cannot comprehend how someone old enough
> (or whatever) to find `comp.lang.lisp' can say something like that.

You cannot comprehend other opinons because your agresiveness blinds
you. You actually think that your opinions are facts, and aren't able
to discuss to someone else without starting to personally attack him.
Some other people here suffer the same illness.

> Britney Spears sells more copies of her albums than artists that are miles
> better than her. That is a fact. Now apply this to your statement about
> number of users and it'll redefine your view of what success means or
> widen your understanding of it.

Success can be measured taking in count several variables. Popularity
is one of them. It is in fact an important one. It is not the only. But
it is there.
Britney Spears has succed. You may think that her music is a shit, but
it is only your opinion. What you cannot say (if you are mimimaly
tolerant and compasive) is that her music is worse than other ones just
because you think so. You may say that _in your opinion_  her work is
worse, and can discuss this tolerantly and pacifically. But the fact is
that, despite what you think, she has clearly succed.

And I'm still thinking that I like very much Lisp, but I'm not going to
be so much elitist as thinking that the rest of the world is wrong, nor
trying to disqualify other's work for such.
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.24.16.06.00.544192@gmail.com>
On Sun, 24 Sep 2006 08:04:32 -0700, Javier wrote:

> Lars Rune Nøstdal ha escrito:
> 
>> Lisp is simpler _and_ it has more features _at the same time_!
> 
> Please don't make me laught. Lisp is _not_ simpler than C, D, Java, Python
> and more. Just take the example of any advanced programming techniques
> book (for example On Lisp) and compare it with whatever you want in any of
> the other languages. It is roughtly clear that Lisp can be (and it is most
> of the time) a very complex language, despite of its simple syntax.
> A simple sintax doesn't mean that it is simpler. If not, take for example
> assembler, its syntax is probably easier to learn than Lisp, but
> unfortunaly it is a very difficult language to manage with.

You've got to remember what is going on in that book. If you tried the
same in almost any other language it would be much harder and much more
complex. Try to implement some of that stuff in C or Java; i dare you. :)

No, Lisp _is_ simpler than C, D, Java, Python and more.

>> It is such a stupid thing to say that I almost cannot comprehend how
>> someone old enough (or whatever) to find `comp.lang.lisp' can say
>> something like that.
> 
> You cannot comprehend other opinons because your agresiveness blinds you.

You see - I've had the same opinions as you do - so I can comprehend them;
don't worry about that.

>> Britney Spears sells more copies of her albums than artists that are
>> miles better than her. That is a fact. Now apply this to your statement
>> about number of users and it'll redefine your view of what success
>> means or widen your understanding of it.
> 
> Success can be measured taking in count several variables. Popularity is
> one of them. It is in fact an important one. It is not the only. But it
> is there.
> Britney Spears has succed. You may think that her music is a shit, but
> it is only your opinion. What you cannot say (if you are mimimaly
> tolerant and compasive) is that her music is worse than other ones just
> because you think so. You may say that _in your opinion_  her work is
> worse, and can discuss this tolerantly and pacifically. But the fact is
> that, despite what you think, she has clearly succed.

You need to remember that you are not buying something that is pre-made
for you; you are choosing what to use for solving your problems. I do
not want to use Britney Spears to write my code. (lol - this is getting
kind of stupid :))

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159118076.002169.316560@i3g2000cwc.googlegroups.com>
Lars Rune Nøstdal ha escrito:

> You've got to remember what is going on in that book. If you tried the
> same in almost any other language it would be much harder and much more
> complex. Try to implement some of that stuff in C or Java; i dare you. :)

I think you are right, but it is also true that most of the things
appearing in On Lisp only has sense on Lisp (as its tittle suggest :-)
).


> You see - I've had the same opinions as you do - so I can comprehend them;
> don't worry about that.

Ok let the time pass.

> You need to remember that you are not buying something that is pre-made
> for you; you are choosing what to use for solving your problems. I do
> not want to use Britney Spears to write my code. (lol - this is getting
> kind of stupid :))

You still don't know how well is she writing Lisp code. Why don't you
ask her before forming opinions? ;-)
From: Ari Johnson
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <m2d59lqhxb.fsf@hermes.theari.com>
"Javier" <·······@gmail.com> writes:

> Lars Rune N�stdal ha escrito:
>
>> You've got to remember what is going on in that book. If you tried the
>> same in almost any other language it would be much harder and much more
>> complex. Try to implement some of that stuff in C or Java; i dare you. :)
>
> I think you are right, but it is also true that most of the things
> appearing in On Lisp only has sense on Lisp (as its tittle suggest :-)
> ).

Hello, straw man.  I think we can agree that a Prolog and an OOP
language extension make as much sense in C as they do in Lisp.  I
challenge you to write a 33-page book chapter that can be understood
by anyone with basic C experience and, in it, teach the reader how to
add object orientation to C.  Then do the same thing to implement
Prolog in C - you have 27 pages.

The point is that many things that are difficult in C are easy in
Lisp.  Then again, some things that are difficult in Lisp are easy in
C.  Pick the right language for the task.  However, for complicated
problem-solving, Lisp is often the right language.  If you aren't
solving problems but just want to throw out some formulaic code, then
it's probably not worth learning Lisp.
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159123488.379413.163740@d34g2000cwd.googlegroups.com>
Ari Johnson ha escrito:

> > I think you are right, but it is also true that most of the things
> > appearing in On Lisp only has sense on Lisp (as its tittle suggest :-)
> > ).
>
> Hello, straw man.  I think we can agree that a Prolog and an OOP
> language extension make as much sense in C as they do in Lisp.

If a prolog interpreter, I agree. But it is not so much difficult to
implement it in C if you've got the same tools. On C you've got Yacc
which is somewhat equivalent to READ and EVAL on Lisp for this issue.
If an OOP language extension, read on:

>  I
> challenge you to write a 33-page book chapter that can be understood
> by anyone with basic C experience and, in it, teach the reader how to
> add object orientation to C.  Then do the same thing to implement
> Prolog in C - you have 27 pages.

I teach the reader how to add object orientation to C in one single
word: C++. However, if the reader do not want to learn C++ (it is
understable), I have a little manual of an already working object
framework for C:

http://developer.gnome.org/doc/API/2.0/gobject/index.html

I don't know if it is 33 pages long, but should not be very far. :-)
(And you can get it even simpler if you do it from scratch.)

And of course, for other languages, classes are there out of the box,
so I don't know why somebody would ever want to do such a thing.

> The point is that many things that are difficult in C are easy in
> Lisp.

I agree.

> Then again, some things that are difficult in Lisp are easy in
> C.

I agree.

>  Pick the right language for the task.

Exactly!

>  However, for complicated
> problem-solving, Lisp is often the right language.

Bingo!
But I hope that you agree with me that Lisp is not so easy as many
people stand for!

> If you aren't
> solving problems but just want to throw out some formulaic code, then
> it's probably not worth learning Lisp.

Sure! And that's because most programmers aren't! :-)

Elsewhere, I chose Lisp because I like it. Not everybody is so lucky.
:-)
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.24.18.47.39.704839@gmail.com>
On Sun, 24 Sep 2006 11:44:48 -0700, Javier wrote:

> 
> Ari Johnson ha escrito:
> 
>> > I think you are right, but it is also true that most of the things
>> > appearing in On Lisp only has sense on Lisp (as its tittle suggest :-)
>> > ).
>>
>> Hello, straw man.  I think we can agree that a Prolog and an OOP
>> language extension make as much sense in C as they do in Lisp.
> 
> If a prolog interpreter, I agree. But it is not so much difficult to
> implement it in C if you've got the same tools. On C you've got Yacc which
> is somewhat equivalent to READ and EVAL on Lisp for this issue. If an OOP
> language extension, read on:
> 
>>  I
>> challenge you to write a 33-page book chapter that can be understood by
>> anyone with basic C experience and, in it, teach the reader how to add
>> object orientation to C.  Then do the same thing to implement Prolog in
>> C - you have 27 pages.
> 
> I teach the reader how to add object orientation to C in one single word:
> C++. However, if the reader do not want to learn C++ (it is understable),
> I have a little manual of an already working object framework for C:
> 
> http://developer.gnome.org/doc/API/2.0/gobject/index.html
> 
> I don't know if it is 33 pages long, but should not be very far. :-) (And
> you can get it even simpler if you do it from scratch.)
> 
> And of course, for other languages, classes are there out of the box, so I
> don't know why somebody would ever want to do such a thing.

..and Common Lisp has CLOS; what is your point? O_o

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159130801.778023.318230@b28g2000cwb.googlegroups.com>
Lars Rune Nøstdal ha escrito:


> ..and Common Lisp has CLOS; what is your point? O_o

Don't like it. Let me write my own. ;-)
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.24.21.30.00.438261@gmail.com>
On Sun, 24 Sep 2006 13:46:41 -0700, Javier wrote:

> 
> Lars Rune Nøstdal ha escrito:
> 
> 
>> ..and Common Lisp has CLOS; what is your point? O_o
> 
> Don't like it. Let me write my own. ;-)

I'm not interested in continuing this discussion because you seem to fail
to understand what is going on on purpose.

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159150332.262582.204500@i3g2000cwc.googlegroups.com>
Lars Rune Nøstdal ha escrito:

> >> ..and Common Lisp has CLOS; what is your point? O_o
> >
> > Don't like it. Let me write my own. ;-)
>
> I'm not interested in continuing this discussion because you seem to fail
> to understand what is going on on purpose.

It was an irony.
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.24.17.46.58.83932@gmail.com>
On Sun, 24 Sep 2006 10:14:36 -0700, Javier wrote:
> 
> Lars Rune Nøstdal ha escrito:
> 
>> You've got to remember what is going on in that book. If you tried the
>> same in almost any other language it would be much harder and much more
>> complex. Try to implement some of that stuff in C or Java; i dare you.
>> :)
> 
> I think you are right, but it is also true that most of the things
> appearing in On Lisp only has sense on Lisp (as its tittle suggest :-) ).

It is related to a style called "bottom-up programming". A style of
programming where you start by adjusting the language and/or your
libraries to fit the problem-types you are trying to solve instead of
starting at top and assume you're going to fill in the middle/bottom-part
later. When you have something built from the bottom-up where each layer
builds on a working, functional and tested layer below it - that makes you
able to test each new layer you build instead of having to predict that
things will work by assuming how you're going to build or design the
middle/bottom layers when you're starting from the top.

You build from the bottom `On Lisp' and upwards. It is possible to use
this style in any language; but I think it is somewhat easier to do in
Lisp. Sometimes it's good to combine; to go from the bottom and the top at
the same time and meet somewhere in the middle. :)

>> You need to remember that you are not buying something that is pre-made
>> for you; you are choosing what to use for solving your problems. I do
>> not want to use Britney Spears to write my code. (lol - this is getting
>> kind of stupid :))
> 
> You still don't know how well is she writing Lisp code. Why don't you ask
> her before forming opinions? ;-)

Heheh, she's too busy making babies to bother talking with me. :}

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: Thomas A. Russ
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <ymiwt7q32ss.fsf@sevak.isi.edu>
Lars Rune N�stdal <···········@gmail.com> writes:

> You build from the bottom `On Lisp' and upwards. It is possible to use
> this style in any language; but I think it is somewhat easier to do in
> Lisp. Sometimes it's good to combine; to go from the bottom and the top at
> the same time and meet somewhere in the middle. :)

I concur that this style is easier in Lisp.  And I think that having the
REPL, combined with common data structures that have human-readable and
writable serializations (S-expressions) means that it is easy to test
out the pieces as you build them.

In many other languages, you have to construct a fair bit of the middle
and upper level infrastructure just to be able to test your code, so you
don't get as big of a win from bottom-up development.  The languages
actively discourage such a style by making it hard to do testing and
experimenting with just the pieces.

-- 
Thomas A. Russ,  USC/Information Sciences Institute
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159132695.379195.171430@b28g2000cwb.googlegroups.com>
Lars Rune Nøstdal ha escrito:

> You've got to remember what is going on in that book. If you tried the
> same in almost any other language it would be much harder and much more
> complex. Try to implement some of that stuff in C or Java; i dare you. :)

Just for having some of fun (yes, you can even have fun programming in
Java), here is JavaCC, a very easy to use parser for any language you
may dream of (and virtually you can implement it on a JVM, so it would
be avaiable for any actual major OS and even for samart devices like
phones):

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-cooltools.html

There are grammars already working:

https://javacc.dev.java.net/servlets/ProjectDocumentList?folderID=110

Interestly, Lisp is not there, but there are much more complicated
grammars like C++, so it would not very difficult to implement it.

And if you still think that Java is a very complicated language for
writing languages due to its simplicity, here you got a huge list which
demonstrate the contrary:

http://www.robert-tolksdorf.de/vmlanguages.html

I advise you that the list is so huge that it may take several days to
carefully visit all the languages listed there!!
From: Lars Rune Nøstdal
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <pan.2006.09.24.21.27.49.699116@gmail.com>
On Sun, 24 Sep 2006 14:18:15 -0700, Javier wrote:

> 
> Lars Rune Nøstdal ha escrito:
> 
>> You've got to remember what is going on in that book. If you tried the
>> same in almost any other language it would be much harder and much more
>> complex. Try to implement some of that stuff in C or Java; i dare you.
>> :)
> 
> Just for having some of fun (yes, you can even have fun programming in
> Java), here is JavaCC, a very easy to use parser for any language you may
> dream of (and virtually you can implement it on a JVM, so it would be
> avaiable for any actual major OS and even for samart devices like phones):
> 
> http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-cooltools.html
> 
> There are grammars already working:
> 
> https://javacc.dev.java.net/servlets/ProjectDocumentList?folderID=110
> 
> Interestly, Lisp is not there, but there are much more complicated
> grammars like C++, so it would not very difficult to implement it.

Yeah, you'd need to do some greenspuning
( http://en.wikipedia.org/wiki/Greenspun's_Tenth_Rule ).

-- 
Lars Rune Nøstdal
http://lars.nostdal.org/
From: John Lawrence Aspden
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <2psRg.41327$7D6.10111@newsfe2-win.ntli.net>
Lars Rune Nøstdal wrote:

> Britney Spears sells more copies of her albums than artists that are miles
> better than her. That is a fact.

Dude! Completely uncalled for. As far as we know Britney thinks
S-expressions are God's daisy chain.  Is nothing sacred?
 
John xx.

-- 
Contractor in Cambridge UK -- http://www.aspden.com
From: verec
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <4516a595$0$627$5a6aecb4@news.aaisp.net.uk>
On 2006-09-23 18:36:23 +0100, "Javier" <·······@gmail.com> said:

> My impression is that you can probably master in Java in about 2 or 3
> years of continual use, starting from scratch, but you are probably
> going to need more than 5 to 8 years to be an expert in Lisp or C++ .

My experience tells me otherwise. I've seen (amd maintened :-(
reams of Java code written by ex VB programmers. And the result
is VB mind set in Java clothing. Far from pretty, if you ask, and
those guys, even after 5 years of Java exposure can't tell a final
local variable from a public contant: so much for the
"3 years to mastery" argument.

> Most programmers out there don't feel that programming is so nice.

Time to consider a career move? How about truck driver? Plenty of
time to think alone, visit interesting countries and tour the world!

> If they have to do the extra-effort to learn Lisp, they are probably 
> not going to accept it and are going to move to a simpler language.

Most musicians don't feel that music is so nice. If they have to
put too much effort to learn to play violin, they're going to
use drums instead.

> Another point I haven't read any comment from you is the way in which
> libraries can glue together. This is very important. Sometimes, in
> Lisp, you have to deal with different paradigms using one or another
> library, and you are forced to mix them up. They are not consistent in
> the way they work. C or Java might be much less elegant, but they are
> predecible, and their libraries ussually uses the same consistent form.

Predictable? I am disputing this, but this is becoming pointless.

In order to break or change the rules, you have first to understand
them. Your posting is complaining about what Lisp is with respect to
"what it should be in your mind so as to compete with X, Y or Z".

The problem is that you do not *know*, yet, what Lisp is. Whether
it is hard or time consuming for you (or others) to become fluent
in Lisp has nothing to do with its intrinsic merits.

Even basic skills like proper spelling (*) are hard to master for
most people. Does that mean that we should discard grammar as a
relic of the past?

Let's face it: learning is hard. You either want to, or don't want
to. It is complete folly to aim at "bastardizing" the subject
matter in order to make it more learnable! At this rate, the whole
world of science would have collapsed decades ago.

> Facts are facts anyway. If Lisp hasn't succeded so much is because
> several reasons.

Sorry to be pushing a few more buttons, but Mr Predident Bush
has succeeded twice in a row. For *whom* is this "success" a
_good thing_ ?

Lisp has "succeeded" in:
- surviving for half a century where the majority of other
  languages didn't
- transmitting the "flame" from generatiom to generation as
  to what "mind can do over matter"
- adapting itself, as and when, new ways of thinking about
  problems are discovered

Who really cares if only 0.00....01% of programmers are ever
interested in Lisp, provided that the few remaining can
advance understanding, and keep on looking at deeper subjects?

Not popular? And so what?

> Our opinions about that facts are like everybody
> assholes: everyone has one. :)

Just because everybody has one doesn't make it useless! Just don't
tell us next time you go to the loo without yours ... :-)

(*) as seen from the vantage point of a non native guy.
--
JFB
From: Javier
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <1159117404.664606.104440@b28g2000cwb.googlegroups.com>
verec ha escrito:

> My experience tells me otherwise. I've seen (amd maintened :-(
> reams of Java code written by ex VB programmers. And the result
> is VB mind set in Java clothing. Far from pretty, if you ask, and
> those guys, even after 5 years of Java exposure can't tell a final
> local variable from a public contant: so much for the
> "3 years to mastery" argument.

Well, there are some weekness in Java, no language is perfect.
Elsewhere, if you think about CLOS, for me it is more difficult than
Java. Of course I am (almost) able to do in CLOS the things I'm able to
do Java. Even I can choose a different aproach for the same problem.
But it is also true that, for me, it is easier to understand others
code written in Java than in CLOS.
Yes, I own a very C centric mind. But speaking with my own experience,
it tooks me 2 years to "master" in C, while it did take only 1 more
year to comprehend the entire Java system. I started to learn Lisp
about 1 or more years from now, and I'm still feeling that I don't know
even 30% of CL. Sometimes I wonder if all of this complexity is worth
of my time, altough I still continue to learn Lisp bacause I like it.

> > If they have to do the extra-effort to learn Lisp, they are probably
> > not going to accept it and are going to move to a simpler language.
>
> Most musicians don't feel that music is so nice. If they have to
> put too much effort to learn to play violin, they're going to
> use drums instead.

Well, actually there are more people playing drums and "simpler"
instruments (like guitars) than violins. This is clearly because most
people prefer simpler things while  trying to archieve their desires or
needs.
From: jayessay
Subject: Re: Handling Complexity Using Lisp
Date: 
Message-ID: <m34puyza5p.fsf@rigel.goldenthreadtech.com>
"Javier" <·······@gmail.com> writes:

> 1) Everytime a new semantic is invented via macros, you have to learn

Maybe your problem is you are totally lost - macros provide a means
for new _syntax_ not semantic...


> 2) Mixes concepts about compilation and runtime.

"Mix" is the wrong word here.  The hard separation you are
presupposing is really artificial.


> 3) There are several ways of implementing a single problem, and you can

The "there's only one right way" view is a dangerous illusion (maybe
even dellusion).


> 4) Because of the above points, it is not so nice to develop "glue"

I think this is wrong on a couple counts.  "Gluing" things with Lisp
has always been quite nice for me - your universal claim is thus
false; your premises are false, so the conclusion doesn't follow.


/Jon

-- 
'j' - a n t h o n y at romeo/charley/november com