* Kenny Tilton | No, implicit in my suggestion was the energy I saw being misdirected at | defending CL, I gathered in the hope someday of greater use.
Please let each person determine what is the "greater use" of their own energy, as long as it is not harmful.
| Given that goal apparently sought by others, I recommended more | aggressive action crucially outside c.l.l.
How do you know about happens outside c.l.l? How would you discover that whatever it is you would recommend is actually done?
| I am on the fence. I would love to see CL take over the world, but I am | not going to worry about it, I am just trying to do good work with CL.
I would not like CL take over the world, because that which takes over the world, is taken over by the world. Considering what the world does to other things it has taken over, it would be terrible, terrible fate.
| This is why Arc may be a wrong turn.
I have briefly looked at Arc. It is yet another demonstration of the problem of too strong an ego that cannot live with what somebody else has made. Be it the standard conditionals, nil versus false versus the empty list, or whatever else this purportedly strong ego is too weak to accept, it is nothing more than proof of the core problem of the IT world -- the hardness of its pillars makes them brittle, not strong, so they cannot be used to build upon. What was it that stood so much in the way that Paul Graham could not have accomplished it without creating a new language? Why was creating a new language and starting from scratch better than building on what had come before? Why is the IT world defined by people who are unable to deal with the concepts of continuity, longevity, and design for long-term stability? Why do they believe they are so much smarter than everything that has gone before them, when they clearly are not and repeat mistakes that take years to undo, if not replaced by another stupid "revolution" that itself starts from scratch?
If people built societies the way computer people build communities, we would still live have small warring tribes and no concept of a law that binds all people and absolutely no concept of a constitution that binds lawmakers. For all the talk about the Internet changing the world, we lag the real world by about 40,000 years when it comes to how we make lots of people who do _not_ agree to everything live and work together.
Suddenly, I feel old and tired.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
> Get over your personal hangup and just accept the language for what it > is. _Nothing_ will _ever_ happen to the language just because you keep > having these problems. Nobody is interested in your lack of will to > accept the language while you are learning it.
* Andreas Bogk | Can anybody explain to me why some people regard the Common Lisp standard | as gospel?
Well, why do you regard it as gospel? Why do _you_ think in such terms? Explain this, and you will be much closer to the wisdom you seek.
| What happened to the spirit of continuous improvement that has led Lisp | through the decades?
The keyword here is "continuous". At some point, some people decided that the only way to achieve improvement would be through discontinuity and revolution, through many meaningless changes they could achieve some small meaningful one. These people have only succeeded in one thing: To instill this meme in so many people that they do not even _try_ to make continuous improvements, anymore. Whey they fail again and again to achieve improvement with their revolutions, they argue that stronger and more powerful revolutions are necessary, when in fact it was the idea that revolutions are necessary that caused them to fail. Smaller egoes and more purpose would have made them succeed, because what they need to succeed with is not to build a whole new world from scratch, but to make those who already live in one to accept their improvements. If they do not, accept that, too, and try again. Accepting defeat is perhaps the only true evidence of personal strength. Refusing to accept defeat and believing that if you only try the exact same thing again over and over you will some day get a different result, is simply the insanity of weak minds that refuse to let go of their one chance at success and greatness.
Every bit of progress has cost thouands of setbacks, but each did in fact not set the whole industry back because one did _not_ start from scratch with every "invention". Because of the continuity, one built upon what already existed and found an acceptable way to achieve one's goal until the underlying changes were being made by those who were motivated by the success of the visible changes.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
* Andreas Bogk | But I'm seeing a lot of "Common Lisp does it that way and you need to | swallow it", and a lot of people who seem to have forgotten that | Common Lisp is man-made (and even designed by a committee and full of | bad compromises and legacy crap).
So are the laws of any given country. You do not break them because you object to them, you enter politics and obey the laws while you change them. If you are the fucking clueless moron who breaks laws you do not like, you are nothing but a retarded criminal. Why the criminal mind is so important to hold up as a role model for social change is beyond me.
| We folks from the Dylan community see ourselves as part of the Lisp | community.
You seem to be quite alone in this regard, especially considering your hang to insult other Lisp communites and waltz in with stupid concerns that simply are _not_ concerns except to outsiders. As convicted felons protest their innocence, but would not improve unless they accepted that they are guilty and the fate of the guilty, any random outsider who does not accept that complaining about non-issues is stupid or the negative consequences of such actions, will never be part of that community.
| We're interested in an honest discussion on what the Right Thing is (and | yes, Dylan has it's shortcomings too).
A good start would be to accept the choices people have made. Coming into a new community and accusing people of regarding their standards as "gospel" because you want to be a criminal in that community is not a good start. Strive not to be an outsider. Do _not_ see yourself as an outsider. (There are no "insiders", but people who choose to regard themselves as if they are always doomed to stand outside and look in, have no hope of ever gaining any useful information about what they keep looking at and not understanding. Part of relinquishing the "outsider" status is to accept that other people have accepted certain things, and that they are _not_wrong_ in doing so even if you think it is not right. In time, you will see the wisdom that there are more than one right, that the idea that there is "one right" is wrong, but that this does not mean that one cannot determine that something will always be wrong no matter what is right.)
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
> I have briefly looked at Arc. It is yet another demonstration of the > problem of too strong an ego that cannot live with what somebody else has > made. Be it the standard conditionals, nil versus false versus the empty > list, or whatever else this purportedly strong ego is too weak to accept, > it is nothing more than proof of the core problem of the IT world -- the > hardness of its pillars makes them brittle, not strong, so they cannot be > used to build upon. What was it that stood so much in the way that Paul > Graham could not have accomplished it without creating a new language? > Why was creating a new language and starting from scratch better than > building on what had come before? Why is the IT world defined by people > who are unable to deal with the concepts of continuity, longevity, and > design for long-term stability? Why do they believe they are so much > smarter than everything that has gone before them, when they clearly are > not and repeat mistakes that take years to undo, if not replaced by > another stupid "revolution" that itself starts from scratch?
I went to an OO conference in Santa Clara,1991. At lunch time I sat down with this older gentleman, maybe in his fifties. The first thing he asked me was, "We are a Cobol shop, have been for a long time, I am here to see if we have to change. Things seem to be working fine for us. Do you think we have to change?". Now, not knowing Cobol, and thinking for literally 2 seconds I said "No." He seemed immensely relieved and I am sure that he went back and continued in Cobol.
There is alot to be said for sticking with an approach and not giving into the calls to change everything. Computing seems to have really hard hit by this reinvention syndrome, maybe because its largest group of developers are young competitive men. Trying to kill the older males off I suppose, primevel instincts coupled with above average intelligence. Driving them off the "kill" (so to speak). Maybe Microsoft is successful since Gate's personality is strong enough to subdue the rabble at the gates (eheh, images of Frankenstein come to mind). Perhaps the young males energies should be harnessed into much more difficult projects until they mellow out a bit.
Erik Naggum <e...@naggum.net> writes: > * Erik Naggum > > Get over your personal hangup and just accept the language for what it > > is. _Nothing_ will _ever_ happen to the language just because you keep > > having these problems. Nobody is interested in your lack of will to > > accept the language while you are learning it.
> * Andreas Bogk > | Can anybody explain to me why some people regard the Common Lisp standard > | as gospel?
> Well, why do you regard it as gospel? Why do _you_ think in such terms? > Explain this, and you will be much closer to the wisdom you seek.
> | What happened to the spirit of continuous improvement that has led Lisp > | through the decades?
> The keyword here is "continuous". [...]
I'll put the same thought another way. I'd say the keyword was "improvement".
CL provides a base from which to move *forward*. Re-analyzing the base is not moving forward but *laterally*.
No one denies that there can be hill-climbing problems in any field, requiring some backup before moving forward. But the cost of backing out of assumptions is generally higher than the cost of not doing so, so to not be causing people gratuitous extra cost, one would want to justify the need to back up.
Of course, not everyone ever moved forward to use all of what ANSI CL has in the first place. Such people don't feel the cost of backing up in the same way as people who did. That leads to people talking at crossed purposes about what the "big deal" is. To those who have an investment in a certain way of doing things, it is a major big deal and the cost is not just "belief" (those who are not invested probably think it's all a matter of "saving face" or "people being stuck in their thoughts" as if reading a new paper could change them out of it) but "action" (this translates quickly to "dollars" in translation, quality assurance, etc. and steals precious budget form "finishing product", "marketing", "new features", etc.).
So to Andreas my question back would be...
"Can anybody explain to me why some people regard musical standards as a good use of anyone's time?" Even just discussing it seems unproductive.
I don't mean discussing technical flaws--that makes sense. But discussing the conceptual gestalt and trying to get community consensus that "the standard should be deviated from" seems pointless. People have the ability to answer this question each individually for themselves; no group consensus is required. And one reason it's important to have a standard is that standards are convergent. Those of adhering have a community of common knowledge to share. Not adhering is divergent; non-adherents don't always have something to share since they may diverge in different ways. In that sense, a discussion of Python or Dylan as a specific alternative is better than a mere bitch session on why people don't like what they have.
# Kenny Tilton <ktil...@nyc.rr.com> wrote to Bruce Hoult: | One of the things I sense about Lisp is that it has developed for a very | long time under the hands of folks who are insanely obsessed with doing | the Right Thing, and I think a large part of the determination of what | is the Right Thing comes from What Would A Reasonable Person Expect. And
# Andreas Bogk answered to Kenny Tilton: | I hoped that it would be like this. | | But I'm seeing a lot of "Common Lisp does it that way and you need to | swallow it", and a lot of people who seem to have forgotten that | Common Lisp is man-made (and even designed by a committee and full of | bad compromises and legacy crap).
No you don't have to swallow it. You can decide to use CL or not but bitching around on things that _you_ as a non-CL user don't like is not particularily fair.
The points critizized here in this thread (nil/false/'()...) seem to be no "bug" or "design-error" to the _users_ of the language but instead of that - a _feature_ . It is simply not enough to conclude that it is a design-error in Common Lisp if it could be counted as a design-error in a completely other language (like Dylan - if you count that as lisp or not).
Do you think it is a good idea for a basketball player to go to a football club and criticizing them for using the feet to hit the ball because this is a particular bad idea in contrast to the higher agility they would have using their hands?
Another claim you mindlessly reuse here as a fact is that nonsense that a language designed by a commitee is bad from it's beginnings. Compromises do not _need_ to be bad - sometimes a compromise is (seen at a whole) _much_ better than any of the possible extremes. The good thing of design by a (good) commitee (like in any good democraty) is that it is seldom that _critical_ flaws end up in the result.
# Andreas Bogk continues to answer to Kenny Tilton: | We folks from the Dylan community see ourselves as part of the Lisp | community. That's not only because most of the Dylan designers were | also involved in the Common Lisp standardization process, but also | because the heritage shows in a lot of places, ranging from the object | system (modelled after CLOS), the optimzation theory (type | annotations), first class functions, to the UI framework (CLIM | vs. DUIM), the general compiler theory etc. We're interested in an | honest discussion on what the Right Thing is (and yes, Dylan has it's | shortcomings too).
I personally see it as a bad point that Dylan omitted s-expressions since they are an important part of the "magic" behind lisp. But I don't think that Dylan is broken because of this fact - it simply changed it's audience to people that do not see or do not want the benefits of s-expression notation. The bad thing is that some Dylan users tend to claim to new users interested in lisp that Dylan is unconditionally better for them because it does not have "this many ugly parens". This claims imply that it is a bug to have s-expressions and even worse - it omits that it is maybe a _loss_ for Dylan not having them!!!
The bad thing when discussing about "The Right Thing" is that it simply does not exist out of context. A particular language, a community and even an implementation all define contexts that have to be taken into account when searching for "the Right Thing". Even if the context is well defined it happens from time to time that "the Right Thing" is ambiguous.
I'm too very interested in discussing language issues - but I think it is not a _honest_ discussion if on participant claims that the others are wrong because _oneself_ did it the other way!
Ask yourself what the real reasons are behind that particular wish of discussion - is it _really_ for finding the "Right Thing"? (which would imply to be _open_ for solutions that are different to your own!) Or is it maybe more like pushing of the own way to others? Is this _really_ about investigating if CL is good or what could be done better in Dylan? To me it looks more like marketing and advertising Dylan here in c.l.l - and not like "honest discussion".
Andreas Bogk <andr...@andreas.org> writes: > But I'm seeing a lot of "Common Lisp does it that way and you need to > swallow it", and a lot of people who seem to have forgotten that > Common Lisp is man-made (and even designed by a committee and full of > bad compromises and legacy crap).
I'm not sure where you see this, but perhaps I'm too close to it. One argument that is less important to the Dylan community then to the CL community is the cost of change. There is a larger amount of CL code around, more CL books and tutorials and more CL implementations, so any proposed change not only has to prove its use, but also its cost effectiveness. For a lot of the minor things where people argue about, changing them wouldn't be worth it even if you could convince everyone.
Even perfect updates to the standard have a cost. Consider the changes between Ada 83 and Ada 95. There is a large consensus in the Ada community that Ada 95 is a far better language then Ada 83. But the real or perceived cost and difficulty of complying to the new standard has made a number of commercial implementors decide to drop their Ada offerings, which has caused problems where platforms no longer had a commercially available Ada compiler.
-- Lieven Marchand <m...@wyrd.be> She says, "Honey, you're a Bastard of great proportion." He says, "Darling, I plead guilty to that sin." Cowboy Junkies -- A few simple words
"Wade Humeniuk" <humen...@cadvision.com> writes: > > Yes, but Lisp can fix it. > It is not broken.
People's opinion about this one varies, as well as about other features. The argument "It's not broken because CL says so" doesn't count. I'm interested in arguments that sound like "CL does the Right Thing because..." or "CL does the Wrong Thing because...".
I'm sure you can think of CL features that bother you enough that you would change them if given the chance, but not enough to keep you from using CL.
> It is a feature not a mistake.
This sounds like a Microsoft argument. There are such things as misfeatures.
> If some people are not > happy with CL then they can write a new Lisp in CL (as a new shadowed
Now this sounds like the typical argument of defenders of C: "I can show you that my language is Turing-complete, so I can solve any problem you can."
I can write my new Lisp in itself, as it is expected from any serious language.
> package, or would people rather write it in C?). Nothing is stopping them, > create a language that has false.
Been there, done that, trying to share the experience. Well, actually, I just help maintaining the Gwydion Dylan system, and was neither involved in the design of the language nor it's implementation, people smarter than me from the Lisp community have.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
Erik Naggum <e...@naggum.net> writes: > | Can anybody explain to me why some people regard the Common Lisp standard > | as gospel? > Well, why do you regard it as gospel? Why do _you_ think in such terms?
I don't. I suggested that you do, based on your "it is the way it is, get over with it" argument.
Dylan was designed based on the experience with other Lisp designs. When I see a difference between the way CL does something, and the way Dylan does it, I ask myself if this is by design or by accident, and whether the modification is the Right Thing or the Wrong Thing. It is interesting to get the opinions of seasoned CLers on these features, even if I have a bias from my prior experience and might not agee with them. After all, everyone is biased.
> Explain this, and you will be much closer to the wisdom you seek.
Ho-hum. I guess I'll have to wait for your answer before enlightenment sets in.
> | What happened to the spirit of continuous improvement that has led Lisp > | through the decades? > The keyword here is "continuous". At some point, some people decided > that the only way to achieve improvement would be through discontinuity > and revolution, through many meaningless changes they could achieve some > small meaningful one. These people have only succeeded in one thing: To > instill this meme in so many people that they do not even _try_ to make > continuous improvements, anymore. Whey they fail again and again to > achieve improvement with their revolutions, they argue that stronger and > more powerful revolutions are necessary, when in fact it was the idea > that revolutions are necessary that caused them to fail. Smaller egoes
I'm from East Germany, and have been there when the Berlin Wall came down. Don't tell me revolutions don't happen, I have been part of one.
But I think your general insight is correct, there ought to be a balance of change. Both lack of change and too much change are dangerous to the stability of a system.
What I am perceiving (and this is as subjective as it gets) is a lack of change.
> and more purpose would have made them succeed, because what they need to > succeed with is not to build a whole new world from scratch, but to make > those who already live in one to accept their improvements. If they do
Again an interesting observation. Let me know, what change would you accept?
> not, accept that, too, and try again. Accepting defeat is perhaps the > only true evidence of personal strength. Refusing to accept defeat and > believing that if you only try the exact same thing again over and over > you will some day get a different result, is simply the insanity of weak > minds that refuse to let go of their one chance at success and greatness.
It is only insanity if you don't learn from your failures, and don't get a different result next time. Maybe you won't succeed, because the challenge is bigger than a lifetime, but that doesn't mean trying is futile. Unless, of course, you hide your results from the world.
I'd even go as far as saying that *only* failures lead to genuine insight, whereas a success is just a validation of your current model of the world, and not an improvement.
> Every bit of progress has cost thouands of setbacks, but each did in fact > not set the whole industry back because one did _not_ start from scratch > with every "invention". Because of the continuity, one built upon what > already existed and found an acceptable way to achieve one's goal until > the underlying changes were being made by those who were motivated by the > success of the visible changes.
I agree. But I think we currently disagree on what part of the model to keep, and what to change.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
Erik Naggum <e...@naggum.net> writes: > | Common Lisp is man-made (and even designed by a committee and full of > | bad compromises and legacy crap). > So are the laws of any given country. You do not break them because you > object to them, you enter politics and obey the laws while you change > them. If you are the fucking clueless moron who breaks laws you do not > like, you are nothing but a retarded criminal. Why the criminal mind is > so important to hold up as a role model for social change is beyond me.
Gandhi made the concept of "civil disobedience" popular, and showed that it works.
I do tend to break laws I consider immoral or meaningless. Maybe this has to do with the fact that I was raised in a dictatorship.
And changing a law works differently in practice: you throw a lot of money at lobbyists. I'm actively involved in fighting against new surveillance laws, DMCA-like copyright regulations, and related civil liberty issues. Believe me, I know the mechanisms, and I'm depressed at how the so-called democracies are run on this planet.
One of my research areas is cryptography, and I've been involved in the GSM authentication attack and the DeCSS decryption software. Laws are on it's way that will outlaw this kind of research, driven by nothing more than a handfull of intellectual property lawyers from the recording and movie industry with an unlimited budget.
But this is starting to get severely off-topic, so I stop ranting here. For the purposes of this discussion, the summary is: I don't buy that metaphor, please use another one.
> | We folks from the Dylan community see ourselves as part of the Lisp > | community. > You seem to be quite alone in this regard, especially considering your > hang to insult other Lisp communites and waltz in with stupid concerns > that simply are _not_ concerns except to outsiders. As convicted felons
And what way do you suppose people shall learn something deep about CL, except by discussing their concerns with those who know? That way, you keep outsiders to be outsiders.
> protest their innocence, but would not improve unless they accepted that > they are guilty and the fate of the guilty, any random outsider who does > not accept that complaining about non-issues is stupid or the negative > consequences of such actions, will never be part of that community.
Then consider yourself something like a secret conspiracy.
> | We're interested in an honest discussion on what the Right Thing is (and > | yes, Dylan has it's shortcomings too). > A good start would be to accept the choices people have made. Coming
I do accept the choices, but I want to understand the reasoning behind it. This allows me to make a better decision for myself.
Just delivering the results without sharing the insights is keeping out people.
> into a new community and accusing people of regarding their standards as > "gospel" because you want to be a criminal in that community is not a > good start. Strive not to be an outsider. Do _not_ see yourself as an
I reject the notion of the Lisp community being identical to the Common Lisp community, and I especially reject the notion of CL being used as a guide to define who's a criminal in the Lisp community.
I feel I have a lot of common ground with many people here, basic things like believing that automatic memory management, dynamic typing, general function dispatch and interactive development are good ideas.
> looking at and not understanding. Part of relinquishing the "outsider" > status is to accept that other people have accepted certain things, and > that they are _not_wrong_ in doing so even if you think it is not right.
If I find a feature that strikes me as odd, there could be different things going on:
1) It's indeed a bit odd, but people get used to it soon, so it won't be a problem, but losing it wouldn't hurt either.
2) It's a powerful feature I hadn't discovered before that leads me to new ways to express my ideas, and it's incredibly valuable.
3) I am the first one to notice how to do much better.
Number 3 probably happens twice a lifetime, and is infinitely valuable. But already being able to tell the difference between 1 and 2 is important to gain real understanding.
> In time, you will see the wisdom that there are more than one right, that > the idea that there is "one right" is wrong, but that this does not mean > that one cannot determine that something will always be wrong no matter > what is right.)
I fail to see how something can always be wrong, when something can't always be right. Successful dialog depends on understanding the common set of prerequisites, and trying to share the workload for reaching new insights based on these prerequisites.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
> CL provides a base from which to move *forward*. Re-analyzing the base is > not moving forward but *laterally*.
I'd dispute that. Re-analyzing the the Axiom of Parallels in geometry resulted in the development of non-Euclidean geometry, which was a tremendous success.
> No one denies that there can be hill-climbing problems in any field, > requiring some backup before moving forward. But the cost of backing out > of assumptions is generally higher than the cost of not doing so, so to > not be causing people gratuitous extra cost, one would want to justify the > need to back up.
An obvious process. One must not forget to account the savings reached against the costs, and the possibility of reducing the cost by analyzing it's nature.
> crossed purposes about what the "big deal" is. To those who have an > investment in a certain way of doing things, it is a major big deal > and the cost is not just "belief" (those who are not invested probably > think it's all a matter of "saving face" or "people being stuck in > their thoughts" as if reading a new paper could change them out of it) > but "action" (this translates quickly to "dollars" in translation, > quality assurance, etc. and steals precious budget form "finishing > product", "marketing", "new features", etc.).
I think I want to understand what these issues are.
> "Can anybody explain to me why some people regard musical standards as > a good use of anyone's time?" Even just discussing it seems unproductive.
Musicians who only play by the standards might be technically excellent, but boring. Interesting music is the one violating the standards in a way that doesn't sound unpleasant to the listener regardless. Bad music violates the standards and sounds bad.
> I don't mean discussing technical flaws--that makes sense. But discussing > the conceptual gestalt and trying to get community consensus that "the > standard should be deviated from" seems pointless. People have the ability
No. It's called progress. Even if such a discussion process doesn't actually result in a change of consensus, it is still vital for teaching the deeper ideas.
Not doing that leads to loss of adaptibility, which could become a problem when prerequisits change.
> have something to share since they may diverge in different ways. In that > sense, a discussion of Python or Dylan as a specific alternative is better > than a mere bitch session on why people don't like what they have.
But it doesn't answer the question what choices to make given the chance of starting from scratch.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
Lieven Marchand <m...@wyrd.be> writes: > I'm not sure where you see this, but perhaps I'm too close to it. One > argument that is less important to the Dylan community then to the CL > community is the cost of change. There is a larger amount of CL code > around, more CL books and tutorials and more CL implementations, so > any proposed change not only has to prove its use, but also its cost > effectiveness. For a lot of the minor things where people argue about, > changing them wouldn't be worth it even if you could convince > everyone.
This is of course totally reasonable behaviour. Nevertheless, there might be people who don't have these constraints, or the cost might be lower than people think. So the discussion is not worthless.
Let me give you an example. There seems to be a common consensus that Emacs Lisp is broken. However, the cost of change appears high: there's lots of legacy code out there.
The biggest obstacle in automatic translation from elisp to, say, scheme, is that elisp has dynamic scoping, whereas scheme (or CL for that matter) employs lexical scoping. Well, you could make all local bindings dynamic bindings, but the code would be a mess.
On the ICFP2001 conference, there was a paper that described how to employ data flow analysis to figure out which bindings could be replaced by lexical bindings without changing the semantics of the code. A test with a representative file from Gnus showed that only 4 out of 150 bindings were actually used in a dynamic fashion. These can be refactored manually.
A scientific result changed what seemed to be like a heroic task into something manageable.
It also works the other way around: the scientific community is always looking for challenging problems of practical importance.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
Jochen Schmidt <j...@dataheaven.de> writes: > No you don't have to swallow it. You can decide to use CL or not but > bitching around on things that _you_ as a non-CL user don't like is not > particularily fair.
Just that I am a non-CL user (yet, I wish I would get clg working...), doesn't mean I cannot imagine what it would be like to work with a Lisp where nil equals '(). Especially since I have enjoyed working with languages that differentiate, and appreciate the coherency resulting from following stricter design criteria.
> The points critizized here in this thread (nil/false/'()...) seem to be no > "bug" or "design-error" to the _users_ of the language but instead of that > - a _feature_ . It is simply not enough to conclude that it is a > design-error in Common Lisp if it could be counted as a design-error in a > completely other language (like Dylan - if you count that as lisp or not).
As a feature, it feels like a convenience hack so you can write (if foo) instead of (unless (empty? foo)).
That's not much of a gain, given that you have just violated the design rule of having a way to differentiate between a valid and an invalid result. So you're having a potential pitfall here that you need to be aware of when writing code. This might feel natural after having developed awareness for the phenomenon and trained avoiding it. Still, it adds to the learning curve for newcomers, and potentially uses up cycles in your brain that you could use to solve the actual problem instead.
> Do you think it is a good idea for a basketball player to go to a football > club and criticizing them for using the feet to hit the ball because this > is a particular bad idea in contrast to the higher agility they would have > using their hands?
No. The rules are fixed and simple. I could see different basketball teams having an argument about a basketball rule, however. I could also see an argument about training methods for underlying basic primitives of movements and physical abilities.
> Another claim you mindlessly reuse here as a fact is that nonsense that a > language designed by a commitee is bad from it's beginnings. Compromises do > not _need_ to be bad - sometimes a compromise is (seen at a whole) _much_ > better than any of the possible extremes. The good thing of design by a > (good) commitee (like in any good democraty) is that it is seldom that > _critical_ flaws end up in the result.
As with laws, it's hard to see afterwards what the compromises involved were. Judging from what I've read in several documents about the history of Lisp, CL was a rather hairy compromise.
Of course, not all committee results are bad. I just sometimes have that imagination of a painting designed by a committee of Rembrandt, Van Gogh and Dali.
> I personally see it as a bad point that Dylan omitted s-expressions since > they are an important part of the "magic" behind lisp. But I don't think
How would you feel about reviving the prefix Dylan syntax?
> that Dylan is broken because of this fact - it simply changed it's audience > to people that do not see or do not want the benefits of s-expression > notation. The bad thing is that some Dylan users tend to claim to new users
One of the things on my list is finding out whether this benefit is really there or if it could be achieved by other means.
> interested in lisp that Dylan is unconditionally better for them because it > does not have "this many ugly parens". This claims imply that it is a > bug to have s-expressions and even worse - it omits that it is maybe a > _loss_ for Dylan not having them!!!
That's just to lure in the newbies, in whose eyes this *is* a bug. In my view, it's a minor inconvenience that I don't actually mind anymore, and probably just a cultural thing. For me, the Dylan syntax is better readable, because it provides more context to my eye. I can spot assignments in infix Dylan immediately, whereas it takes me several seconds to locate an assignment in prefix code. Same goes for grokking arithmetic expressions and array access.
The s-expression argument comes up quite often. Why not, as an experiment, start telling the newbies that, even though you think s-expressions are superior, they can try Dylan to learn the basic concepts, and then come back later to learn about advanced concepts.
> The bad thing when discussing about "The Right Thing" is that it simply > does not exist out of context. A particular language, a community and even > an implementation all define contexts that have to be taken into account > when searching for "the Right Thing". Even if the context is well defined > it happens from time to time that "the Right Thing" is ambiguous.
Discussing the Right Thing naturally boils down to discussing the context, and that's productive.
> I'm too very interested in discussing language issues - but I think it is > not a _honest_ discussion if on participant claims that the others are > wrong because _oneself_ did it the other way!
I promise not to do that. But I might claim that someone is wrong if he presents an argument that contradicts a common context we've established before. If in his model there is no contradiction, he must be using different axioms than me, and isolating these differences can be a rewarding insight to both participants of the discussion. That would perfectly refute my claim of wrongness.
> Ask yourself what the real reasons are behind that particular wish of > discussion - is it _really_ for finding the "Right Thing"? (which would > imply to be _open_ for solutions that are different to your own!) Or is it > maybe more like pushing of the own way to others?
It's Yin and Yang. I can only establish facts about how important an argument is to someone by trying to push them. It is polite to keep that push as small as possible, and a strong reaction to a small push indicates a big force not originating from me. I am fully aware that this might push me around too, and I don't insist on not moving. I just believe that we all might end up in a constellation much more beneficial for all.
> Is this _really_ about investigating if CL is good or what could be done > better in Dylan? To me it looks more like marketing and advertising Dylan > here in c.l.l - and not like "honest discussion".
If you consider it advertising when I'm saying that Dylan was a good idea, then yes, I am advertising. But it's honest, since that's my opinion that I can back with arguments, and I can be convinced otherwise with better arguments.
I do not mean to flame, troll, or insult people. I'm coming here with an open mind, and a story to tell. I hope I'm finding people here of likewise ilk.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
I do not know either language and take your word for it that your offering is the same as the lisp version, but I think that misses the point of the spoof, viz, what happens /in general/ when NIL and false are different. ie, CMIIW one cannot always avoid horrors such as:
(not (null? <x>))
and:
(else nil)
..with some language feature such as (element...).
Nice read. For comparison, here's the idiom the author seeked in Dylan:
element(a-list, key, default: #f)
which even works regardless of the type of the collection like lists, hashtables and vectors, and which allows for an alternative default value in case #f is a legal element of a-list.
Andreas
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
> > You're the rock star of Common Lisp. Get your head out of c.l.l. and > > go win us some converts.
> I don't understand why some people are obsessed by the idea that > Common Lisp needs converts. I even think that converts that have to be > won should better stay away from Common Lisp.
That's unnecessarily elitist. I don't think that Lisp needs everyone who can write a line of code, but there are a lot of people who, without effort from others, wouldn't even know that Lisp exists (in its modern form). And, even if they do, there are a *lot* of cool things to learn, and if they don't have any idea how good CL is, how will they know to prioritize learning it? I don't want every halfway-stupid Perl hacker working in Lisp. I do want a lot of people who are very intelligent, concentrating on other things, and fighting against their language, without realizing the extent to which they can do something about that, to learn Lisp. How did you learn that Lisp was worth learning (instead of doing whatever else you could have used the same time for)? Being at the right place at the right time? Concerted evangelism? Both? If it hadn't been for a stroke of luck, I'd be working on C++ compilers now, because I wouldn't have realized the extent to which a language could work with me.
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
Kenny Tilton <ktil...@nyc.rr.com> writes: > are different. ie, CMIIW one cannot always avoid horrors such as:
> (not (null? <x>))
> and:
> (else nil)
A idiom one commonly sees in a number of Lisps is
(and x (some-operation-that-fails-on-false x))
which would read
x & x.some-operation-that-fails-on-false
in infix Dylan. If the compiler[0] knows that the type of x is false-or(<x>), it can even prove that x will never be false for some-operation, and optimize away type checks, function dispatch and the like.
Note that if the result of some-operation is <y>, the type of the complete expression above would be false-or(<y>).
Andreas
[0] A smart enough compiler. Functional Developer is, Gwydion Dylan isn't.
-- "In my eyes it is never a crime to steal knowledge. It is a good theft. The pirate of knowledge is a good pirate." (Michel Serres)
In article <87elmjel17....@teonanacatl.andreas.org>, Andreas Bogk
<andr...@andreas.org> wrote: > x & x.some-operation-that-fails-on-false
> in infix Dylan. If the compiler[0] knows that the type of x is > false-or(<x>), it can even prove that x will never be false for > some-operation, and optimize away type checks, function dispatch and > the like.
Gwydion handles this just fine if x is a simple binding. What it doesn't do (and bug reports have been submitted about) is optimize:
Of course in general you can't optimize this because foo() might have side effects, but in the special case of foo() being a compiler-generated slot getter (which is what the bug reports were about) the compiler can safely assume that there are no side effects and CSE it. Gwydion doesn't (yet) do this.
At one time I thought that it was correct to not CSE slot access because the value of the slot could be changed by another thread (which can't happen with a local binding), but then some of the folks who originally designed Dylan said that there was no intention to enforce thread-safety at that granularity.
* Andreas Bogk | Can anybody explain to me why some people regard the Common Lisp standard | as gospel?
* Erik Naggum
> Well, why do you regard it as gospel? Why do _you_ think in such terms?
* Andreas Bogk | I don't. I suggested that you do, based on your "it is the way it is, | get over with it" argument.
I repeat: Why do you think in such terms? Your suggestion is nothing but a way to tell the world that you conceptualize in terms of "gospel" and other religious terms. _Why_ do you do this? What purpose does such a conceptualization serve? What kind of short-circuiting of your thinking processes are you satisfied with once you can label someone "religious"? I am interested in _why_ you have this conceptualization. If you do not even recognize that in order to accuse somebody else of something when lacking evidence of it _from_ those you accuse, i.e., you must recognize that the "pattern" you see is your own mental creation, you have to think in the terms you accuse them of, please let me know that you do not even consider _yourself_ worth listening to, and I shall comply with that.
There are a few things that are never true of "me", only of "you", in the words and opinions and thinking patterns of some people. Those who make that mistake, provide the world with evidence that they cannot consider what it would mean for someone for their accusations to be true, hence they are worthless nonsense published only to pester and annoy people, because they, too, _know_ that it is untrue.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
* Andreas Bogk | I do tend to break laws I consider immoral or meaningless. Maybe this | has to do with the fact that I was raised in a dictatorship.
It probably explains why it remained a dictatorship for so long if that is what it did to its people's concept of obeying laws while _not_ trying to change them. However, I have no sympathy for those who cannot get over their hardships when these hardships go away. Barring actual mental illness, there is simply no excuse for a thinking person _not_ to change his mind when he world changes around him. And in fact, Common Lisp is _not_ a dictatorship. It is a voluntary standard, but if you purport to conform to it, you can conform to it and be an honest person, or you can fail to conform to it while you say you and be a manipulating liar. It seems to me that suffering dictatorships tells people that it is _right_ to manipulate and lie, because if you do not engage in these tactics, you suffer and die. That frame of mind may take a lot of work to get out of, but it is worth it.
| For the purposes of this discussion, the summary is: I don't buy that | metaphor, please use another one.
Then I will consider you a criminal in our little society, one who is fighting "laws he consider immoral or meaningless" simply because he has failed to think things through.
| That way, you keep outsiders to be outsiders.
Being an outsider is a personal, voluntary choice of attitude, it is not something that others can impose on you.
| Then consider yourself something like a secret conspiracy.
Again, why do _you_ think in such terms? _This_ is your core problem.
| Just delivering the results without sharing the insights is keeping out | people.
There is no such active purpose or intent. You are not in an oppressive dictatorship, anymore. Adjust accordingly.
| I reject the notion of the Lisp community being identical to the | Common Lisp community, and I especially reject the notion of CL being | used as a guide to define who's a criminal in the Lisp community.
Of course you do. You are a criminal in this community, and you want Dylan to be a Lisp. This is no different from a Scheme freak who has made up his mind that Scheme is a Lisp, such that he can capitalize on the value of being a Lisp, but can still blame "Lisp" for shortcomings while keeping everything good to be associated with "Scheme".
| I feel I have a lot of common ground with many people here, basic things | like believing that automatic memory management, dynamic typing, general | function dispatch and interactive development are good ideas.
Intelligent people tend to find people with whom they have common disagreements, not common agreements. It is not what people think is right that unite smart people, it is what they think is wrong. This is also what keeps reasonable societies and communities together. Since you have experience with dictatorships, you may recognize that what makes a society a dictatorship is that its people are forced to agree on what is right, and that has _horrible_ results.
| If I find a feature that strikes me as odd, there could be different | things going on: | | 1) It's indeed a bit odd, but people get used to it soon, so it won't | be a problem, but losing it wouldn't hurt either.
Getting rid of it would hurt all those who are already used to it.
* Erik Naggum
> In time, you will see the wisdom that there are more than one right, that > the idea that there is "one right" is wrong, but that this does not mean > that one cannot determine that something will always be wrong no matter > what is right.
| I fail to see how something can always be wrong, when something can't | always be right.
That is because you warped the statement into meaninglessness. Please think about it some more. Many people spend _years_ coming to grips with this inequality of the determinability of right and wrong and of making the mistake of believing that _a_ right answer is _the_ right answer. Wars have been fought over this, and many lives lost in bad cultures.
E.g., you can determine that something cannot be right concurrently with something else (that is right) because they exclude eachother completely. This is eminently possible without knowing what is _actually_ right. Most of how we build (good) societies is based on this principle.
Some people tend to think that because they find evidence of something, they can conclude that they have that something. This is false. It is only if you do not find evidence of _not_ being something that you can say that. Until you have looked for and not found counter-evidence, _you_ have contributed the conclusion from evidence that could point in any direction. Remember, from a single data point, you can extrapolate in any direction. Counterinformation is more important than information in determining what you have really found, because it helps exclude that which _could_ be right, but actually are not.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
* Andreas Bogk <andr...@andreas.org> | Just that I am a non-CL user (yet, I wish I would get clg working...), | doesn't mean I cannot imagine what it would be like to work with a | Lisp where nil equals '().
People who imagine things that are not so, have a very strange tendency to believe that other things remain unchanged which would be _very_ different if their simple "change" were indeed made. It takes a very, very smart person to lie consistently about something for a long time without being exposed, because all things interconnect and two things that would normally exclude eachother seem to be true at the same time. The unusual ability of liars to explain apparent contradictions is one of the things that give them away. The knowledge of the world possessed by honest people is limited in strange and unpredictable ways, and sooner or later, you run into something they cannot explain, but this is _normal_. A person who has constructed a make-believe world has had to make up so much that the boundaries of their knowledge tend to be more predictable and they exceed other people in their detailed knowledge of their world, because of their fear that the unexplainable will give them away. Even knowing this, it is extremely hard to lie convincingly -- those who are best at it write long novels, which differ from other elaborate lies in that they do not even _intend_ to be true.
In other words, I strongly doubt that you can.
| As a feature, it feels like a convenience hack so you can write | (if foo) instead of (unless (empty? foo)).
Is this the extent of your imagination?
| That's not much of a gain, given that you have just violated the design | rule of having a way to differentiate between a valid and an invalid | result.
Where the hell did this rule come from? I thought you had rejected laws that were immoral or meaningless because your upbrining in dictatorships. What makes you even _believe_ that you can dictate such rules and _not_ have people object to the nonsense?
| Still, it adds to the learning curve for newcomers, and potentially uses | up cycles in your brain that you could use to solve the actual problem | instead.
As a matter of fact, (when foo ...) has a _much_ lower cognitive load than (unless (empty? foo) ...). If you at _least_ had rewritten it as (when (pair? foo) ...), you might have a fighting chance, but the two are not quite similar -- foo could be a non-list, in which case empty? might provide the wrong answer. An empty string or vector or hashtable or package or whatever is true in Common Lisp, but empty? should be true of all of these. You would in fact have to be
to be an accurate "translation", or you could of course write
(unless (not (eql foo <false>)) ...)
which just proves that (when foo ...) is the _correct_ choice!
| As with laws, it's hard to see afterwards what the compromises involved | were. Judging from what I've read in several documents about the history | of Lisp, CL was a rather hairy compromise.
That _should_ tell you something about people, _not_ about languages.
| I just sometimes have that imagination of a painting designed by a | committee of Rembrandt, Van Gogh and Dali.
When I see people denounce the work of several people who work together, I see a person who thinks _much_ too highly of his own abilities. Out of all the millions, if not billions, of painters in the history of the world, the handful of geniuses who _did_ paint better than a committee would have done actually prove that committees do a better job than the (- total-world-population number-of-geniuses) people would. However, if you think of _yourself_ as the Rembrandt of programming language design, this may be hard to understand. However, since irrationally exaggerated egos tend to cause few problems until they are challenged (at which point such people implode and/or become physically violent), staying away from people who put a bullet through inflated egos is a good survival tactic, as is trying to intimidate anyone who can expose them, and one may in fact keep believing that one's ego is the correct size for quite a while. E.g., I know a lot of people who are better than me at many of the things I want to be good at, but I know far, far more people who only _think_ they are and who have yet to wake up and smell the coffee and realize their "ranking". These latter people tend to hate me for not allowing them to keep thinking they are far better than they are.
| One of the things on my list is finding out whether this benefit is | really there or if it could be achieved by other means.
Whether it could or not is irrelevant unless you are designing a new language from scratch -- and you do not do that in a newsgroup for an established language, at least not under such pretenses as you do.
The question is whether it should even be attempted. Smart people can figure out better ways to make democracy work, but when people who are too smart for their own good get brilliant ideas, they tend to set up dictatorships, instead, because the royal mess that is democracy in action is actually _much_ worse than _any_ isolated theory could be -- until implemented. And that is what makes them _better_, because the crucial element of a democracy is that people agree only on what _not_ to do, not on what to _do_. Basically, what they end up doing is a fall-out of what they have agreed to _exclude_ from the possibility of being done. Given the resources of modern countries, _anything_ could be achieved. It is what we give high enough priority that it excludes a lot of stuff that actually gets done. In the budgeting and prioritizing process of politics, the actual agreements are over what _not_ to do with all that money, what _not_ to bring up again during the budget period. Budget debates are not about the money, but about killing political ideas.
| That's just to lure in the newbies, in whose eyes this *is* a bug.
So you admit to fraudulent marketing. Well, good luck with Dylan.
| In my view, it's a minor inconvenience that I don't actually mind | anymore, and probably just a cultural thing.
"Just a cultural thing"? That is precisely what the super-tolerant idiots say about the molestation of young females in backward cultures that claim it is their "religion" that defends this criminal act against at least half of humanity. Cultures are tremendously important, and some of them are just plain _bad_.
_Culture_ is at the very core of why people choose language communities.
| The s-expression argument comes up quite often. Why not, as an | experiment, start telling the newbies that, even though you think | s-expressions are superior, they can try Dylan to learn the basic | concepts, and then come back later to learn about advanced concepts.
Why the hell would Common Lisp users want to do that? I think you, the proposer of this idiotic manipulation attempt, suggest to your Dylan users to try out Common Lisp before they tire of Dylan's shortcomings. Man, you are so incredibly short-sighted you insult your own intelligence with such a stupid, stupid suggestion. You really _are_ a marketing and advertising person, are you not? Zero technical skills compensated for by lots of smooth talking could produce such an incredibly _dumb_ attempt to pull the wool over so many people's eyes, but not honesty and smarts.
| Discussing the Right Thing naturally boils down to discussing the | context, and that's productive.
That "context" is a large framework of what has been excluded from the discussion. In essence, The Right Thing is whatever is left when you have agreed not to pursue a very large number of paths. It is the same way when people say they have chosen their new car through a careful process of weighing positive and negative sides, cost and efficiency, and can make a perfect explanation for why this car is _the_ best choice. What they usually omit from this story is how they "decided" to not even consider 99% of the car market before they started weighing anything at all and probably were left with a handful of models, if not actual cars, based on unexpressed and emotionally determined desiderata, among which some _actually_ irrelevant factor was "weighed" and found sufficient.
To trace the history of how we ended up with our conclusions, ignore all the explicit arguments and premises and logic and focus on what went down the drain before you even _started_ to think about it. _That_ is where you will find the history. It is not as accidental as you might think. What we do _automatically_ is what defines our sense of culture. If you come from a different culture, you will fail to find the reasons in the _explicit_ history of the new culture. (This is why history is such a hard discipline and requires people who are able to put themselves in the context of their discoveries.)
It is fundamentally unproductive to "discuss" the context. Either you grasp it more or less automatically, or you fail to. If you do not, you can find particular reasons why it failed, but if you persist, you will only be an outsider looking in at something you do not understand. If, on the other hand, you accept that whatever this new thing is, you should let it influence you before you try to influence it, you will slowly grow into its frame of mind in ways that are incredibly hard to explain because it happens just as implicitly as how two people grow together when they live together, how pets and their owners communicate without any signs that outsiders can observe, how we attribute this to intuition when in fact it is nothing more than the ability to discern signals that other people overlook.
* Andreas Bogk | The biggest obstacle in automatic translation from elisp to, say, | scheme, is that elisp has dynamic scoping, whereas scheme (or CL for | that matter) employs lexical scoping. Well, you could make all local | bindings dynamic bindings, but the code would be a mess.
Nonsense. The biggest obstacle is that any usable Emacs would have to implement an Emacs Lisp so faithful to the original that it would never see any users switch to the new and improved Emacs Lisp who could find even a smidgeon of old Emacs Lisp code to get useful things done, and since the new Emacs would not supplant the old Emacs unless people were confident that their old Emacs Lisp stuff worked in the new, it would one giant project to prove that Emacs Lisp can be hosted on something other than the old C engine, which has approximately as much value to any Lisp community as a Dylan advocate wasting their time with design discussions.
_People_ is the main impediment to human progress. I wonder what kind of extraterrestial influences those who do not understand this are under.
| A scientific result changed what seemed to be like a heroic task into | something manageable.
I fear that you actually believe this, which is pretty tragic.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.
* Andreas Bogk | People's opinion about this one varies, as well as about other features. | The argument "It's not broken because CL says so" doesn't count.
"It is not illegal just because the law says so", said the criminal, ...
| I'm interested in arguments that sound like "CL does the Right | Thing because..." or "CL does the Wrong Thing because...".
... "I am only interested in arguments that sound like <whatever>".
I think we have ourselves another specimen of that immature humanoid who has yet to figure out that _people_ actually count.
Let me be nasty for a second. How old are you, Andreas? 18? 16?
That people can agree to things without proof of excellence is a good thing. But I guess Dylan is just as anal-retentive as Scheme and that the reason we have a current influx of Dylanites is that nothing happens in the Dylan community.
The biggest problem with all these "logical" types is that they have no clue how to choose the premises from which they draw their conclusions, they just take them for granted, unquestioned, received by revelation, and cannot fathom that anyone would disagree with their premises, only with their conclusions. E.g., the premise that technical debates in a community who has already agreed on a large standard are based in logic from _their_ choice of technical premises. That is simply _wrong_.
/// -- The past is not more important than the future, despite what your culture has taught you. Your future observations, conclusions, and beliefs are more important to you than those in your past ever will be. The world is changing so fast the balance between the past and the future has shifted.