In article <xcvaduu5r2z....@conquest.OCF.Berkeley.EDU>, t...@conquest.OCF.Berkeley.EDU (Thomas F. Burdick) wrote:
> I agree. I think the big, wrong premise in that post is that dynamic > binding is confusing.
That's not what I said. What I said was:
Lisp does not make an adequate syntactic distinction between [dynamic and lexical bindings].
That is very different from saying that dynamic binding is confusing.
> I think the semantics of ANSI CL wrt specials > is actually rather intuitive. How on earth can I say that? Yesterday > I was talking to a couple of non-Lispers who learned Scheme a couple > years ago.
[snip]
Anecdotes like this only prove that some people get it right some of the time, but I don't think there was ever any disagreement about that. Perhaps even most people get it right it most of the time. But it is clear that not everyone gets it right all of the time, including, on occasion, experts. And that's the problem. It's a problem precisely because, as you say, dynamic binding *isn't* confusing, or at least it shouldn't be. Dynamic binding is a very simple and elegant concept. There's no reason why everyone shouldn't get it right all the time, even the experts :-)
In article <gat-3101021118340...@eglaptop.jpl.nasa.gov>, Erann Gat wrote: > In article <a3c36a$17bso...@ID-125440.news.dfncis.de>, Nils Goesche ><car...@cartan.de> wrote:
>> In article <gat-3101020935400...@192.168.1.50>, Erann Gat wrote: >>> The reason I raise this issue again now is that here we have evidence that >>> it *does* affect users of all categories, from beginners to implementors. >>> The fact that *two* implementors got this wrong, including the industry >>> leader, indicates that this really is a pervasive problem, and not just a >>> fluke.
>> Not really. Somehow I doubt very much that the reason they got it wrong >> is that Duane Rettig doesn't grok special variables... ;-)
> Yes, of course Duane groks special variables. So does Roger. That is > precisely my point. They both got it wrong *despite* the fact that they > understand. The most reasonable way to account for that IMO is that there > is an underlying aspect of the language design that makes it very hard to > get this right even for smart people who understand. I call that a design > flaw.
But... I don't care if anything in CL is hard to implement for compiler writers. IIRC, Pascal didn't have closures because it's designer(s?) thought they would be too hard to implement. Getting CLOS right is probably a thousand times harder than getting special variables right for the compiler writers, but I'd still like to keep it. What you are saying sounds like the ``Worse is Better'' philosophy to me.
Regards, -- Nils Goesche "Don't ask for whom the <CTRL-G> tolls."
> In article <xcvaduu5r2z....@conquest.OCF.Berkeley.EDU>, > t...@conquest.OCF.Berkeley.EDU (Thomas F. Burdick) wrote:
> > I agree. I think the big, wrong premise in that post is that dynamic > > binding is confusing.
> That's not what I said. What I said was:
> Lisp does not make an adequate syntactic distinction > between [dynamic and lexical bindings].
I am reminded of the point in time when I figured out one of these deliberately obscure special versus lexical variable puzzles and thought, jeez, no wonder we put *barbed-wire* around specials.
g...@jpl.nasa.gov (Erann Gat) writes: > In article <a3c36a$17bso...@ID-125440.news.dfncis.de>, Nils Goesche > <car...@cartan.de> wrote:
> > In article <gat-3101020935400...@192.168.1.50>, Erann Gat wrote: > > > In article <a3b7lr$16u06...@ID-125440.news.dfncis.de>, Nils Goesche > > ><car...@cartan.de> wrote:
> > >> Whether it's a bug in the design or not is debatable, at least, as > > >> that very thread shows. Erik said all there is to say about it, IMHO.
> > > Erik's view in a nutshell was:
> > > [We should] focus our attention on stuff that actually affects > > > users of all categories much more than this trifling issue
> > > The reason I raise this issue again now is that here we have evidence that > > > it *does* affect users of all categories, from beginners to implementors. > > > The fact that *two* implementors got this wrong, including the industry > > > leader, indicates that this really is a pervasive problem, and not just a > > > fluke.
> > Not really. Somehow I doubt very much that the reason they got it wrong > > is that Duane Rettig doesn't grok special variables... ;-)
> Yes, of course Duane groks special variables. So does Roger. That is > precisely my point. They both got it wrong *despite* the fact that they > understand. The most reasonable way to account for that IMO is that there > is an underlying aspect of the language design that makes it very hard to > get this right even for smart people who understand. I call that a design > flaw.
While I consider it a great honor to be placed on this pedestal (e.g. "if Duane made a mistake, it must be a design flaw"), please do not keep me on such a pedestal. I could never live up to such a responsibility. I make mistakes. All kinds of them. Some understandable, some stupid. This was a stupid mistake. I didn't implement free declarations in my environments implementation (I had even put a comment in the code to that effect). And although the interpreter is free to ignore declarations in general, it is not free to ignore special declarations. My mistake was to ignore free special declarations in the interpreter (now was that free/gratis, or free as opposed to proprietary declarations? :-)
That said, I don't consider much whether or not it is a design flaw how Common Lisp treats specials. The concern I have over any new proposal is not how much better it might be, or even how hard it would be to implement as a vendor. What concerns me is the many customers we have whose code would break if such radical changes were made to the spec. I don't remember seeing in the proposal any indication of compatibility and what to look out for (though I only skimmed it; there may be such treatment in the proposal, and I apologize if I missed it). What I would want to see is some kind of study of what kinds of code would become broken by your proposal, and how code can be kept from having to be changed. Or, as an alternative, a translator to change code of the older style into the newer style (though that is much less acceptable than not requiring any change to existing code).
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
g...@jpl.nasa.gov (Erann Gat) writes: > The reason I raise this issue again now is that here we have evidence that > it *does* affect users of all categories, from beginners to implementors. > The fact that *two* implementors got this wrong, including the industry > leader, indicates that this really is a pervasive problem, and not just a > fluke.
Absent detailed arguments, I fail to see how "implementor X introduced a bug in the handling of feature Y in release Z" is at all related to the problems users might have with feature Y. I don't think this is a compelling argument. Either feature Y is problematic on its own, or it isn't. Difficulty in implementing said feature is only related to the question "is having feature Y feasible", and not the question "is having feature Y desirable". Confusing the two doesn't seem at all useful to me. It is not as if Duane Rettig had indicated that he introduced the bug because he didn't understand the semantics of special variable declarations. Absent such indications, it seems to me that it is far more likely that there's a far more mundane reason for that bug being introduced.
We've had bugs in the handling of top-level closures in CMU CL, yet I've never seen anyone claim that this indicates that closures are a "pervasive(sic!) problem", and should therefore be "fixed". It is IMHO sufficient to fix the buggy implemention, and off we go.
Things might be different, if implementors consciously disagreed in their interpretation of the intended semantics. In that case the standard would need to be fixed/augmented.
Yet it is IMHO fairly clear what the intended semantics of both lexical closures, and special variables are. But, as you might know, there is a gap between knowing what to implement, and implementing it correctly.
That's why we have language implementors, and don't all implement the language ourselves.
Regs, Pierre.
-- Pierre R. Mai <p...@acm.org> http://www.pmsf.de/pmai/ The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents. -- Nathaniel Borenstein
In article <a3c36a$17bso...@ID-125440.news.dfncis.de>, Nils Goesche wrote: >In article <gat-3101020935400...@192.168.1.50>, Erann Gat wrote: >> In article <a3b7lr$16u06...@ID-125440.news.dfncis.de>, Nils Goesche >><car...@cartan.de> wrote: >> The reason I raise this issue again now is that here we have evidence that >> it *does* affect users of all categories, from beginners to implementors. >> The fact that *two* implementors got this wrong, including the industry >> leader, indicates that this really is a pervasive problem, and not just a >> fluke.
>Not really. Somehow I doubt very much that the reason they got it wrong >is that Duane Rettig doesn't grok special variables... ;-)
They got it wrong because Duane made a simple human error, and that error affected the treatment of a rarely travelled area of the language that did not break any test case or other programs. So it was not caught prior to shipping the software. Am I close?
> But... I don't care if anything in CL is hard to implement for compiler > writers.
But Stroustrup says the same thing continually through _The C++ Programming Language_, and I believe it was a mistake, since compiler implementers had such a hard time implementing all the features that users had to wait and wait for standard features to make it into the implementations.
> IIRC, Pascal didn't have closures because it's designer(s?) > thought they would be too hard to implement.
Yes, both extremes lead to problems: ignoring implmentation difficulty and fretting too much.
* Erann Gat | Erik's view in a nutshell was: | | [We should] focus our attention on stuff that actually affects | users of all categories much more than this trifling issue | | The reason I raise this issue again now is that here we have evidence that | it *does* affect users of all categories, from beginners to implementors. | The fact that *two* implementors got this wrong, including the industry | leader, indicates that this really is a pervasive problem, and not just a | fluke.
A slightly more accurate nutshell summary would be just what I said:
removing special variables because they confuse a few people is a typical "modern" reaction to the lack of diligence and effort that "modern" users are no longer expected to expend in learning anything. this is simply a beginner's issue. Common Lisp used to cater to experienced programmers at the cost of having to learn it, like a _skill_, something people of reasonable competence levels would _value_.
Most countries have laws that are fairly obscure and hence are neither commonly followed nor broken. However, a universal legal principle is "ignorantia legis neminem excusat" (ignorance of the law excuses no one). It behooves the citizen of a country to know its lawa. We find that more or less formal standards of good practice exists in every field of professional endeavor -- with the exception of programming computers. For some unfathomable reason, computers should be optimzed for those who are completely clueless, who cannot accept the responsibility for their own actions, who do nothing to rectify problems they run into, who are, plain and simple, _incompetent_ at their job. Microsoft has clearly made a huge contribution to this state of affairs in its incessant propaganda that computers should be _so_ easy to use that actually learning to use them well has become a disadvantage. However, failing to understand how something works, be it the society in which you live of the computer you use, can only lead to frustrations, complaints, and miserable experiences with the software you use. So, too with programming languages.
I believe that there is nothing whatsoever to be gained by catering to stupid and incompetent people. Others, such as Bill Gates, believe otherwise, but in order to take advantage of stupidity and incompetence, you have to make a choice: Make yourself manifestly unattractive to good and smart people. If a society catered to its criminals, good and smart people would leave that society, too. This is why I think it is worth the pain to expose and get rid of those who have no desire to see their wishes in a context of a community that would have to (help) fulfill them.
If there is a law we do not like, there are some exceptionally complex _laws_ to follow to change it. It is not just in programming language communities that "cost to implementors" is considered and valueed higher than some "perfect solution". If a society is made up of people who are so ill equipped to deal with disagreement that they throw up their arms and cry "design flaw" whenever their pet peeve comes up, they survive solely on the momentum of whatever processes allowed that society to be created and grow out of barbarianism and "might is right" to begin with.. Sadly, many Western societies virtually surf on the waves made by those who were smart enough to figure out that need for legal infrastructures such as constitutions. It takes a considerable amount of intellectual effort to see that freedom is achieved only within a society of just law, because most people who have not quite grown up mentally are still quite short-sigtedly egoistic and think that their desires are the law. Some think this regardless of the consequences for others. Those who hold the community interests above their own, or, more precisely, who adjust their own desires so that they do not require a different community than that in which they live, are generally much more successful in achieving their goals than those who spend their time wishing for a different community, society, world, or universe.
If you stumble and fall, do you blame gravitation, meomentum, friction, or some other part of what we consider "laws of physics"? If you stumble in your code and it misperforms, do you blemae physics for making it harder to type in correct programs, do you blame the hardware for not doing what you want, do you blame the compiler for not understanding you, do you blame the language specification for not being what you want? If you get ill from a disease for which you were genetically predisposed, do you blame your God, do you blame your parents, do you blame your doctors for not fixing it, do you blame medicine as a whole for not being able to give you the life you want? Or do you, in each of these cases, figure out that there are many things you cannot change and that it is useless to fight, that there are many things that just happen by coincidence and which have no conscious will behind them, that even if things seem wrong to you, they are in fact right for a lot of other people?
You are rich if you can purchase whatever you want, whenever you want it. Corollarily, it depends more on what you want and when than on how much money you have. The basic question is: Can you adapt to a society made by others? Some are unable to do this and have to have their own will or they threaten to destabilize the society that made their very "protest" possible -- in a less civilized society, they would have been orstacized or killed, but because of the freedom they enjoy to express their views, they attack the very basis of that freedom. These people are generally dissatisfied with some part of their society (and this will not stop -- they are basically fighting _against_ the "establishment" and it will never be to their liking, because their role is a fighter, a role that would vanish if their "demands" were met) and act like the proverbial disgruntled postal workers instead of trying to find something more valuable to wast their life on.
Are special variables in Common Lisp difficult to understand? No, but let me rephrase the question to explain why: how much _education_ (as opposed to mere _training_) do you need to figure out what variable reference mechanisms exist and how they work and is this more than (1) any other feature in the language (it is clearly not), (2) any other features of other languages regarding non-trivial handling of bindings (it is clearly not). What we have is a failure of some people to spend any effort _at all_ to learn how to use special variables, and those seem to think it is legitimate to fault the language for their lack of desire to expend effort to learn it. So, the question is really, do we want to optimize a _language_ for the uneducated, untrained, unskilled moneky who coulud be replaced at a moment's notice or do we aim for the professional or professioal-to-be in both our education of beginners and in the design of our language?
In yet other terms, do we recognize that knowing how anything works that is not exactly like something else you already know takes special effort? The first thing you learn is so simple and easy to internalize precisely because _nothing_ is there to get into a conflict with, but if you know one thing, like C's global variables, then your next thing, which will in _some_ way be different, will take some effort to understand. Those who do not want to expend this effort, _assume_ that all things are the same and do not even want to recognize that they might be wrong when they run into problems. This is flat out _stupid_ and betrays an _unconscious_ modus operandi, which I consider to be _fundamentally_ incompatible with programming computers. Those who fail to think even when the suggestion that they do so is presented by something as clear-cut as a failure of a computer do their bidding, should not be used as arguments to redesign a language that works perfectly well for those who _have_ learned it. Such is no more than nihlistic change-for-the-sake-of-change and serves nobody.
Common Lisp does _not_ have the luxury of being first contect, so those who discover it and want to learn it and use it productively have no more choice about having to expend the extra, but necessary effort to learn how it both exceeds and differs from other languages whose designers never dared to challenge the same design issues than those who wish to learn a physical skill that involved "unlearning" some bad habits, such as learning proper pronunciation in a foreign language, driving a car, becoming a master marksman, or even just typing faster on a computer. However, if the first thing an otherwise eager student sees when he is in this transition and re-learning period is some disgrunted ex-Lisper whine that so and so feature is a design flaw, the likelihood that he will want to expand that effort approaches zero faster than intelligent youngsters get rid of their desire to learn mathematics when presented with idiotic drills in arithmetic and a teacher who thinks real mathamatics is "too difficult".
What we should do instead of this stupid whining about how badly designed the language is, is simply to show people what is on the other side of learning it well. It is my personal opinion that those who gripe about bad design are unable to adapt their personal will to _any_ design not their own, and if my memory does not fail me, the same person who whines about special variables yet again also whined about how "impossible" it would be to use Common Lisp is real life applications, too, going all George Michael on us and "losing his religion" in the process.
In article <xo2u1t2dn5j....@uga.edu>, Ed L Cashin wrote: > Nils Goesche <car...@cartan.de> writes:
>> But... I don't care if anything in CL is hard to implement for compiler >> writers.
> But Stroustrup says the same thing continually through _The C++ > Programming Language_, and I believe it was a mistake, since compiler > implementers had such a hard time implementing all the features that > users had to wait and wait for standard features to make it into the > implementations.
If those features were worth it, it would also be very well worth it waiting for them. The /real/ problem with C++ is rather that they make fundamental changes to the language over and over again, so you never stop waiting, because when one compiler has finally finished implementing some new set of features, some other has already halfway implemented the next set of changes leading to a situation where it is very hard to compile any C++ program without the very version of the C++ compiler it was written for.
Regards, -- Nils Goesche "Don't ask for whom the <CTRL-G> tolls."
* Erann Gat wrote: > Anecdotes like this only prove that some people get it right some of the > time, but I don't think there was ever any disagreement about that. > Perhaps even most people get it right it most of the time. But it is > clear that not everyone gets it right all of the time, including, on > occasion, experts. And that's the problem. It's a problem precisely > because, as you say, dynamic binding *isn't* confusing, or at least it > shouldn't be. Dynamic binding is a very simple and elegant concept. > There's no reason why everyone shouldn't get it right all the time, even > the experts :-)
But since some people get it right some of the time, but no one gets *anything* right all the time, unless someone actually studies the problem in a principled way (as in statistics of some kind) then *all* that happens is people quoting anecdotes at each other: you as much as anyone. There are enough people writing code out there that you can find examples of virtually any depravity or virtue.
While I fully accept that standard IT practice is to avoid any kind of actual careful measurement of anything, preferring to make billion-dollar decisions based on anecdotes, war stories, experience from 30 years ago, badly taught university courses or, if pushed, `measurements' so badly botched as to be useless both because of the negligible scientific education of most computing people and because they aren't actually interested in knowing the answer but in confirming their prejudices, this doesn't mean that this is a good way to proceed. Indeed, I think that it's pretty much our bounden duty as Lisp people to try and drag the standard practice into the 19th century.
And Lisp is God's gift to this kind of study: source code is data! We can write programs to analyse our programs and look for occurrences of this kind of problem, if we wanted to. Then we could *know* how bad a problem it is rather than quoting anecdotes at each other! Why don't we do this? Well I can think of two reasons: (1) quoting anecdotes is kind of fun, and it might be inconvenient to actually know it is or is not a problem. (2) It's not enough of a problem that anyone can be bothered.
Finally here are some anecdotes, to keep the noise level good and high.
I can not remember when I last wrote code that was confused about special/lexical bindings. I'm sure it's happened to me, but I doubt it has been within the last 8 years.
I recently worked on a reasonably large system which was really pretty badly written by people who didn't understand CL very well. It had many, many egregious problems. Special/lexical confusion was not one of them.
So there's two random stories. I'm sure that there are plenty of others showing the opposite. However what I'm really sure of is that STORIES LIKE THIS ARE WORTHLESS.
* Erann Gat wrote: > The reason I raise this issue again now is that here we have evidence that > it *does* affect users of all categories, from beginners to implementors. > The fact that *two* implementors got this wrong, including the industry > leader, indicates that this really is a pervasive problem, and not just a > fluke.
I guess Duane should speak for Allegro, but it looks to me rather as if they got the declaration scoping issues tangled in the intepreter rather than being confused about special binding.
Erik Naggum <e...@naggum.net> writes: > ... [interesting article]
It takes me much more time to scan through c.l.l. when you are posting, but I feel that this time is well invested. Thanks for the interesting article. Fine that you are back.
Tim Bradshaw wrote: > So there's two random stories. I'm sure that there are plenty of > others showing the opposite. However what I'm really sure of is that > STORIES LIKE THIS ARE WORTHLESS.
I have a friend who in his first (and last) programming class took a week and the combined efforts of everyone in the computer lab to discover he had typed (on a punchcard) "o" where "0" was intended.
Ten years later I worked with two other programmers on one Cobol, well, listing (early XP?). One of the guys never spoke except to say, "That 'o' should be '0'".
An acquaintance at a bar once showed up with a C++ listing from his first programming class saying he had spent three days trying to get his fifty lines to compile, and had resorted to running a virus detector in desperation. I told him I had never done C++, but shouldn't that <class>:<funcname> have another colon?
You shoulda heard the scream.
I think every language should have stuff like this to thin the herd.
--
kenny tilton clinisys, inc --------------------------------------------------------------- "I don't think the heavy stuff is gonna come down for a while." - Carl, Caddy Shack
In article <41yg6nsj8....@beta.franz.com>, Duane Rettig <du...@franz.com> wrote: > g...@jpl.nasa.gov (Erann Gat) writes: > > Yes, of course Duane groks special variables. So does Roger. That is > > precisely my point. They both got it wrong *despite* the fact that they > > understand. The most reasonable way to account for that IMO is that there > > is an underlying aspect of the language design that makes it very hard to > > get this right even for smart people who understand. I call that a design > > flaw.
> While I consider it a great honor to be placed on this pedestal > (e.g. "if Duane made a mistake, it must be a design flaw"),
That's neither what I said, nor what I meant. A closer paraphrase would be "If Duane and Roger both make the *same* mistake then that's an indication that there might be a design flaw."
> And although the > interpreter is free to ignore declarations in general, it is not free > to ignore special declarations.
A seemingly random exception to an otherwise general rule without any clear benefit over alternative designs that do not require the exception -- another indication that this might be a design flaw.
> That said, I don't consider much whether or not it is a design flaw > how Common Lisp treats specials. The concern I have over any new > proposal is not how much better it might be, or even how hard it > would be to implement as a vendor. What concerns me is the many > customers we have whose code would break if such radical changes > were made to the spec.
A fine evaluation criterion. Although I didn't say so explicity, all aspects of my proposal are 100% backwards-compatible with the existing standard. (An indication of this is that I was able to implement most of my proposal as a macro.)
In article <ey3d6zqtm0p....@cley.com>, Tim Bradshaw <t...@cley.com> wrote: > * Erann Gat wrote: > > The reason I raise this issue again now is that here we have evidence that > > it *does* affect users of all categories, from beginners to implementors. > > The fact that *two* implementors got this wrong, including the industry > > leader, indicates that this really is a pervasive problem, and not just a > > fluke.
> I guess Duane should speak for Allegro, but it looks to me rather as > if they got the declaration scoping issues tangled in the intepreter > rather than being confused about special binding.
I never said any different. Why do you feel the need to misrepresent my position just so you can criticize it?
> I'm sure you could have found a better article than that, you've been > going on about this for at least 10 years.
Even if that were true (the article in question is less than two years old) I am at a loss to understand what you were hoping to accomplish by saying that.
You know, Tim, you are beginning to make me understand why Erik sometimes responded to people the way he did.
In article <ey37kpytez5....@cley.com>, Tim Bradshaw <t...@cley.com> wrote: > * Erann Gat wrote:
> > Anecdotes like this only prove that some people get it right some of the > > time, but I don't think there was ever any disagreement about that. > > Perhaps even most people get it right it most of the time. But it is > > clear that not everyone gets it right all of the time, including, on > > occasion, experts. And that's the problem. It's a problem precisely > > because, as you say, dynamic binding *isn't* confusing, or at least it > > shouldn't be. Dynamic binding is a very simple and elegant concept. > > There's no reason why everyone shouldn't get it right all the time, even > > the experts :-)
> But since some people get it right some of the time, but no one gets > *anything* right all the time, unless someone actually studies the > problem in a principled way (as in statistics of some kind) then *all* > that happens is people quoting anecdotes at each other: you as much as > anyone. There are enough people writing code out there that you can > find examples of virtually any depravity or virtue.
True. That is why the crucial point here is not that Duane made a mistake, but that *both* Duane and Roger made the *same* mistake, and that it is a mistake that was in some sense predicted by a theory. If we had some data on the general frequency with which Duane and Roger introduce bugs into their implementations this might even rise to the level of a statistically significant result.
BTW, Tim, as one of the few people who has actually published statistically significant results concerning Lisp I would really appreciate getting a little bit of the benefit of the doubt from you that I might actually understand some of these issues.
g...@jpl.nasa.gov (Erann Gat) writes: > True. That is why the crucial point here is not that Duane made a > mistake, but that *both* Duane and Roger made the *same* mistake, and that > it is a mistake that was in some sense predicted by a theory. If we had
How do you know that they made _the same_ mistake? Whatever mistakes they made resulted in similar behaviour for _one_ test-case. There are many reasons they might have introduced that particular bug. For all we know one of them might have been a typo.
Furthermore, for any argument at all to start, we'd have to find out whether they made their "common" mistake _independently_. Case in point:
Just today we had the case that CMU CL and LW have a similar (the same?) bug in their handling of declarations in clauses of handler-case that don't bind the condition. Do I start making conjections as to "statistically significant" correlation of bugs in CMU CL and LWW, without taking into account relevant context information, like e.g. the strong possibility that this particular bug might have one common source, based on the common reference implementation, and hence is really just one bug?
And what is this nonsense about "the" mistake being predicted by a theory? Which theory? It will obviously have to also predict that CMU CL, LispWorks, ACL's compiler, ACL's old interpreter, CLISP, GCL, ... would not make that mistake (as seen in percentages). If you've got a theory that can predict all of that, then I'm seriously interested, and I bet most psychologists, too. If your "theory" is only that "special binding is a non-trivial thing to implement, hence people might make mistakes _implementing it_", or even worse, the more general "theory" that "people make mistakes", please don't bother...
> some data on the general frequency with which Duane and Roger introduce > bugs into their implementations this might even rise to the level of a > statistically significant result.
> BTW, Tim, as one of the few people who has actually published > statistically significant results concerning Lisp I would really > appreciate getting a little bit of the benefit of the doubt from you that > I might actually understand some of these issues.
You have squandered that benefit by lumping "implementor problems" and "user problems" into one big heap, without giving any kind of argument, not to speak of evidence, that the two are related, and if so, in which way. This does not make your case any stronger, it just suggests that you have failed making your case in a more convincing way, and are now starting to clutch at straws...
Regs, Pierre.
-- Pierre R. Mai <p...@acm.org> http://www.pmsf.de/pmai/ The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents. -- Nathaniel Borenstein
> > True. That is why the crucial point here is not that Duane made a > > mistake, but that *both* Duane and Roger made the *same* mistake, and that > > it is a mistake that was in some sense predicted by a theory. If we had
> How do you know that they made _the same_ mistake?
I don't. I should have said that they both made a mistake that manifested itself in the same way.
> Furthermore, for any argument at all to start, we'd have to find out > whether they made their "common" mistake _independently_. Case in > point:
> Just today we had the case that CMU CL and LW have a similar (the > same?) bug in their handling of declarations in clauses of > handler-case that don't bind the condition. Do I start making > conjections as to "statistically significant" correlation of bugs in > CMU CL and LWW, without taking into account relevant context > information, like e.g. the strong possibility that this particular bug > might have one common source, based on the common reference > implementation, and hence is really just one bug?
That's a valid point. I assumed that since these are both competing commercial (which is to say non-open-source) implementations that neither borrowed source code from the other.
> And what is this nonsense about "the" mistake being predicted by a > theory? Which theory?
The theory that: Lisp does not make an adequate syntactic distinction between two completely different ways of binding variables. That's an exact quote from my original posting. Did you bother to read it?
> You have squandered that benefit by lumping "implementor problems" and > "user problems" into one big heap,
My position is that there is a design flaw that causes problems for both implementors and users. Why should I not lump user problems and implementor problems together as evidence in support of such a theory?
> without giving any kind of argument,
Excuse me? What have I been doing here if not giving an argument?
> not to speak of evidence, that the two are related, and if > so, in which way.
I have no evidence that they are related, only a theory that claims that they are. The theory says that (declare (special ...)) is confusing to both users and implementors. The evidence that it confuses users is the myriad posts from confused users to comp.lang.lisp asking about it. The (recent) evidence that it confuses implementors is that Duane said so. (He "forgot" that special declarations are an exception -- the only exception -- to the general rule that you can safely ignore declarations.) There's some indirect evidence that it confused Roger, but I haven't talked to him so the possibility that something else happened in that case is still open.
> This does not make your case any stronger, it just > suggests that you have failed making your case in a more convincing > way, and are now starting to clutch at straws...
I lost interest in making my case some time ago. It's way past the point of diminishing returns. It's clear that I'm not going to convince anyone, and frankly I don't really care. At this point I am trying simply to get people to stop misrepresenting my position.
* Erann Gat wrote: > True. That is why the crucial point here is not that Duane made a > mistake, but that *both* Duane and Roger made the *same* mistake, and that > it is a mistake that was in some sense predicted by a theory. If we had > some data on the general frequency with which Duane and Roger introduce > bugs into their implementations this might even rise to the level of a > statistically significant result.
No they didn't make the same mistake, they made mistakes one of whose symptoms happened to be the same. There's no evidence that the mistakes were related at all.
> BTW, Tim, as one of the few people who has actually published > statistically significant results concerning Lisp I would really > appreciate getting a little bit of the benefit of the doubt from you that > I might actually understand some of these issues.
I'm sorry, although I quite liked your survey (and contributed to it) I don't think it was statistically interesting (neither was the java one it was responding to). As I said, the state of the art is people trading anecdotes, and I'm as happy as anyone to trade them (since I definitely can't to invest the years I'd need to produce meaningful statistics).
>> I guess Duane should speak for Allegro, but it looks to me rather as >> if they got the declaration scoping issues tangled in the intepreter >> rather than being confused about special binding. > I never said any different. Why do you feel the need to misrepresent my > position just so you can criticize it?
I'm not trying to do that. What I'm saying is that it looks like the issue (for ACL) was not to do with special declarations being confusing but to do with the scoping of free and bound declarations. So it's not actually related to specials at all, it just happens that this is one of the bugs it introduces.
> You know, Tim, you are beginning to make me understand why Erik sometimes > responded to people the way he did.
Tim Bradshaw <t...@cley.com> writes: > What I'm saying is that it looks like the issue (for ACL) was not to > do with special declarations being confusing but to do with the > scoping of free and bound declarations.
Since Roger Corman hasn't chimed in here on what's going on, it was pointed out to me in e-mail that CLtL1 didn't make such a distinction. So that may have something to do with what's going on here (with Corman Lisp anyway)
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'