You guys make it sounds like the ANSI CL standard was handed down by God and it dare not be criticized.
It's not only our right to criticize it it's our *responsibility*. The language will never get better if we don't.
I've written a lot of lisp code and I've read and debugged a lot of lisp code written by others. I have the right and responsibility to codify my experiences with the hope that others can learn from it. Some are so blinded by faith that they believe that everything in the CL spec is divine. The fact is that it was designed by committee. It was a compromise. Not everything in it is a great idea, or even a good idea.
The sad thing is that the religious zealots seem to have taken over this newsgroup (or at least they are the loudest). I laugh at them and I hope you do too. I hope that I can get a message through to the scientists out there who understand that CL is just a language with good points and bad points and that we must figure out how to make CL better and continually relevant to the current computing world.
John Foderaro <j...@xspammerx.franz.com> writes: > You guys make it sounds like the ANSI CL standard was handed down by > God and it dare not be criticized.
I didn't see anyone say that.
> It's not only our right to criticize it it's our *responsibility*. The > language will never get better if we don't.
I don't think anyone disagrees here.
> I've written a lot of lisp code and I've read and debugged a lot of lisp > code written by others. I have the right and responsibility to codify my > experiences with the hope that others can learn from it. Some are so > blinded by faith that they believe that everything in the CL spec is divine. > The fact is that it was designed by committee. It was a compromise. Not > everything in it is a great idea, or even a good idea.
Still looking for the point of disagreement. Don't see it yet.
> The sad thing is that the religious zealots seem to have taken over this > newsgroup (or at least they are the loudest).
I'll assume this refers to me. I wish you'd just name people by name so they could respond. Responding to vague references always feels weird. Who else does this refer to? Don't you have a "right and responsibility" to say who it is you disagree with, both so people can know not to trust them/us and so they can fairly know they are being commented on and defend themselves?
> I laugh at them and I hope you do too. I hope that I can get a message > through to the scientists out there who understand that CL is just a > language with good points and bad points and that we must figure out how > to make CL better and continually relevant to the current computing world.
No problem here per se.
I think the only thing people are disagreeing with you on are whether labeling a few isolated comments a "coding style" is fair. It would be as if I wrote a book called "Good Form in Woodworking" and it contained only the text: "Don't forget to sand the wood when you're done. I hate splinters." People critiquing my "good form" book would not be meaning "I like splinters." They would be meaning "There is more to the aesthetic of woodworking than this and you've omitted so much as to make the title meaningless." It might suffice to call my masterwork "One Thing To Remember When Building Things Out of Wood", but even then, people would start to resent the sheer number of book-covers in my collected works "Encycloopedia", which they would imagine later including another "book" called "Oh, I forgot, sometimes it's helpful to dust these things once in a while" (with contained content that is a substring of the title), and "It helps to have tools like knives or saws to cut the wood".
One reason I like attending talks on topics, even topics I don't understand is to acquire "lists". Indeed, it's one way I judge the usefulness of a speaker on a topic I don't understand is whether they provide me with any kind of exhaustive partition of the space they are talking about, because such partitions help me to understand the space of what is and is not being talked about. A talk about "Some art is ugly." is vague and hard to put into context. But a talk that takes a position like "Art must be either beautiful, political, or expensive." gives me a way to evaluate the statement it's making plus, if I buy into the statement, a way to carve out subproblems in understanding the space.
If people are reacting to anything, it is perhaps that they've bought into my claim that all style is about trade-off and that you can't make good style trade-offs unless you understand the things that are being gained and the things being lost. What's funny is that almost by definition in this theory, there are no absolutes. I'm not advocating anyone simply believe me all the time, nor am I advocating people ignore you all the time. The funny thing is that you refer to "religious zealots" and people being "blinded by faith", yet you yourself are the one who is offering up style rules like "Never use the extended loop macro." that admit no variance. Your own argument for this position says:
| People who use loop always say, "I just use it for small things." | But once started down this path they can't help but use it in more | and more complex ways until they take joy in writing code that | cannot be deciphered.
which seems to imply that there might be acceptable uses but that you don't want to be flexible enough to allow those uses for fear of the bad uses, and so you'd rather also disallow even the acceptable uses. I find that pretty uncompelling to the point of patronizing.
- - - -
By the way, also, in your point #1 you where you talk about why IF, WHEN, and UNLESS are bad, you say:
| No other language includes an inverse conditional
You, of course, leave out the natural languages. Yes, it's true, they aren't programming languages. However, they ARE natural, and therefore I think prima facie evidence that it is natural to speak in these terms. If anything, one might say, all other programming languages besides Lisp are unnatural in this sense.
English has a single word devoted to "unless". The romance languages typically use a construction like the Spanish "a menos que", but it does not make appeal to negated-if. I've seen research that says that people think of inverted conditionals more "efficiently" than negated conditionals because they think of unless not as
consequent / test --- [ negate ] ---- branch
\ alternative
but rather as
alternative / test --- branch \ consequent
getting exactly the speed gain that machine language does when you complement a conditional; no increased execution time. The stuff I recall seeing (sorry, I don't have a cite but would be willing to try to track it down if pressed) also mentioned that it takes less short-term memory to mentally parse statements with UNLESS because they don't add to the pile of "chunks" being assembled, and that people can understand and competently manipulate negations to deeper depth when UNLESS is involved than when WHEN/NOT is involved because "Unless I'm not here, you can go out to play." doesn't feel as doubly-negative as "When I'm not not here, you can go out to play."
This omits also discussion of the value of establishing and promoting focus in discussion, which is why you'd want to choose between "When I'm here" and "Unless I'm not here" ... these each have subtly different kinds of emphasis which may be important to the speaker and are often lost in programming languages.
I am probably not alone in feeling awkward about using IF* because it's not "core", but I must grant that it seems like it would make maintaining and editing existing code easier. As things are now, if I modify a conditional by adding another branch or adding _to_ an existing branch, I may typically be also required to make changes that go beyond that simple change: such as reworking a WHEN or UNLESS into an IF or COND or vice versa, a WHEN into an UNLESS or vice versa, an IF into a COND or vice versa, or adding or deleting a PROGN. IF* avoids all that.
I agree that natural language profits from having a variety of conditionals and negated conditionals, but while editing pre-existing code, having to shuffle keywords in a way not immediately relevant to the change at hand seems tedious and error-prone. Well, at least I've been there. I am not sure John Foderaro highlights _this_ particular point in favor of IF*.
Why do I argue against ideas I don't like rather than make it personal and argue against specific people? There are a number of reasons. First I feel there's a lot more content if you stick to ideas rather than hurling childish insults. Second I don't like the "character assassination by search engine" that goes on these days where people checking up on you by entering your name find lots of posts attacking your character. And finally given that news articles are threaded there is ample context to find the message one is referring to.
In fact in this case I wasn't thinking of you. Are you a CL zealot? Here's a way to find out. Would you insist that a collection of individuals remove use of a macro from their published code (even if you may never see that code) just because that macro isn't an official Common Lisp macro?
This is why I urge Franz Inc to remove IF* from their published code. If you are in the business of selling Common Lisp products, just follow the standard.
If you answer yes then you are a zealot.
> I think the only thing people are disagreeing with you on are whether > labeling a few isolated comments a "coding style" is fair
English is a huge and very complex language. Yet "The Elements of Style" by Stunk and White is only 105 pages (and they are small pages to boot). No one has ever put them down for attempting to codify good English style in so small a book. In fact this is the best known style guide.
I've seen a lot of Lisp code and wrote down the few rules that have the most to do with making the code readable. I'd always planned on writing more but nothing has irked me enough to add to the list. It's my right to publish that and I would urge everyone else to do likewise. Try to codify what you consider good programming style and practice it.
As for unless. Yes natural languages have it but that does not make it a good thing for programming languages. You have to mentally insert the 'if not' and for me that slows down the reading of the program.
John Foderaro <j...@xspammerx.franz.com> writes: > Why do I argue against ideas I don't like rather than make it personal > and argue against specific people? (...)
Good point. Just make it specific enough that we can tell _which_ idea(s) you refer to.
> English is a huge and very complex language. Yet "The Elements of > Style" by Stunk and White is only 105 pages (and they are small pages > to boot). No one has ever put them down for attempting to codify good > English style in so small a book. In fact this is the best known > style guide.
Fair enough. Note they just call it "style", though. It was your page's name "coding *standard*" which got to me, in particular since "standard" has a stronger meaning in programming than in natural language.
> By the way, also, in your point #1 you where you talk about why IF, WHEN, > and UNLESS are bad, you say:
> | No other language includes an inverse conditional
> You, of course, leave out the natural languages. Yes, it's true, they
Not all of them. Hungarian doesn't have 'unless', unless you count certain hacks that purport to fill this gap. The primary translation of 'unless' is 'ha nem' ('if not') in the first dictionary I opened.
John Foderaro <j...@xspammerx.franz.com> writes: > Why do I argue against ideas I don't like rather than make it personal > and argue against specific people? (...)
Good point. Just make it specific enough that we can tell _which_ idea(s) you refer to.
> English is a huge and very complex language. Yet "The Elements of > Style" by Stunk and White is only 105 pages (and they are small pages > to boot). No one has ever put them down for attempting to codify good > English style in so small a book. In fact this is the best known > style guide.
Fair enough. Note they just call it "style", though. It was your page's name "coding *standard*" which got to me, in particular since "standard" has a stronger meaning in programming than in natural language.
Lisp coding standards, not Franz' Lisp coding standards or Foderaro's Lisp coding standards.
> By the way, also, in your point #1 you where you talk about why IF, WHEN, > and UNLESS are bad, you say:
> | No other language includes an inverse conditional
> You, of course, leave out the natural languages. Yes, it's true, they > aren't programming languages. However, they ARE natural, and > therefore I think prima facie evidence that it is natural to speak in > these terms. If anything, one might say, all other programming > languages besides Lisp are unnatural in this sense.
Actually, Perl has unless, for exactly the reason you give, according to the Camel Book (Programming Perl by Larry Wall et al). I used to program Perl for a couple of years, and I liked it's tendency to do things in ways natural to people (and at the same time I learned to hate it's counterintuitive ways, sloppiness and limitations).
If we look beyond trivialities like "inverse conditionals", a problem is that people are more likely to believe that "anything goes" in languages that use more natural (and complex) concepts, so an in depth knowledge isn't necessary. In general, I've found that more complex languages take longer to master, but are easier to use when you do.
> By the way, also, in your point #1 you where you talk about why IF, WHEN, > and UNLESS are bad, you say:
> | No other language includes an inverse conditional
Wow, I just went and checked that to make sure it wasn't taken out of context or misquoted, but it's right alright. It's also absolutely false. Off the top of my head, Perl has `unless', and SmallTalk has `ifFalse:'. Of course various assembly languages have JN* (Jump if Not Zero, etc), which is similar.
> You guys make it sounds like the ANSI CL standard was handed down by God > and it dare not be criticized.
Like most criminals who suddenly get this great political insight into the law-making process when they get caught, you, too, confuse breaking community standards with criticizing them. If you had criticized them while upholding them, you would have gained respect and people would have listened to you, because it would have meant that you would have followed the _changing_ consensus and would be interested in helping build it. Instead, you have a criminal mind, are a loose cannon and a person who decides on his own when to uphold the laws and when to break them. This is what a society of laws cannot tolerate in its citizens and community based on a standard cannot tolerate in its members. You, sir, have no business talking about criticizing any standards, because you obviously would not follow a _changed_ standard, either, unless, of course, it was your own, in which case the whole point of a standard is moot.
> It's not only our right to criticize it it's our *responsibility*. The > language will never get better if we don't.
Most civilized people understand the difference between obeying the laws while criticizing them and breaking them in a childish expression of one's inability to articulate sufficiently thoughtful arguments to sway those of a different mind to rethink their position and reach compromise.
> Some are so blinded by faith that they believe that everything in the CL > spec is divine.
You should realize that this statement is a very grave insult to your own intelligence and has absolutely no bearing on what anyone else thinks or believes, simply because it is such a fucking insane thing to say.
> The fact is that it was designed by committee. It was a compromise. Not > everything in it is a great idea, or even a good idea.
_Some_ of us prefer to live in a society where people respect each other for their competence and professionalism despite their differences of personal opinions and work through their conflicting desires within the framework of compromise and imposed ritual, simply because we fully understand what the alternative entails.
These are among the wider implications of your nutty "coding standards", and people who are way smarter than you figured it out just reading them.
The wider implication of your incredibly stupid disrespect for compromise is that you fully expect to _remain_ a stranger to the community. You do not respect the fact that compromise is what makes it possible for lots of people to work together for a common goal. That means that you do not share in the common goal. With your disrespect for criticism of your ways and your repetition of the exact same line of defense as last time we fought over conformance, you have shown ourself to be an _enemy_ of the common goal of those who base their work, money, and livelihood on the standard and the ability of professional engineers to implement it.
I doubt that you will actually get the message, but it is not that you do something different, it is that you are so hostile to the ways you think you have improved upon. Case in point: I quit the SGML business when I could no longer work with that stupid standard. I can rant and rave freely about its braindamaged design and do any damn thing I please, _because_ I quit working with SGML. No customers are harmed because of my strong criticism of SGML and XML. Nobody has based their work and their investments on my professional opinion about SGML for five years. It is safe for me to be destructive to that community, because those who might follow me are free to do so. I did _not_ make a huge public stink about why SGML was a crock of shit when I quit, either. That would have been seriously unprofessional and damaging personally to people I cared about and who had cared about me. Actually finding a decent way out took me half a year, but I knew I could no longer be part of that community and I took that very seriously, both personally and professionally.
However, in your case, you are still a serious force within a serious vendor serving this community. Your stupidity and reckless disregard for your customers and those who still trust Franz Inc to deliver products according to specification _will_ harm people and their investments. This is not about IF* and LOOP, it is about whether Franz Inc will have engineers working on their products who are professional enough to do a good job implementing a standard they disagree with. I would frankly want a vendor who agreed with me that the standard was good for me. This is why I could not use CLISP, for instance -- its arrogant, nutty creator went on record to tell the world he had broken things on purpose.
> The sad thing is that the religious zealots seem to have taken over this > newsgroup (or at least they are the loudest). I laugh at them and I hope > you do too. I hope that I can get a message through to the scientists > out there who understand that CL is just a language with good points and > bad points and that we must figure out how to make CL better and > continually relevant to the current computing world.
> -john foderaro > franz inc.
Signing that moronic, self-serving "to hell with the community" crap with the Franz Inc company name makes it _much_ harder for me to work with Franz Inc, and I am already strained because of your licensing policies. I think you fail to appreciate the harm you do to your own livelihood with the _unprofessional_ behavior you conduct in public when people criticize _your_ supposedly "personal" opinions, which really are not at all personal. They are your professional opinions, and while signing with the Franz Inc company name, you indicate that if anybody wants to deal with your company and with you professionally, they will also have to deal with a company that goes public with a "fuck the standard" attitude that I personally consider to be so amazingly self-destructive that I have to question my involvement with Franz Inc because of it.
It was your retarded responses to the case issue that caused me to lose much of my interest in helping Franz Inc the last time you aired your stupid ego in this newsgroup, and I am frankly so disappointed with your reckless lack of concern for the community and what it has agreed on that I am probably not going to recommend that anyone I know use Allegro CL or work with such an _unprofessional_ crowd as you imply that Franz Inc is by signing with the company name. I know your position in the company well, and I am loathe to give you business when I believe that by doing so, I am helping you destroy the community I wish to be a part of. When this case issue came up, and you did such a horribly unintelligent job of it, I lost all trust in your code. I do not know which language you really write your code in, but it is _not_ Common Lisp, and you will not cater to those who want to use Common Lisp. You have demonstrated that you will disregard the standard in favor of your own personal opinions, and that is simply so _unprofessional_ that I cannot work with in _any_ professional capacity.
Just like when you blew it on the case issue and never realized what harm you had done, this is another sad day for Common Lisp. If I were in posititon to determine your employment with Franz Inc, I would fire you because of the destructiveness you bring to the community, but I am not in that position. I will, however, need to know from those who are, what Franz Inc does to keep you away from those parts of its product line that could be influenced by your utter disrespect for the community standard that your customers want you to implement. I have been on your case as long as I have worked with Franz Inc to ensure that conformance is an issue, but as time goes on, that commitment is hollowed out by you in particular, despite the valiant efforts of your colleagues to assure me that conformance is a priority. Yet, you seem to take _pride_ in your antisocial behavior and your disrespect for compromise so I leave you no hope of recovery and will have to work around you if I continue to work with Franz Inc, which I am, right now, inclined to terminate, but I will calm down and consider a _compromise_ because there are things Franz Inc does very well that I want both myself and my clients to benefit from. In the spirit of your disdain for compromise, however, I am not going to compromise on your position. If Allegro CL is to be seen as a viable implementation of Common Lisp, as defined by the community you hate in the standards document you hate, Franz Inc will have to do some serious damage control measures to convince people that you had no opportunity to break anything people will rely on in production systems.
I do not understand what this is _really_ about, but if you really wish to self-destruct, please be _decent_ enough to do it away from people. If anyone else had so many personal issues with the standard as you do, I would have urged them to leave and find something else to do. I quit working with SGML over less than you seem to cling to in Common Lisp.
And I hope for your personal sanity that you can afford your laughter.
> Thanks for the wonderful posting. I have never laughed so hard at a > newsgroup posting. There are so many gems in your posting that it's hard > to pick out the best, but if I had to I'd say that it was the part where > you say that you give me (and I presume the rest of the world) permission > to think however we want however it is absolutely forbidden to *publish* > thoughts contrary to what Erik Naggum thinks. That is so rich!!
Please take this paragraph and a what I _actually_ wrote to your nearest psychiatric ward and ask to be committed. You need no other documentation.
Goodbye, John Foderaro. It has not been a pleasure knowing you.
> By the way, also, in your point #1 you where you talk about why IF, WHEN, > and UNLESS are bad, you say:
> | No other language includes an inverse conditional
> You, of course, leave out the natural languages. Yes, it's true, they > aren't programming languages. However, they ARE natural, and > therefore I think prima facie evidence that it is natural to speak in > these terms. If anything, one might say, all other programming > languages besides Lisp are unnatural in this sense.
Not to mention Perl, which has "unless". And the various languages that have "inverse conditionals" for loop termination tests (the choice sometimes, but not always, being conflated with the choice of which end to put the test at).
-- Gareth McCaughan Gareth.McCaug...@pobox.com .sig under construc
> I am probably not alone in feeling awkward about using > IF* because it's not "core", but I must grant that it > seems like it would make maintaining and editing > existing code easier. As things are now, if I modify a > conditional by adding another branch or adding _to_ an > existing branch, I may typically be also required to > make changes that go beyond that simple change: such as > reworking a WHEN or UNLESS into an IF or COND or vice > versa, a WHEN into an UNLESS or vice versa, an IF into > a COND or vice versa, or adding or deleting a > PROGN. IF* avoids all that.
This may probably be true (I have made no such experiences so far) But I personally explicitely like the diversity of conditionals in CL because one single construct says so much more on what the code is doing. If I always choose the "most appropriate conditional" in a situation I can see with less work what is happening.
The simple fact of using e. g. WHEN or UNLESS gives me the immediate information:
"There will only be a consequent no alternative"
If IF is used "There will be exactly a consequent and an alternative" (If you always use WHEN/UNLESS in the consequent-only case)
If you use COND "Something more complex is going to happen - so be careful" (since the "easy" cases are already handled by WHEN, UNLESS and IF)
Things like IF, WHEN, UNLESS, COND, CASE, EVERY, SOME, OR, AND... may in several situations provide you immediatley with information you would have to dig for if you would "encode" them by using e. g. IF*.
> I agree that natural language profits from having a > variety of conditionals and negated conditionals, but > while editing pre-existing code, having to shuffle > keywords in a way not immediately relevant to the > change at hand seems tedious and error-prone. Well, at > least I've been there. I am not sure John > Foderaro highlights _this_ particular point in favor of > IF*.
Well... changing conditionals seems to me a bit more then merely editing text - maybe it is worth the additional time you have to think on _what_ is the best way to write it...
Does anyone else feel that I don't have the right to define my own macro to express the conditional statement?
Does anyone else feel that I don't have the right to criticize: if, when, unless and loop?
If it's antisocial to extend the Common Lisp language then what are we going to do with the guy who wrote the 'iterate' macro that's been referred to so many times in this thread. An extension that big puts my little if* to shame. Surely someone who designs something like that is the most antisocial of all.
You readers of this newgroup set the tenor of the lisp community. Shall it be as Erik wants where criticism of the standard is squelched, that new ideas are forbidden?
You the lisp community has to decide. Erik may speak the loudest but don't be put off by that. Speak your own mind.
> Does anyone else feel that I don't have the right to define my own macro to express > the conditional statement?
> Does anyone else feel that I don't have the right to criticize: if, when, unless and > loop?
Of course you have the right to create your own macro.
Here are my thoughts when I first encountered if*. I tried to port AllegroServe to LispWorks, the first thing I did was try to load htmlgen but I immediately got a complaint about there being no if*. So I stripped it out the if* since LispWorks did not have one built-in and I did not know for sure how it worked. Its fine that ACL has a if*, but I found it annoying trying to see how it worked in LispWorks. The main reason I did not use if* is that I had not used it and was not familiar with its ins an outs. I think I understood it but I did not try to play with it too much. I suppose I could have got a compatibility package for if*, but, how could I be sure that it behaves the same as the ACL if*?? After mulling over if* and what it can do, I can say that I would not use it, unless I had to. I do use loop, unless, when, cond, case, if.... Why? I have no good answer for you, only that I am more comfortable using cond for if/else/elseif decision handling.
As for loop, I got some old code for postscript generation from the AI respository and I noticed code for an older version of loop. Not quite the same, but obviously a predecessor to the CL loop. My comment is, that if there was no loop today, somebody would invent it. It has its place because those that programmed before, decided, through experience, that it was needed and that it made programming easier. The reason I think it was needed was that programmers got tired of writing the macro expansion for loop over and over again. Eg.
CL-USER 10 > (loop for x in '(1 2 3 4 5) collect (1+ x))
> Does anyone else feel that I don't have the right to define my own macro to express > the conditional statement?
you absolutely have that right. No one has stated or implied otherwise. You are misrepresenting your oppositions point of view to make it seem ridiculous.
> Does anyone else feel that I don't have the right to criticize: if, when, unless and > loop?
Again, I think you have that right. We all have rights, but every right comes with some degree of responsibility and this degree varies tremendously on our cultural/social/business/etc positions. I offer that statement good faith with no animosity, please think about it and please don't reply without sincerely trying to undestand it as it applies to this whole debate, not just the line above.
> If it's antisocial to extend the Common Lisp language then what are we
going to do
What is antisocial is writing something to *replace* parts of the standard language _and_then_ *defining* good style as using your tool and only your tool. That says "use my marbles or I won't play with you". That is definitely anti-social.
> with the guy who wrote the 'iterate' macro that's been referred to so many times in > this thread. An extension that big puts my little if* to shame. Surely someone who > designs something like that is the most antisocial of all.
> You readers of this newgroup set the tenor of the lisp community. Shall it be as > Erik wants where criticism of the standard is squelched, that new ideas
are forbidden?
That is an unfair representation of what Erik has written. By the way, he is not at all your only vocal opponent in this. I think you are trying to use his controversial behaviour to gain support, regardless of the issue at hand.
> You the lisp community has to decide. Erik may speak the loudest but don't be put > off by that. Speak your own mind.
If you have read my postings before, I think you know that backing down from Erik is not one of my faults, more to the contrary...
He has made very good points about the difference between criticizing a formally established standard and disregarding it. I'm not sure you have tried to understand his position. I, speaking my own mind, agree. He, and others, made good points about your document missing by a mile the line between personal taste and sound, general advice. I agree, again. He noted that the wording you chose and the tone you set are by implication insulting the many fine people who do not agree. This is undeniable, really. I think there are things in these and other arguments you should be able to acknowledge without backing down on not liking loop and hoping to add if* to the language.
I don't like if* from the first time i encountered it 3 weeks into learning the language... so what (I did not know at the time it was not standard). I see your points in its favour and they are not facile. I still would not tell anyone to "avoid it like the plague". If I were teaching a class and had students who used it, I would not demand that they stop. By your tone, you would force people to stop using loop at least, and maybe even if, when and unless. This attitude worries me *only* because of where you work. I already find it disturbing that Franz views its customers as "Value Added Resellers" of *their* technology. To me this is an arrogant misrepresentation that *they* own/invented lisp. That document and your defense of it add to my feeling that this is what you think.
Your position is as an implementer, not an inventer and not a user and that has its own implications different from the other positions. You are welcome to criticize ANSI CL (how could I stop you if I wanted to?) but you damage us all by advocating its disregard and by putting down parts of it in such an agressive manner.
> Does anyone else feel that I don't have the right to define my own macro > to express the conditional statement?
That is not the issue. Such rights have never been questioned.
> Does anyone else feel that I don't have the right to criticize: if, when, > unless and loop?
That is not the issue. Such rights have never been questioned.
> If it's antisocial to extend the Common Lisp language ...
That is not the issue. Nobody has ever even indicated that as the reason.
> An extension that big puts my little if* to shame. Surely someone who > designs something like that is the most antisocial of all.
To those who have studied criminology and recognize the behvioral pattern of somebody who is determined not to understand why what he has done is under criticism, your chosen line of defense is the most incriminating and revealing. You did this the last time you tried to defend a piece of buggy code, too, and it showed us that John Foderaro does not back down. Clearly, having the right to denounce the standard that your company is asking its customers to trust it to implement for them is more important than realizing that by your denouncing what people want to purchase from you, you undermine your own livelihood. Further, distancing yourself from the process and pretending to be a victim of conspiracies against your "superior solutions" indicates that the standardization process, which people trust to produce standards that vendors are supposed to agree to implement, is actively _distrusted_ by you and by Franz Inc.
The message you send is not "we have something better", but instead "We hate Common Lisp as it became standardized by a bunch of morons, but do come talk to us if you want an implementation of that crock of shit."
Apparently, you fail to understand that you can improve upon something without denouncing what you improve upon. You do not make something that is better than what people already like -- you have to make them hate what they have in order for what you have done to be better. Such is not actually improvement -- it is the childish game of "not invented here". This is the dangerous part of your personality and what I react to most. The dangerous _consequence_ is that you are fully willing to sacrifice your professionalism and other people's trust in your competence as a programmer with a serious vendor to your personal opinion about matters of _zero_ importance to the future of Common Lisp and its market share and ability to solve real problems. Clearly, it is much more important to vent your spleen about if, when, unless, and loop than to help build a business case for Common Lisp and to help attract people to the language ("Use Common Lisp and come join the Common Lisp community and take part in the hate campaigns against the best language on earth.").
Clearly, you do not appreciate that my trying to push Common Lisp to people who have the money and the trust in me as a consultant that could land Franz Inc another large contract should cause you to beam with love for the language your products implement, but instead you spend your time denouncing the standard and the process that created it, creating the very strong impression in every reasonably intelligent reader of your rantings about language misdesign that you have gone elsewhere yourself, so why should anyone new to the language ever stick with Common Lisp?
You will probably never understand this, since you continue to believe that you are "innovative" the same way Microsoft is, but the way you ask people who actually happen to like Common Lisp to hate it insteead, lest they be branded religious zealots and worse, is telling people to stay away from John Foderaro's sick mind and anyone who keeps him employed in a position where his blind hatred for irrelevant features causes him to write and publish buggy code and refuse to understand that it needs to be fixed because he thinks the problem is in the specification.
It is not your changes that causes me to react. It is your arrogance. It is not your desire for improvements more to your liking that causes me to react. It is your intense denunciation of everything that I need to entrust my own livelihood and professional reputation to your products. It is not the fact that you are a deranged lunatic that makes me want to terminate my business dealings with Franz Inc. It is the fact that they keep a deranged lunatic employed in a position where his utter lack of professionalism and professional integrity may cause serious damage to my own or my client's software in a production setting where bugs you have introduced because you do not consider my trust in the specification you distrust a valid concern or a reason to write correct code or to fix bugs, and hence I will lose money and possibly face lawsuits if I _do_ trust you.
I am a businessman, John Foderaro. You are not. I deal with people's trust in me and my competence every single day. You have never grasped that I question your trustworthiness. To my paying clients, the only thing that matters is my professionalism. They do not care whether I have personal opinions about the products we use or not. I may thus love Allegro CL _personally_ and I may grief in _private_ about the idiocy of your self-destructive behavior, but I would be criminally unprofessional if I asked a client of mine to invest USD 100,000 in my love for a product that cannot be trusted to perform as required by specification for such a fantastically stupid reason as one idiot engineer giving a higher priority to his dislike for language features over correct code.
This is a bigger issue than you appear able to understand, John Foderaro. Nobody cares what you think about if, when, unless, and loop when they face a delay in deployment because of one of your bugs. Nobody cares about your silly coding standards when a project folds because a feature in the specification is not supported for "political reasons". We have a standard, and nobody cares where it came from, God, Devil, committee, or John Foderaro, but everyone in the kinds of businesses I deal with care that it is actually and faithfully implemented. Based on the evidence that you provide about your priorities for Common Lisp and your own code, I _must_, because I am a professional, decline to suggest that people who would be willing to invest several hundred thousand dollars over the next few years on their trust in my word, invest it in Allegro CL.
In short, your insistence that you be allowed to denounce the standard, the standardization process, us "zealots", and everyone who disagrees with your fantastically stupid "improvements" and "coding standards", has a pretty hefty price tag. Your employer needs to understand that your desire for a John Foderaro Lisp instead of a Common Lisp has caused me, a fairly strongly devoted fan of Allegro CL, to abandon Allegro CL as the choice implementation platform. I do not personally consider there to be viable alternatives, which means that we will probably use a different language. Now, this has not just happened this once, the last time we had a fight over your prioritizing your personal opinions over correct implementation of specified language features, I did not even bother to waste my time arguing for Common Lisp. That project went with Java, simply because I was too personally exhausted by your idiotic behavior to want to fight for Allegro CL. I know I could have won that project.
The question I put towards you, John Foderaro, is this: Does it matter so much to you to be able to denounce that which people come to you and to Franz Inc to purchase that you are willing to let go of customers who do not like that denunciation and who get the impression that you will do an unprofessional job if asked to implement something you have some personal issue with? If it matters that much to you, good riddance to both you and Franz Inc. If you can get through your thick skull that maybe you can get what you want if you back down and start to behave professionally, maybe, just _maybe_, it is possible to get Franz Inc to take conformance seriously and actually put fixing deviations from the specification on top of the list of prioritized tasks and thus help rebuild its trust.
> You readers of this newgroup set the tenor of the lisp community. Shall > it be as Erik wants where criticism of the standard is squelched, that > new ideas are forbidden?
That is not the issue. That is not what I do. It is not criticism that you engage in, it is a political campaign of distrust in the process that created the standard. If it were criticism, you would respect the process and its results. You do neither. If it were criticism, you would trust the process to yield better results with better input. You very obviously do not believe this, but instead take it upon yourself to do what you will, regardless of process or procedure.
> You the lisp community has to decide. Erik may speak the loudest but > don't be put off by that. Speak your own mind.
Yes, let us see a show of hands from the all people who do understand the issues of trust, conformance, respect for procedure, and compromise in order to gain something _higher_ than immediate personal satisfaction.
I used to have doubts that you were mentally incapable of understanding the issues that surround your antisocial behavior and your strong disdain for the community standardization process, but I have been forced by the sheer mass of evidence that you yourself provide to conclude that you do, in fact, not have the mental apparatus to understand what standardization means for a community and for the
> Does anyone else feel that I don't have the right to define my own macro to express > the conditional statement?
You have all the right to do so. You have no *right* to force anyone in following you.
> Does anyone else feel that I don't have the right to criticize: if, when, unless and > loop?
You can criticize is as much as you like, but you have not *right* to force anyone in following you.
> If it's antisocial to extend the Common Lisp language then what are we going to do > with the guy who wrote the 'iterate' macro that's been referred to so many times in > this thread.
I would suggest to re-read the mails. After that you hopefully see the difference.
> You readers of this newgroup set the tenor of the lisp community. Shall it be as > Erik wants where criticism of the standard is squelched, that new > ideas are forbidden?
Whatever Eric has said among it was not that one is not allowed to criticice the standard.
> You the lisp community has to decide. Erik may speak the loudest but don't be put > off by that. Speak your own mind.
Well again point 1 of you list is ridicolous. You put you personal preference over other things which is fine for you, but if I want to run the code I must either a) use your Lisp (which with the extension of if* is definitly not Common Lisp) b) rewrote that Macro elsewhere.
For what do I have to do that? Because adhering to someones "personal" standard? Well I do not want that. If I use the if, unless and when stuff I can role my own standard without enforcing other people to break the "standard langauge"
Well standards are of course not a one man show. That has it pros and cons. But having a standard is a major advantage, it's existence is a safe-net for Users, and having a standard means I'm not tight to any specific vendor. Of course that is what vendors disklike I guess..
Better to have a standard of your own, than it's easy to force the Users to bear all bad decisions.
In article <9mhpkp$af...@news3.cadvision.com>, humen...@cadvision.com says...
> As for if*, how did it come about?
It originated back in 1980 in Franz Lisp where it was called If (that's capital I and a lower case f). It came about for the same reasons that it exists today, to enhance readability of the conditional expression.
John Foderaro <j...@unspamx.franz.com> writes: > Does anyone else feel that I don't have the right to define my own > macro to express the conditional statement?
Not here.
> Does anyone else feel that I don't have the right to criticize: if, > when, unless and loop?
That's fine, too.
> If it's antisocial to extend the Common Lisp language then what are > we going to do with the guy who wrote the 'iterate' macro that's > been referred to so many times in this thread. An extension that > big puts my little if* to shame. Surely someone who designs > something like that is the most antisocial of all.
Uh, no. No-one's ever said that it was antisocial to extend the Common Lisp language.
> You readers of this newgroup set the tenor of the lisp community. > Shall it be as Erik wants where criticism of the standard is > squelched, that new ideas are forbidden?
This is an outrageous misrepresentation.
> You the lisp community has to decide. Erik may speak the loudest > but don't be put off by that. Speak your own mind.
I only posted to this thread because you explicitly asked for it, to add my voice to those who are asking you to think a little about the issues that other people have raised.
Friedrich Dominicus <fr...@q-software-solutions.com> writes: > Now do we have a Standard or not? If all could agree on introducint an > if* well that's fine. But so long point one make all progams adhering > to it a new Lisp Dialect but definitly not Ansi Common Lisp.
if someone gives me some piece of source code with IF* in it, I would expect them to supply a macro defining IF* together with that code. Then I would have no other reason to object than personal taste (but I would be tempted to macroexpand away all the IF*s, if they compiled into pretty-looking CONDs ;-)). -- (espen)
Jochen Schmidt <j...@dataheaven.de> writes: > This may probably be true (I have made no such experiences so far) > But I personally explicitely like the diversity of conditionals > in CL because one single construct says so much more on what the code is > doing. If I always choose the "most appropriate conditional" in > a situation I can see with less work what is happening.
I like it too. For my own use (I am *not* reommending this!) I tend to use:
IF - probably I am using the value returned (and I'd tend to give an explicit NIL in the else branch if need be here).
WHEN, UNLESS - I'm not using the value, but I want to check something. I often have chains of WHEN / UNLESS to check conditions are true. As in english I pick the operator to put focus on the expected thing, so I can end up with (WHEN (NOT ...) ...). For instance:
(when (bogusp a1) (log-message "bogus A1 value ~A" a1) (error ...)) (unless (or (null x) ...) ...) ;; Everything is OK ...
I could use ASSERT for this but often I don't want the automagic error stuff, I want to do my own error protocol.
COND - multiway branch, may or may not use value. I *don't* use COND for the kind of error-checking above, I always use WHEN / UNLESS.
And then there are CASE &c &c.
It's great that CL has so many kinds of conditional and looping construct.
Erik Naggum <e...@naggum.net> writes: > And people wonder why Common Lisp does not "win"? It is not > because of the language, it is because of the self-destructive > morons in this community who think it is conducive to their > personal goals to denounce and ridicule and fight the common goal.
What common goal? Bear in mind this is com.lang.lisp, not comp.lang.ansi-cl.
> John Foderaro and his case, pathname, character vs integer, > if-when-unless, loop, etc, etc, issues. Bruno Haible and his > large bunch of issues. Paul Graham and his bunch of issues > against the language. People who appear, on the surface, to have > done good work for Common Lisp return time and again to denounce > the language, its community, and everything that _could_ bind us > together.
I did not see John's "coding standard" as an attack on the community, a denouncement of the language, or an assault on any of the common ideas that this community could be said to hold. He laid out a set of criteria for judging forms and then critiqued some forms included in the CL standard while suggesting a form not in the standard. He also did not call his document "Common Lisp Coding Standards", so he was not misrepresenting the language. The document also included a disclaimer indicating that they were private opinions and not those of Franz.
The CL standard is not the whole of the language, it is a tool for those who use the language, much like the OED and the MLA handbook are not english, but tools for those who use english. The issues people have with the standard are not issues against the language, any more than non-standard spelling or grammar is an attack against english.
While it is true that a non-negligable amount of friction is generated by deviations from the CL standard across Lisp implementations, I see no reason to regard those as attacks on the community. The community is a group of users, not the standard. Lisp is a tool, CL is a tool of the Lisp community. Tools are shaped by usage, and old tools can became burdens for new uses and new contexts. In this way usage comes into conflict with standards. Maintenance of the tools requires labor, a scarce resource which is not always available, so tools will not always be in compliance with standards.
I would hazard a guess that the maintenance of CL compliance across Lisps, and the protection of the CL standard is not a primary goal of many people who would consider themselves members of this community. That common goal is to write Lisp and in doing so accomplish other goals, like making a living in software, advancing scientific inquiry, balancing their checkbook, or creating virtual worlds.
Perhaps this is not the case tho, and there is indeed a portion of the community who believe that the maintenance of and adhesion to the CL standard is the primary goal of the community. I have not seen evidence over the last few years to support their existence in appreciable numbers.
> Why would anyone in their right mind want to use Common Lisp when > the people who do (seem) use it are so negative towards the > language?
You are attacking John, and now Bruce and Paul. You say they "appear, on the surface" to have done good work, as if there is a doubt to the legitimacy of their work. These are people who have written or maintained implementations in wide use today, that allow a many people to be members of this community, to write lisp. Paul has written books which have helped many, myself included, become more competent in the primary goal of this community, writing Lisp. It is disengenuous to insinuate that these works are hollow, a trick of rhetoric.
The forms John dissed are not part of the community, those people are. People write the code, write the documentation, maintain the implementations, and otherwise bring life and energy to the community. The CL standard is just a tool of the community. The Lisp community existed before it, and will exist after it.
-- Craig Brozefsky <cr...@red-bean.com> http://www.red-bean.com/~craig The outer space which me wears it has sexual intercourse. - opus
Tim Bradshaw <t...@tfeb.org> writes: > IF - probably I am using the value returned (and I'd tend to give an > explicit NIL in the else branch if need be here).
This convention, in contrast to your not using return values in when/unless is not one I have followed in the past, but I think it's a very useful one and can recall several times when it would have saved my a bug. I will attempt to remember it tommorow when I am writing Lisp.
> It's great that CL has so many kinds of conditional and looping > construct.
Yup, apparent redundancy can allow for nuance.
-- Craig Brozefsky <cr...@red-bean.com> http://www.red-bean.com/~craig The outer space which me wears it has sexual intercourse. - opus