There may be some valid points, but IMO not all of the points made are valid. Unfortunatelly this article has potential of being widely used as a reason not to touch CL at all. I'm not considering myself experienced enough to write a proper rebuttal piece, but I think someone needs to do it.
> There may be some valid points, but IMO not all of the points made are > valid. Unfortunatelly this article has potential of being widely used as > a reason not to touch CL at all. I'm not considering myself experienced > enough to write a proper rebuttal piece, but I think someone needs to do it.
Since you raise this topic in such an original way, it would be curious to know first which points don't *you* agree with ?
It's easier to point out which points I agree with. I'll duplicate my (anonymous, forgot to sign :) comment here:
--
Mentioned valid points:
* case insensitivity may cause headaches sometimes; * non-generic sequence functions (this can be fixed to some degree though if you really need them).
Not mentioned - the actual problem with macros (difficulties implementing code walkers) and others (you need to learn CL first to properly understand most of them :)
Maybe I've missed something.
Most of other stuff is something you actually have in your head after a year of learning CL. "Lisp is not something like My Previous Favorite Language(s)" kind of stuff etc. It may take a lot of time to explain this properly, I'll just mention one point now:
> Every single non-standard extension, everything not in the spec, is "wrong" with Common Lisp. This includes any support for threads, filesystem access, processes and IPC, operating system interoperability, a GUI, Unicode, and the long list of other features missing from the latest hyperspec.
The spec is actually a copy of language standard (ANSI X3.226-1994). For languages that don't have standard the spec is NIL. So everything not in spec of Ruby (Python) is wrong with Ruby => everything with wrong with Ruby (Python), right? Not just threads, IPC, GUI? Moreover, there's no threads/IPC/GUI/etc. in standards of such successful languages as C and C++.
Additional note concerning case insensitiveness: one should note that it's default Lisp reader mode in CL which is case insensitive unless symbols are escaped. Lisp symbol names themselves are case-sensitive.
>>There may be some valid points, but IMO not all of the points made are >>valid. Unfortunatelly this article has potential of being widely used as >>a reason not to touch CL at all. I'm not considering myself experienced >>enough to write a proper rebuttal piece, but I think someone needs to do it.
> Since you raise this topic in such an original way, it would be curious > to know first which points don't *you* agree with ?
I kind of agree with Stevey's #1 and #2. I've been trying to figure out which lisp is good to use (some people have e-mailed me the equivalent of "whichever you can run that has the features you need"). Also, the lack of standardized threads, sockets, etc. has been heartbreaking (but some of the trivial-* libraries have taken up the slack).
#3 and #4 seem to be rather... foo. Dunno, it looks like he doesn't know macros that much, or was using them incorrectly. Macros are only supposed to make things look prettier and/or do the equivalent of constant folding (a la CL-PPCRE). I know CLOS was first designed/tested as a set of macros, but IIRC when the final specs came out CLOS already had to be built-in (because primitives began to have types).
Am 15.04.2006 12:08 Uhr schrieb "Alan Manuel K. Gloria" unter <almkg...@gmail.com> in 1145095708.923021.139...@i40g2000cwc.googlegroups.com:
> I know CLOS was first > designed/tested as a set of macros
Who told you that? That's confused and wrong.
CLOS is not a set of macros. And it was never. It was never intended that way and it was not where it came from.
If you want to know how the first reference implementation got developed, then look for the old PCL (Portable Common Loops) sources. CLOS was a merge of ideas from New Flavors and LOOPS. PCL got developed out of Xerox' implementation of Common LOOPS. Common LOOPS was an implementation of LOOPS (Lisp Object-Oriented Programming System) for the old Common Lisp of that time.
See also ["CommonLoops: Merging Lisp and Object-Oriented Programming", D.G. Bobrow et al, SIGPLAN Notices 21(11):17-29 (Nov 1986)].
If you want to understand the background behind the design of CLOS then read The Art of the Meta-Object Protocol. Alan Kay on this book (keynote OOPSLA 97): The Art of the Metaobject Protocol is the best book written in computing in ten years.
Also this page contains excellent material about CLOS:
> I kind of agree with Stevey's #1 and #2. I've been trying to figure > out which lisp is good to use (some people have e-mailed me the > equivalent of "whichever you can run that has the features you need"). > Also, the lack of standardized threads, sockets, etc. has been > heartbreaking (but some of the trivial-* libraries have taken up the > slack).
Don't you think that the differencen to questions like the following is only gradual:
- Which scripting language is good to use? - Which programming language is good to use?
Do you think there is a fundamental difference in choosing between one of the different Common Lisp or Scheme implementations and choosing between one of Perl/Python/Ruby/PHP/whatever? Or Java or C#? Or JDK 1.3, JDK 1.4 or JDK 1.5?
> There may be some valid points, but IMO not all of the points made are > valid. Unfortunatelly this article has potential of being widely used > as a reason not to touch CL at all. I'm not considering myself > experienced enough to write a proper rebuttal piece, but I think > someone needs to do it.
I'm afraid to say, there's not one valid point in this blog, most of his points are just plain wrong.
> There may be some valid points, but IMO not all of the points made are > valid. Unfortunatelly this article has potential of being widely used > as a reason not to touch CL at all. I'm not considering myself > experienced enough to write a proper rebuttal piece, but I think > someone needs to do it.
Well, since Pascal C had already taken the high road, providing a reasoned, rational response, I took the quick hit approach.
> Do you think there is a fundamental difference in choosing between one > of the different Common Lisp or Scheme implementations and choosing > between one of Perl/Python/Ruby/PHP/whatever?
Perhaps there's not a fundamental difference, but there's a perceptual difference, I think. Perl, Python, and Ruby are indeed all scripting languages, but they're obviously different languages, so they're obviously different to the programmer who's choosing among them. Choosing between languages is something that most programmers are used to, one way or another. On the other hand, when a programmer decides, "Okay, I'm going to go see what Common Lisp is all about," after making that familiar decision about language, he then has to make another decision about the implementation, but there's the catch-22 that it helps to already know the language in order to discriminate between the significant differences in the implementations.
Practically speaking, of course, newcomers to the language can to a large degree just download any implementation and start using it, but I don't think it's always obvious that that's the case. (In a way, this reminds my of the way Lisp affected my programming when I was first learning it. There's this sense of "I can do *anything*, so I have no idea where to start.")
Relatedly, see Bill Clementson's recent blog post about "The Best Open Source CL Implementation" where he awards that distinction to SBCL.
> Or JDK 1.3, JDK 1.4 or JDK 1.5?
This, I think, is a closer example, but it's still not exactly the same, because the numbering gives a sense of structure. In absence of any other obvious criteria, a new-to-Java programmer would probably just go with the most recent version.
> There may be some valid points, but IMO not all of the points made are > valid. Unfortunatelly this article has potential of being widely used as > a reason not to touch CL at all. I'm not considering myself experienced > enough to write a proper rebuttal piece, but I think someone needs to do > it.
> Ivan
Nothing to see here, move along. Just some crazy drunk guy hit a dog while combing his hair in a mirror. Move along.
Phil! Gregory <phi...@pobox.com> writes: > * Pascal Costanza <p...@p-cos.net> [Sat, 15 Apr 2006 13:15:54 +0200]: >> Do you think there is a fundamental difference in choosing between one >> of the different Common Lisp or Scheme implementations and choosing >> between one of Perl/Python/Ruby/PHP/whatever?
> Perhaps there's not a fundamental difference, but there's a perceptual > difference, I think. Perl, Python, and Ruby are indeed all scripting > languages, but they're obviously different languages, so they're obviously > different to the programmer who's choosing among them. Choosing between > languages is something that most programmers are used to, one way or > another. On the other hand, when a programmer decides, "Okay, I'm going > to go see what Common Lisp is all about," after making that familiar > decision about language, he then has to make another decision about the > implementation, but there's the catch-22 that it helps to already know the > language in order to discriminate between the significant differences in > the implementations.
Of course, this was not the question. The question is why should they take against Common Lisp (the language) the choice users are given between various implementations such as sbcl, cmucl, openmcl, clisp, abcl, and perhaps a couple more, etc, but nobody takes it against C, that users have to choose between: Sun Studio Compiler, OnBoard Suite, Free Microsoft Visual C++ 2005 Express, Free Microsoft eMbedded Visual C++, OpenWatcom C Compiler, Mingw32 C Compiler, Digital Mars C Compiler, Intel C++ Compiler for Linux Non-Commercial Version, Borland C++ Compiler, Apple's Macintosh Programmer's Workshop C compiler, UPS Debugger (C Interpreter), HP-GCC, The BDS C Compiler, Cyclone C, TenDRA C Compiler, GNU C, EGCS, Pelles C Compiler, Compaq C Compiler, Ch Embeddable CInterpreter, DJGPP C Compilers, Reads51 Small C Cross-Compiler, Cilk ANSI C Based Compiler, ANYC C Compiler, Sphinx C-- Compiler, LSI C-86 C Compiler, ACC C Compiler, CINT C Interpreter, SDCC C Cross-compiler, CC386 C Compiler, CC65 C Cross-Compiler, eC, LCC, Pacific C Compiler, ATTOC C Compiler, Quincy C Interpreter, and RSXNT C.
-- __Pascal_Bourguignon__ _ Software patents are endangering () ASCII ribbon against html email (o_ the computer industry all around /\ 1962:DO20I=1.100 //\ the world http://lpf.ai.mit.edu/ 2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
>>There may be some valid points, but IMO not all of the points made are >>valid. Unfortunatelly this article has potential of being widely used >>as a reason not to touch CL at all. I'm not considering myself >>experienced enough to write a proper rebuttal piece, but I think >>someone needs to do it.
> Well, since Pascal C had already taken the high road, providing a > reasoned, rational response, I took the quick hit approach.
No, that is not how these Good Bad Publicity things work. And more Lisp newbies means more book sales, so get back in there. For me, more Lispniks means more competition as a commercial vendor, so I am on Steve's side. And responding to all of his mistakes would mean hours not spent on my app.
The way these things work is some idiot gets a microphone and goes nuts. Then reasonable folks shred him (it's always a him, according to Dilbert) in incredible detail. The idiot responds to the exactly one thing he think can be answered, or makes up new nonsense. the well-informed Defenders of Lisp stay reasonable and just keep talking about great things about lisp, and do not get sucked into silly tit-for-tat.
in the end the idiot hates Lisp even more, but anyone reading the exchange has a lot more information to use in making up their own mind.
"Have you ever been in a relationship?" Attorney for Mary Winkler, confessed killer of her minister husband, when asked if the couple had marital problems.
"Have you ever been in a relationship?" Attorney for Mary Winkler, confessed killer of her minister husband, when asked if the couple had marital problems.
> Oh, I missed those. :) Case sensitivity? You have two variables with the > same spelling but use case difference to specify the one you want? Stop > that.
Well, there's a problem with surrounding environment. E.g. when you need to generate some XML/JavaScript/whatever from sexprs, stuff like |EscapingThatPareditIsNotQuiteHappyWith| or something-like-this -> SomethingLikeThis quirks. Not terribly bad, but sometimes unpleasant.
>> but IMO not all of the points made are valid. Unfortunatelly this >> article has potential of being widely used as a reason not to touch CL >> at all.
> ...by exactly the kind of people we do not want around here.
>> I'm not considering myself experienced enough to write a proper >> rebuttal piece, but I think someone needs to do it.
> No excuses. I see you replied a little. Get back in there and make some > noise. The noise is the only thing that matters, draws a crowd.
I've honestly tried to write some comments on reddit... But article's score still went to stratosphere, and many of my comments were downvoted. It's all percieved as "lisp weenie whining" or manifestations of "superiority and persecution complexes" most of time.
Ivan Shvedunov wrote: > Ken Tilton wrote: >> No excuses. I see you replied a little. Get back in there and make >> some noise. The noise is the only thing that matters, draws a crowd.
> I've honestly tried to write some comments on reddit... But article's > score still went to stratosphere, and many of my comments were > downvoted. It's all percieved as "lisp weenie whining" or > manifestations of "superiority and persecution complexes" most of time.
That's OK. Look past the trees to the forest. Lisp is now part of The Debate. C++ and Java are not. It is down to Python, Ruby, and <gasp> Common Lisp. To the old-timers, that alone is a win.
And anyone who /really/ likes CL looks at a Python-Ruby-CL "Final Three" showdown and realizes, oh, game over.
ken
ps. Steve says "You've all read about the Road to Lisp.", linking to the wiki survey. I missed the news. Did that get publicized someplace? k
"Have you ever been in a relationship?" Attorney for Mary Winkler, confessed killer of her minister husband, when asked if the couple had marital problems.
Obviously that guy doesn't know enough about cl to write a good critique (had a good lough about the "I can't make a gf called length" lie).
He also doesn't understand anything about macros - needless to mention here...
But I would agree that although cl is by far the best thing that exists (actually I'm not sure about cl vs. Scheme yet...), an even nicer Lisp could be dreamed of - at least I'm dreaming about it :) The good news is that most improvements to cl can be done from cl...
> Oh, I missed those. :) Case sensitivity? You have two variables with the > same spelling but use case difference to specify the one you want? Stop > that.
I suspect the case-sensitivity thing that tends to catch newbies is (intern "car") not doing what they expect. CL seems to be case-insensitive, because you can type in any case, but functions like INTERN and MAKE-SYMBOL expose the underlying case-sensitivity and the fact that this is just a user interface trick.
-- Barry Margolin, bar...@alum.mit.edu Arlington, MA *** PLEASE post questions in newsgroups, not directly to me *** *** PLEASE don't copy me on replies, I'll read them in the group ***
Phil! Gregory <phi...@pobox.com> writes: > * Pascal Costanza <p...@p-cos.net> [Sat, 15 Apr 2006 13:15:54 +0200]: >> Do you think there is a fundamental difference in choosing between one >> of the different Common Lisp or Scheme implementations and choosing >> between one of Perl/Python/Ruby/PHP/whatever?
> Perhaps there's not a fundamental difference, but there's a perceptual > difference, I think. Perl, Python, and Ruby are indeed all scripting > languages, but they're obviously different languages, so they're obviously > different to the programmer who's choosing among them. Choosing between > languages is something that most programmers are used to, one way or > another. On the other hand, when a programmer decides, "Okay, I'm going > to go see what Common Lisp is all about," after making that familiar > decision about language, he then has to make another decision about the > implementation, but there's the catch-22 that it helps to already know the > language in order to discriminate between the significant differences in > the implementations.
> Practically speaking, of course, newcomers to the language can to a large > degree just download any implementation and start using it, but I don't > think it's always obvious that that's the case. (In a way, this reminds > my of the way Lisp affected my programming when I was first learning it. > There's this sense of "I can do *anything*, so I have no idea where to > start.")
> Relatedly, see Bill Clementson's recent blog post about "The Best Open > Source CL Implementation" where he awards that distinction to SBCL.
>> Or JDK 1.3, JDK 1.4 or JDK 1.5?
> This, I think, is a closer example, but it's still not exactly the same, > because the numbering gives a sense of structure. In absence of any other > obvious criteria, a new-to-Java programmer would probably just go with the > most recent version.
You raised two very valid points. The initial selection of a lisp implementation is largely irrelevant because at the learning stage, all of them are pretty much equivalent. Its only when ou get to the point of writing a real app which you want to run on multiple platforms and possibly sell for money you really need to worry about the idifferenses. Most people new to lisp will take a fair while before they get to this point (if ever).
The other point you mention is probably the most critical and that is your reference to being able to do anything and therefore not quite knowing how to start. I think this is probably the most challenging part of learning lisp. Its very quick and easy to get the basics down, but getting to the point of mastering the language and really being able to take advantage of its strenghts is *much* harder.
To some extent, this is possibly the major stumbling block and part of why Peter's PCL is so popular. With languages like java, you can do quite trivial things which look impressive very early in the learning process. With lisp, its a bit harder. However, with languages like Java, I found you 'hit the wall' fairly quickly. After a short time, you know the language and what you can and cannot do with ease and quickly recognise its limitations. Your ideas and design are quickly limited by the language. Your designs are constrained by what you know you can do easily.
With lisp, that wall is a lot further away. You spend a lot more time with a little voice in the back of your head saying "Is this really the best/right/efficient way to solve this problem" because there are less constraints. In fact, it soon becomes evident the main constraint is the programmers ability and skill rather than the language. Many programmers find this an uncomfortable and confronting place. More often than not, they run away from it and end up blaming the language because thats better for their ego.
I quite enjoy seeing blogs like the one referenced in this thread. The way I see it is that it confirms Lisp has something really unique to offer. If the language was truely as poor as posts like this claim, why do so many feel a need to criticise it. After all, if it is that bad, surely it will just die a natural death in the long term. Basically, I don't think people attack things unless they see them as a threat.
To some extent, it is possible one of the reasons Lisp isn't gaining even more support isn't due to a lack of a single canonical implementation, network libraries or easy to use GUI toolkits. Rather, it is a sign of how trivial most of what people are coding really is. These are well understood problem domains and all the major languages are quite adequate in dealing with them. Over the last 20 years, I've seen quite a change in what programmers are doing and to a large extent, most of it seems quite trivial compared to the majority of problems being worked on 20 years ago. Lets face it, web apps, database apps and transaction processing are where the majority of programmers are working and all of these problems can be approached quite adequately with any of the popular languages. However, when you start to look at systems which are being more innovative, introducing new development paradigms and attempting to solve difficult problems, it seems you see a higher proportion of lisp derived languages.
Benjamin Teuber wrote: > Obviously that guy doesn't know enough about cl to write a good critique > (had a good lough about the "I can't make a gf called length" lie).
> He also doesn't understand anything about macros - needless to mention > here...
> But I would agree that although cl is by far the best thing that exists > (actually I'm not sure about cl vs. Scheme yet...), an even nicer Lisp > could be dreamed of - at least I'm dreaming about it :) > The good news is that most improvements to cl can be done from cl...
Yeah, just today I was thinking of how I can implement re-entrant continuations in CL. Haven't figured out a good solution yet but it'd be convenient to have.
In article <e1t3s4$cv...@ruby.cit.cornell.edu>, Jeffery Zhang <j...@cornell.edu> wrote:
> Benjamin Teuber wrote: > > Obviously that guy doesn't know enough about cl to write a good critique > > (had a good lough about the "I can't make a gf called length" lie).
> > He also doesn't understand anything about macros - needless to mention > > here...
> > But I would agree that although cl is by far the best thing that exists > > (actually I'm not sure about cl vs. Scheme yet...), an even nicer Lisp > > could be dreamed of - at least I'm dreaming about it :) > > The good news is that most improvements to cl can be done from cl...
> Yeah, just today I was thinking of how I can implement re-entrant > continuations in CL. Haven't figured out a good solution yet but it'd be > convenient to have.
Or how to change the semantics of function calls so that top-level functions are looked up in global lexical environments/modules/lexicons.
>> Yeah, just today I was thinking of how I can implement re-entrant >> continuations in CL. Haven't figured out a good solution yet but it'd be >> convenient to have. > Or how to change the semantics of function calls so that top-level > functions are looked up in global lexical environments/modules/lexicons. >Or to make this syntax work: > ((function-returning-a-function) ...)
you mean you want to use Scheme, so why not use Scheme? why try to hack CL to be Scheme?
In article <1145220869.274920.277...@u72g2000cwu.googlegroups.com>,
pscho...@uci.edu wrote: > >> Yeah, just today I was thinking of how I can implement re-entrant > >> continuations in CL. Haven't figured out a good solution yet but it'd be > >> convenient to have.
> > Or how to change the semantics of function calls so that top-level > > functions are looked up in global lexical environments/modules/lexicons.
> >Or to make this syntax work:
> > ((function-returning-a-function) ...)
> you mean you want to use Scheme
No, I do not mean that.
> so why not use Scheme? why try to hack > CL to be Scheme?
Because I don't want to use Scheme. I want to extend CL to mimic one aspect of Scheme's semantics. This is not the same thing as wanting to use Scheme.
> Oh, I missed those. :) Case sensitivity? You have two variables with > the same spelling but use case difference to specify the one you want? > Stop that.
Oh, I dunno--I think that it'd be great if the sequence functions were generic. In fact, nowadays I'd make _all_ functions generic. Although I daresay that there are pitfalls to that which I can't foresee...
-- Robert Uhl <http://public.xdi.org/=ruhl> `Courage is not the absence of fear, but rather the judgement that something else is more important than fear.'
Thanks for the blog pointer. I am one of the last persons on earth defending Lisp. However, it is also one of the silliest blogs out there. The blogger raised a problem where there is no problem (okay, I would write the same silly things about shit Python and useless Fortran).
May I cite the appropiate answer to the blog:
== John Foderaro said...
Your blog post shows a profound ignorance of Lisp. It reminds me of FOX news. That so-called news program has been successful by telling a target audience (the people in the red states) just what they want to hear instead of the truth. The weak minded love to be told they are right rather than being challenged with the reality. It makes them very loyal. Likewise there are people who may have dabbled in Lisp but never understood it and maybe this made them feel a bit stupid. Now you come out and tell them that "you're not stupid, Lisp is just badly designed". I'm sure you'll get a loyal following of people who now quote your bogus posting as if it is evidence itself, when it simply garbage. ==