| Is there not some kind of mission statement for Python that could be | used as a predictor, at least, of what Python may eventually end up | with? Or have they optimized for unsearchable judgments and ways | past finding out?
They have PEPs (Python Enhancement Proposals?) some of which will make it into the language. Guido of course has the last word, but PEPs are regularly discussed on comp.lang.python, and following that group is probably the best way to find out which way the language is heading. (I no longer read c.l.py, as I don't use the language much anymore and the amount of traffic there has become overwhelming anyway - so things may have changed.)
> > Personally, I would like to see the LISP community impose on itself a > > moratorium on research and development in order to focus on making LISP more > > widespread as the primary goal (at least for the shortrun).
> > With all the minds in the LISP community, LISP can't find a better market > > than it has?
> I don't think the CL community is doing much R&D into programming > languages, as a community. [...] > So I think the CL community really is trying to make CL more > widespread at the expense of language research. There may be other > `lisp' communities (perhaps the scheme community) where things are > different, but they are different groups of people by & large.
What I had in mind was ACM LISP and Functional Programming conference material that is more theoretical like lambda calculus, combinators, denotational semantics, and beyond.
All crucial topics; but given a choice of more emphasis on marketing LISP versus more esoteric stuff and I'd have to opt for the former (at least in the short run).
I'd love to see ILC '03 have a theme of "Marketing LISP" and invite papers on that topic; with perhaps 2 or 3 days devoted to papers on that topic.
If the LISP community focused on making LISP more widespread I have confidence it could be achieved by the brain power within the community.
[...]
> PS I'm not trying to put your talk down. I wasn't at the conference, > and even if I was, and disagreed with what you said, I appreciate the > effort too much to want to be nasty...
I know you're not; and I don't want to give the impression to anyone that I would jump on anyone for disagreeing. I welcome it: that's the very purpose of academia and conferences.
The only caveat is: I want people to talk about my topic; not me!
And of course, I would hope that critics would at least be fair!
Erann Gat wrote: > In article <_hMy9.1126$Aq5.112...@newsread2.prod.itd.earthlink.net>, > "Andre van Meulebrouck" <vanme...@earthlink.net> wrote: >>Java and Python don't have closures. > Python has had closures since version 2: > Saying "Python doesn't have closures" is like saying "Lisp is a slow, > interpreted language."
g...@jpl.nasa.gov (Erann Gat) writes: > In article <_hMy9.1126$Aq5.112...@newsread2.prod.itd.earthlink.net>, > "Andre van Meulebrouck" <vanme...@earthlink.net> wrote:
> > Java and Python don't have closures.
> Python has had closures since version 2:
This can be disputed.
> Python 2.2b2 (#1, Dec 4 2001, 02:00:33) > [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-85)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> def foo(x): return lambda(y): x+y > ... > >>> baz = foo(3) > >>> baz(5) > 8
My turn! Suppose we want to mutate a variable from an outer scope:
Python 2.2b2 (#1, Nov 21 2001, 14:42:03) [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-81)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> def bar(x):
... def acc(y): ... x += y # assignment is a "statement" so can't go in a lambda ... return x ... return acc ...
>>> qux = bar(0) >>> qux(0)
Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 3, in acc UnboundLocalError: local variable 'x' referenced before assignment
Oops! No can do. This bites. Certainly it bites me, hard and more often than I'd like. If "closures" which use this kind of look-but-don't-touch scoping are good enough for you, then python has closures. (They fixed scoping, and now I wish they'd fix the fix. Sigh.)
Incidentally, there's a thread over in comp.lang.python at the moment about Lisp, if anyone wants to pop over for a spot of gentle advocacy. It would make a pleasant change if somebody put the case for today's Lisp over there - these discussions are usually dominated by traumatised ex-students of delinquent AI professors, with the occasional Scheme weenie frothing about the Inherent Necessity of tail call elimination.
> Saying "Python doesn't have closures" is like saying "Lisp is a slow, > interpreted language."
The former is debatable, the latter is a category error. How about "Lisp is popular with academics doing AI"?
Des -- Des Small, Scientific Programmer, School of Mathematics, University of Bristol, UK.
> Andre van Meulebrouck wrote: > > The fact that a widespread language like Javascript is as close to LISP as > > it is; I view as an open door that should be leveraged: the conventional > > world is converging on LISP and helping that process along might be more > > fruitful than trying to sell the world on LISP (the latter might be a job > > better left to Sisyphus).
> Two thoughts. One, if we think selling Lisp is hard, wait till we try > influencing the JavaScript designers.
Why? You don't have to bother with Javascript designers; you merely have to participate in the standards committees for ECMAScript.
And, the LISP community could circumvent even that issue by coming out with SchemeScript and creating browsers that support both Javascript and SchemeScript as scripting languages.
> Two, Lisp will lose a lot of its > appeal morphed into JavaScript, making it harder for Lisp to prevail.
That's an important issue to grapple with and I addressed it in both my paper and my presentation. (Generally my presentation went beyond my paper; but there are a few things in the paper not in the presentation.)
I think the world is big enough to support burgers and fine dinning (and sometimes fine dinners feel like eating burgers and vice versa).
In other words, I see no problem in the masses have a shlock LISP. LISP becoming popular would not be the death of LISP. There is still plenty of room for purists versions of LISP; and with a greater influx of users and money, I am certain there would be plenty to go around to make every conceivable taste in LISP quite happy.
In other words, an infusion of money and popularity would be the tide that floats all boats.
> I > get your idea of playing the virus if we can't stomp the beast,
Well said! Nice way of putting it.
> but then > I think we /are/ stomping the beast already, most CLers just do not > realize it yet.
I don't see how: I'm not following you. Perhaps you could elaborate?
I think a Scheme based scripting language is necessary for the masses because Common LISP is a little too large and high end for the average joe.
> > Rather it should > > encourage the building of bridges from the LISP side in order to meet > > conventional languages half way.
> Screw conventional languages. ;) We have just begun to fight, and we are > winning. Python, Java, and Perl are lame efforts to stave off the > inevitable triumph of Lisp. As when the communist block attempted to > turn itself around by allowing a little capitalism and a little > political freedom.
Hope you're right, but I don't see that as the case in Javascript.
> > It was my intention to focus on future wins that are still possible rather > > than lamenting lost opportunities; hence my upbeat and optimistic tone. > > However, I believe the LISP community has failed very badly at marketing > > LISP and many lost opportunities are now gone, perhaps for good.
> This gives me a whole new perspective on "upbeat". ;) Hey, your love of > Lisp is obvious, but don't, um, despair, that other branch in the tree > of languages is now growing in our direction because they want what we > have. And I would not call them hubcaps, they want our fuel injection, > ABS, airbags, and low drag coefficient.
Yes.
> As with my communism analogy, it > is only a matter of time before they go for sexprs, then the fat lady
sings.
I'm not sure that's the case in Javascript.
When I first starting working in Javascript, I saw Scheme nomenclature in it and Scheme fingerprints all over it.
Then the O'Reilly Javascript book came right out and said it by comparing "functional literals" (closures) to "LISP". Dare they utter the "L" word? I had the feeling I was being let in on a deep dark secret that Microsoft would just as soon no one knew about (lest the "L" word prove the kiss of death for marketing).
However, I have never met another Javascript programmer that uses closures, nor even knows what they are; leave alone that they are in Javascript.
I've been told by Javascript programmers that they have never seen a Javacript programming style like mine before anywhere (not on usenet, not on the net, not anywhere).
When I try to explain closures to Javascript programmers, they not only fail to get it; they look as if they feel threatened. Only one conventional programmer understood me; but that's because they have a background in LISP from Emacs. (And I thought I was good at explaining things! =:0)
I've yet to meet someone who doesn't have a LISP background that understands closures.
So, why are closures in Javascript if they aren't being pushed or even used? How did they get there? Inquiring minds want to know; so I asked the inventor of Javacript whether it had any LISP heritage (on the sly or otherwise), via e-mail. No response (presumably they are innundated with e-mail). However, Netscape has a parser/grammar in CL so I do suspect at least some LISPiness at Netscape, though this is all terribly anecdotal conjecture on my part.
I have yet to see a Javascript programmer ask for macros or a first class IF function.
Languages can expand our thinking or limit it. If the language doesn't support a feature; you're less likely to imagine it in its absence.
Exposure to LISP is the antidote to tunnel vision; that's my feeling on it.
> I like to point out here that I remember when IT had standardized once > and for all on COBOL, VSAM, CICS, BASIC, and Pascal. C++ dominated for > about a week. Now, fuggedaboutit, nothing is going to stop Java. (Ignore > those people over there doing Python, Perl, and Ruby.)
You are persuasive and give me hope! I see your point. Good observation. No matter how strong things seem now; the industry is very quick to move on to new things: you're point is well taken.
Likewise, I recall when the newspapers were full of ads for PICK BASIC; now that's a dinosaur with a flash-in-the-pan history.
> > Personally, I would like to see the LISP community impose on itself a > > moratorium on research and development in order to focus on making LISP more > > widespread as the primary goal (at least for the shortrun).
> By the same token, we cannot make Lisp more popular.
How about if we agree to disagree about that: I think we can and should (and MUST) make LISP more popular by making it more accessible and via education efforts (short of evangelism).
> We can make Lisp > even better (an open source ODB or GUI or whatever) and we can talk Lisp > up (KP's bit on slashdot was great), but all in all i think we should > forget popularity as a primary goal. Besides, it is happening anyway. We > just need to grease the skids with a Lisp browser plug-in or other cool > stuff in "100% Pure Lisp".
Hear hear on the LISP browser! That's right out of my talk!
> > With all the minds in the LISP community, LISP can't find a better market > > than it has?
> The problem is the minds not in the Lisp community. almost all IT types > are followers. We do not need to win over the herd, we need to win over > the few who lead the herd. And looked at this way, it becomes clear why > popularity is not something one tackles head on, because the herd is > really just following a few; they do not even have free will, how are we > going to win them over?
By innovative products!
By continually trying new things until we find something that does the trick.
By not giving up (move over Sisyphus!).
> > Moreover, there would be more money for R&D if LISP > > focused on trying to be of service to the world at large (thereby gathering > > more of a grass roots following).
> How does a more Lisp-y JavaScript create revenue for Lisp vendors?
By being a step in the right direction. By incrementalism. By making it easier to write code transformers from LISP to Javascript (which would get easier as Javascript gets cleaner). By trying to meet in the middle.
By combining that with a LISP browser that supports Javascript so that Javascript programmers will want to move over to LISP in a non-threatening way at their own pace.
> >>Perhaps coincidentally, the > >>speaker left town immediately after the talk. :-)
> > While I don't offend easily, I really think that's a cheap, gratuitous pot > > shot.
> FWIW, it was offered and taken (by me, at least) in jest.
Oh I'm sure it was. I probably have thin skin too.
However, given what I saw as an unfairly mocking (and even condescending) misrepresentation of my presentation, the joking innuendo was seen by me as more condescension and tantamount to telling tales out of school.
I'm much more shy and retiring than I probably seem (I probably seem more extroverted than I really am). And as open as I seem I view my privacy as extremely sacrosanct.
So, I am very interesting in talking about a topic but not becoming the topic; i.e. I don't like it when it gets personal and people want to talk about me personally.
If the same joking comment had come from a trusted friend, I would take it as a good natured needling (that's what friends are for ;-) . But coming from someone that doesn't know me from Adam behind my back (I never normally read this list or usenet), in a public forum that gets archived forevermore and can turn up in search engines; well that's a bit of a different story, and I bet you'd see it more my way if you were on the receiving end of a barb rather than being a disinterested observer. (Though you might handle it better than I did, I bet you dollars to donuts you might have some colorful words for the sender of such a barb privately.)
I came across the review quite by accident and it really made my blood pressure go up!
However, the person in question and I have exchanged e-mails privately and there is no rancor: I'll just chalk it up to a misunderstanding and try to develop thicker skin, but I do insist that the internet, and the LISP community in
> Erann Gat wrote: > > In article <_hMy9.1126$Aq5.112...@newsread2.prod.itd.earthlink.net>, > > "Andre van Meulebrouck" <vanme...@earthlink.net> wrote: > >>Java and Python don't have closures.
> > Python has had closures since version 2:
> > Saying "Python doesn't have closures" is like saying "Lisp is a slow, > > interpreted language."
> It appears that the body of the lambda-expression must be an expression > (and not all statements in Python is expressions).
There are problems with lambdas, but you don't have to use them.
>>> def foo(x):
... def f(y): ... print "Hello, World!" # <-- doesn't work in a lamda expr ... return x + y ... return f ...
>>> bar = foo(2) >>> baz = foo(3) >>> bar(1)
Hello, World! 3
>>> baz(1)
Hello, World! 4
Additionally, I don't know any statement that couldn't be translated into an expression, for example "print 'foo'" could be written "sys.stdout.write('foo\n')". But that often becomes clumsy.
> "Andre van Meulebrouck" <vanme...@earthlink.net> writes: > This is where I don't understand your approach. Language extensibility > via macros is a killer feature for Lisp, but it's exactly the feature > that javascript, say, would resist, because as you've identified > above, it'd be a mess. That suggests to me that we can't turn > javascript into lisp. So how exactly _do_ we leverage this door?
I've outlined some of this in my paper (are the proceedings out yet)?
Program transformations from LISP to less pure, more mucked up syntaxes.
Even in a mucked up syntax, I still think macros are worth having.
Propose syntax changes/extensions to the standards committees.
I.e. alternative, functional operator syntaxes (as extensions); even if programmers didn't use them, macros could.
If you supported Javascript via LISP syntax and had a converter to convert it to C style syntax, the gap could slowly be closed up.
If the LISP world supported browsers/listeners that supported DHTML standards and supported both SchemeScript and Javascript; the transformations between the two would become less painful as they met in the middle.
If script blocks in both languages were supported (as they are for VBScript and Javascript), Javascript programmers could use LISP browsers supporting W3C compliant standards and then slowly branch out to LISP at their own pace.
> > Personally, I would like to see the LISP community impose on itself a > > moratorium on research and development in order to focus on making LISP more > > widespread as the primary goal (at least for the shortrun).
> Google searches suggest to me that your major involvement with Lisp > tends more towards Scheme than CL,
I've used Common LISP in the past; but prefer Scheme, which I view as more pure, lighter, more ubiquitous, less expensive, and more of a lingua franca.
I haven't worked for an employer for a very long time that uses Common LISP.
Most employers I've seen (including think tanks!) are dumping LISP and Macs as fast as they possibly can. (Cost is not a concern for them when getting rid of LISP and Macs!)
I want to be extremely mainstream; that leaves no room in my world for CL, however I think it's a wonderful and industrial strength LISP. I am all in favor of it.
But I don't see CL as being as good a bet for browser scripting, students, and home users. Sorry! I'm interested in solutions for the masses.
> I don't see much > if any language R&D going on here;
I answered this in another post, but to recap: I was refering to R&D of a theoretical nature (lambda calculus, combinators, denotational semantics). Those are extremely important but more esoteric offshoots are less interesting to me at this time given LISP's marginalized status.
For instance, I'd rather see more papers on marketing LISP rather than pondering whether the Milner Mycroft Calculus is tractable.
> What kinds of initiatives would you like to see the Lisp > community get involved in? I'm looking for concrete suggestions.
Did you attend my talk?
I'd like to see all LISP vendors subsume the browser metaphor (is that the right word?) into listeners that support W3C DHTML standards. That way LISP would have DHTML in common with the rest of the world and if LISP browsers supported Javascript that would make LISP accessible to non-LISP programmers that care not a whit about LISP. (They might want such a browser/environment just for web development or application writing; the fact that it has LISP in it is foder for rainy day discoveries of LISP at their liesure.)
When people want LISP products not because they use LISP but because the LISP products are awesome; that's when LISP becomes very accessible and ecumenical. The LISP market niche is too small if it's targeted purely to LISP programmers.
I'd also like to see Scheme as a scripting language in a browser that also supports Javascript (using the exact same engine).
I outlined ways that Javascript could be cleaned up without breaking existing code, that would allow Javascript and SchemeScript to converge on merely be different syntaxes or front ends for the same underlying engine.
This would then make LISP accessible: I see browsers as a poor man's listener and all around development environment, complete with GUI making facilities. (They are already being used that way; I'm simply suggesting the insertion of LISP into the mix so that LISP can get in on the action.)
I'd also like to see LISP participation in DHTML standards to provide an influx of good taste; and DHTML standards adopted by LISP for writing GUIs so that LISP has more in common with the neighborhood kids. Using CLIM while the rest of the world is using DHTML doesn't help LISP popularity.
This is the time to get in on the ground floor of DHTML standards before they become set in stone.
> Erann Gat wrote: > > In article <_hMy9.1126$Aq5.112...@newsread2.prod.itd.earthlink.net>, > > "Andre van Meulebrouck" <vanme...@earthlink.net> wrote: > >>Java and Python don't have closures.
> > Python has had closures since version 2:
> > Saying "Python doesn't have closures" is like saying "Lisp is a slow, > > interpreted language."
> > > I still can't get a straight answer from any Python users about how > > > scoping works in that language,
> > OK, what do you *want* to know?
> Is it lexical or dynamic?
Hah. Well, the namespaces that are searched by a given look-up are determined lexically, though the names in all of them are not known at compile time.
There's nothing like CL's dynamic variables.
> Version 2.x fixed one very nasty and uninituitive aspect of the > scoping issues in Python (version 1.x), but I do not know if you can > the classify the language in either categories yet.
Pre-2.1, there were only three namespaces that were ever searched for a name: the local namespace (which is determined lexically), the "global" namespace (i.e. the namespace of the (lexically) enclosing module, which although determined dynamically doesn't in practice change frequently) and the "built-in" namespace (which is a little like the CL package -- it contains stuff you expect to be "always there").
Post-2.1, intermediate lexically enclosing namespaces (contents determined at compile time) are also searched.
On 01 Nov 2002 12:04:36 -0800, Fred Gilham <gil...@snapdragon.csl.sri.com> wrote:
> Another speaker was Richard Greenblatt of MIT & LIM fame. Let me [...] > He started off on what I considered the wrong foot by saying that CLOS > was a bad idea because it had multiple inheritance and multiple > dispatch, and Lisp would be better off with something more like the
* Andre van Meulebrouck | I want to be extremely mainstream : | I'm interested in solutions for the masses.
There are two ways to do this. The first is to become indistinguishable from everything else so the masses pick you at random and generally by mistake. The second is to stand out and let the masses come to you. The first option appears to be irrelevant. That must mean you believe you can make the masses come your way. If you believe this, you should realize that it does not matter what the "mainstream" and the masses are /today/, because you can change that. Any position between these two is failure.
-- Erik Naggum, Oslo, Norway
Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.
Now showing on CNN: Harry Potter and the Search for Weapons of Mass Destruction
> "Andre van Meulebrouck" <vanme...@earthlink.net> writes: > > The conventional world is stealing LISP hubcaps rather than just stealing > > the whole CAR.
> Everyone "steals" ideas.
Right, that's good. It's just frustrating to see them steal some of the more trivial things rather than the meatier things; or reproduce LISP wheels in inferior ways.
> In fact, it couldn't gratify the Lisp community > more than to see other langauges learn from them.
Agreed.
> > Given that approach, I think the most valuable aspect of > > LISP for a conventional language to acquire is closures (by far!). (If we > > could get only one feature into a conventional language from LISP, that > > would be the feature to shoot for.)
> As others have stated, languages are already doing that.
Agreed. Thus my contention to help the process along.
> > I never suggested that Javascript's proximity to LISP should be cause for > > declaring a premature victory and resting on laurels! Rather it should > > encourage the building of bridges from the LISP side in order to meet > > conventional languages half way.
> This is being done, without abdicating Lisp itself.
As I made clear in both my paper and presentation; I don't want to see LISP give up its essence in the name of compromise.
However, I don't know what you would point to as efforts on the LISP side to bridge the gap to the conventional world, so I can't comment further.
> Instead, we build > bridges between Lisp and other languages, thus making it a great connection > glue even in areas where other languages have found a niche.
I'm happy to hear that, but haven't seen anything yet that I'd consider very ubiquitous.
> > It was my intention to focus on future wins that are still possible rather > > than lamenting lost opportunities; hence my upbeat and optimistic tone.
> As was pointed out by another poster, this sentence doesn't ring true, due > to the smashing of the optimism that you do so well in the next (incorrect) > sentence:
I fail to see how those are not reconciled.
Some battles have been lost. Some can still be won. I wanted to focus on the latter rather than the former.
> > However, I believe the LISP community has failed very badly at marketing > > LISP and many lost opportunities are now gone, perhaps for good.
> How does a language, which has no hardware coattails to ride behind like > C/C++, but which supports four or five commercial vendors and at least > as many free/opensource vendors, fail mbadly at marketing? Does it need > 100% of all markets to be sucessful?
I found the above a bit obtuse to parse, but assuming I'm following you...
LISP should not need hardware coattails. I don't get that at all. LISP should be able to run on stock hardware. The hardware is out there, it's cheap, it's plentiful, it's powerful enough. Compiler technology is awesome these days. What's the problem?
> > (For > > instance, XML is here to stay but it should have been s-expression based: > > this was a missed opportunity for which I don't think there is much hope of > > an antidote in the foreseeable future due to momentum.)
> Lisp is gracious to allow XML to languish in its niche, and to help it along > by providing tools for working with and generating XML.
Why didn't LISP lead the way in the first place so that we never had to see XML? Or HTML?
> > If my talk was to be condensed into an anecdote or characterization, perhaps > > it should be this: "repetition is the mother of learning"; which was my > > recurring theme. In order to grow a technology it needs to learn, to learn > > it needs lots of repetition; to get that repetition there must be a lot of > > users, to get those users you must be widespread.
> So what is it that you are repeating? What, for example, is JavaScript > learning?
Usage data by users. Lots of users, using lots of machines, using lots of s oftware to amass huge volumes of real world experience data.
The kind of data you cannot get by doing all the upfront thinking you can in a lab.
Finding out the types of things you missed in the lab or didn't think of or couldn't even imagine.
It's like planning a trip: at some point you must just go and learn by doing. There are limits to how much you can plan or even imagine about what you'll encounter along the way.
Testers and users are wonderful. The more the merrier.
> > Personally, I would like to see the LISP community impose on itself a > > moratorium on research and development in order to focus on making LISP more > > widespread as the primary goal (at least for the shortrun).
> What R&D is it that you think is taking Lisp from its primary goal?
I'm answering this for the 3rd time, so I'll be brief. I'd like to see applied R&D supplant more theoretical R&D until better financial stability is arrived at. Then, more esoteric directions are okay to pursue once again.
> > With all the minds in the LISP community, LISP can't find a better market > > than it has?
> The world is Lisp's market. My wife and I just watched our DVD of a James > Bond video again, and its title says it all - apparently, "The World is > Not Enough".
???
> > I'm all in favor of R&D, but I think that's a luxury after the basics have > > been accomplished and the community has some degree of financial health; > > otherwise it's moot! Moreover, there would be more money for R&D if LISP > > focused on trying to be of service to the world at large (thereby gathering > > more of a grass roots following). It's all a matter of getting priorities > > straight!
> Whose budget are you looking at? My question above still stands, along with > another: What R&D is being squandered away by the Lisp community? And > whose financial health would removing such R&D thus improve?
I think pondering estorery when your house is burning down is not a good idea.
I think getting your house in order should be a higher priority.
> > Science is not alleviated from marketing: if you build a better mouse trap, > > it is your job to explain why it is advantageous. LISP has much to offer, > > but will it ever be properly offered? If we do our part to make it > > accessible and it still isn't accepted; at least we will have done our part.
> What part have you been doing?
Did you attend my talk???
Writing, education, participation in fixing bugs and suggesting improvements, participating in R&D, beta testing. At some point I want to participate more closely with the actual standards process rather than going through intermediaries.
Every day I program in conventional languages I'm working towards the goals mentioned above (which you are asking me about); as long as I do it in a LISP style rather than a conventional style. What good is theory if it isn't applied? What good is LISP if it's not part of your essence? If it's part of your essence, you don't have to have a LISP job. You can breathe LISP into the conventional world, everywhere you go, in everything you do. That is actually much more interesting to me than having a classical LISP job!
The world can deprive me of LISP tools; but it can never deprive me of the concepts I've taken from it. Hence, that is ultimate LISP job! That is the ultimate LISP freedom!
> What use of Lisp are you making,
Using what I've learned from my experience in LISP and applying it to whatever I am doing in whatever kind of tools I'm being asked to used in the most mainstream situations I can possibly work in. That is my challenge!
Taking what I've learned from Lambda Calculus, combinators, theory, LISP, etc.; then applying that to the most mundane situations the world has to offer, and making a direct difference that can be immediately seen in font line applications that are as widely deployed in the work-a-day world as I can possibly get.
That gives me great satisifcation from seeing even the most esoteric ideas applied to every day life to make life better for the greatest number of average people as possible. I'm very interested in the plight of the working stiff and the average joe on the street. If you can't make a difference to them, what good are your tools???
I feel that if what I learned from LISP can only be applied by using LISP itself; then I do not understand LISP at all! My knowledge of LISP would not be applied enough to make me happy.
I would much prefer to apply LISP by writing a LISP interpreter inside a conventional application than to actually use LISP from a LISP vendor. I'd learn a great deal more by having to implement the LISP I use rather than using a LISP someone else wrote.
If given a choice of M*A*S*H style real world, front line programming; or R&D LISP programming, I might actually prefer, and be happier, in the former situation; and might not be able to find a satisfying home in the later.
The challenge I'm interested in is applying theory to the mundane rather than into R&D enclaves.
> and how does > promulgating JavaScript count as "making Lisp acceptable"?
Did you attend my talk or read my paper? It's all explained in there already.
My bottom line, non-negotiable starting point is that I only want to use the most ubiquitous tools that are available (and that is never LISP, at least not yet); and to be as recession proof as possible, and to be as mainstream as possible.
From that starting point, I want to apply LISP techniques and concepts (if not LISP itself) to those situations. That is what I find interesting.
> Well, I just saw it as a simple dig. Perhaps you are more sensitive than you > think. "Methinks thou doest protest too much" - you did make yourself > public by giving a talk.
Giving a public talk means I want my topic to be in the limelight, not me! I never wanted to be the topic in a personal way. Giving a public talk should not avail me to pot shots and target practise. If it does; I'm not
...
> Duane Rettig <du...@franz.com> writes: > What is great is that once you start using Lisp at work, even when you work > on "non lispy" problems (i.e. things you could equally well do in "standard" > languages), life is still _so_ much better/cleaner/simpler. And pretty soon, > the people around you stop seeing lisp as a niche language and start accepting > it as "a programming language".
Sorry to be a contrarian, but...
If given a choice of doing object oriented Javascript programming versus procedural LISP (i.e. a LISP system that doesn't have an object system); I'd opt for Javascript!
There are so many ways in which LISP is being surpassed and falling behind.
I have often been in the situation where I could get an employer to use LISP if I had wanted to. Why didn't I? Because the database connectivity and interfacing with other real world aspects of systems just wasn't there. And partly because the programming expertise wasn't there to read LISP code (others have to maintain your code while you're gone).
> Stop the Lisp bigotry now! :-)
From the other side of the fence, I like to suggest ending LISP snobbery! That hurts in LISP's acceptance too.
There is a lot about these issues that cuts both ways.
Sometimes I think if I had to wager on the conventional side becoming more palatable and LISP-like versus the LISP side becoming more practical, applied, real world, and viable; I'd wager on the conventional side of the fence.
No one wants to get fired for suggesting a solution that turns out to be problematic. People often go with Microsoft for that reason: it's not as elegant as LISP but they are confident they can get the system working and have the support they need.
That's the problem to be solved!
At one time the Mac was far better than Windows. IMO, that is no more.
And VB was a nightmare; but now it really is getting much better.
This was another tenant of my paper: it's possible for the ubiquitous thing to surpass superior technologies by virtue of accumulating huge amounts of usage data and responding to them incrementally.
> * Andre van Meulebrouck > | I want to be extremely mainstream > : > | I'm interested in solutions for the masses.
> There are two ways to do this. The first is to become indistinguishable > from everything else so the masses pick you at random and generally by > mistake.
You lost me there. I have no idea what you're talking about.
> The second is to stand out and let the masses come to you.
Absolutely not; in fact that sounds very arrogant.
The idea you're espousing typically goes like this:
Build a better mouse trap, and the world will beat a path to your door.
I don't think it works like that at all!
You must go OUT to the market rather than thinking the market will come to you!
You must find out where they live and live there too.
You must find out what the market place wants and provide it; and provide it better than anyone else is providing it.
You must have a willingness to serve rather than a desire to work with cool technology (the latter is icing on the cake if you can get it).
You must convince customers you are there when they need you; and you are there in force with staying power so that they don't need to worry about you going out of business and leaving them high and dry.
You don't want to STAND OUT; you want to FIT IN, GET ON BOARD, and play ball with the neighborhood kids.
You do not want to be a LISP snob or a prima Dona!
> The > first option appears to be irrelevant. That must mean you believe you can > make the masses come your way. If you believe this, you should realize > that it does not matter what the "mainstream" and the masses are /today/, > because you can change that. Any position between these two is failure.
How about this:
1) Determine what the juggernaut is. 2) Climb on board and ride the juggernaut rather than being crushed by it. 3) Try steering the juggernaut from inside the juggernaut rather than from outside.
On Fri, 08 Nov 2002 10:24:58 GMT, "Andre van Meulebrouck"
<vanme...@earthlink.net> wrote: > However, I believe the LISP community has failed very badly at marketing > LISP and many lost opportunities are now gone, perhaps for good. (For > instance, XML is here to stay but it should have been s-expression based: > this was a missed opportunity for which I don't think there is much hope of
Such attempts were made, probably at the right time. Erik Naggum mentioned here his efforts with SGML.
> Personally, I would like to see the LISP community impose on itself a > moratorium on research and development in order to focus on making LISP more > widespread as the primary goal (at least for the shortrun).
What do you mean by research and development? A number of projects are working on usable libraries and tools.
| My turn! Suppose we want to mutate a variable from an outer scope: | | Python 2.2b2 (#1, Nov 21 2001, 14:42:03) | [GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-81)] on linux2 | Type "help", "copyright", "credits" or "license" for more information. | >>> def bar(x): | ... def acc(y): | ... x += y # assignment is a "statement" so can't go in a lambda | ... return x | ... return acc | ... | >>> qux = bar(0) | >>> qux(0) | Traceback (most recent call last): | File "<stdin>", line 1, in ? | File "<stdin>", line 3, in acc | UnboundLocalError: local variable 'x' referenced before assignment | | Oops! No can do. This bites. Certainly it bites me, hard and more | often than I'd like.
It bites because you try to write lisp code in python. The python way is to use classes for this sort of thing:
Class methods get around the two (or three) namespaces problems because when called, they automagically receive the object as the first argument ("self" in the above example), which gives you access to the object's own namespace.
I find this easy and intuitive, though not by any stretch of the imagination up to the power of CLOS, of course.
* Andre van Meulebrouck | You lost me there. I have no idea what you're talking about.
I find it rather alarming that you first realize this but then blithely assume that you understood my second point, which was evidently even more lost on you than the first.
| You don't want to STAND OUT; you want to FIT IN, GET ON BOARD, and play | ball with the neighborhood kids. | | You do not want to be a LISP snob or a prima Dona!
I now realize that you have been hurt in some way that is orthogonal to any programming language issues and that your personal fear of being different is underlying your decisions. I have absolutely no such fear and I cannot even relate to the experience. Life is not some democratic experiment where people agree to go and die if they are voted down, and neither is it the converse: You do not tell other people to go and die if they disagree with you. But this will probably also be lost on you, given the frantic tone of your response, so I have no intention of changing your mind on this. (Which reminds me that I should finish that response to Pascal Costanza...)
Anyway, who else have succeeded, using your proposed methodology of letting somebody else take all your important decisions?
-- Erik Naggum, Oslo, Norway
Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.
Now showing on CNN: Harry Potter and the Search for Weapons of Mass Destruction
> If given a choice of doing object oriented Javascript programming > versus procedural LISP (i.e. a LISP system that doesn't have an > object system); I'd opt for Javascript!
Well, I think this is a misconception you have about Lisp. Lisp is inherently object-oriented, but not in an explicit way. Everything in Lisp is an object in that everything in Lisp is tagged, so Lisp knows what functions are applicable to the object.
* (string= "42" 42)
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER: 42 is not of type (OR BASE-STRING SYMBOL BASE-CHAR)
* (= 42 "42")
Argument X is not a NUMBER: "42".
Lisp knows that the data object 42 is a number and not something that you can usefully compare for equality with a string, and vice versa.
Thus Lisp implements the most fundamental idea in object-oriented programming: abstract data types and the operations which apply to them. (Note, for example, that one would feel pretty foolish encapsulating something without providing the ability to operate on it.)
Historically Lisp has tended to shed object systems like a cat sheds fur. Flavors, LOOPS, CLOS and Garnet's KR are just a few one might have encountered. Many Lisp textbooks create small but functional object systems as a matter of course. At the Lisp conference one of the tutorial presenters gave an example of something he called `environments' which was simply a C++ or Java style object system including public and private members. He had written this with a few pages of Lisp macrology.
The point of this is that object-oriented programming is something Lisp does naturally. You can whip up your own object system in a page of code. Lisp can also adopt to any particular style of object oriented programming someone desires. For example, Flavors is a message-passing OO system, but CLOS uses generic functions. CLOS uses classes and instances, but Garnet/KR uses a prototype-instance system. CLOS even institutionalizes this kind of polymorphism (using the term in the general sense) with its Meta-Object Protocol.
-- Fred Gilham gil...@csl.sri.com REPRODUCTIVE RIGHTS: the right not to reproduce, no matter what else you do. PLANNED PARENTHOOD: an organization that helps you plan to avoid becoming a parent.
> Using what I've learned from my experience in LISP and applying it to > whatever I am doing in whatever kind of tools I'm being asked to used in the > most mainstream situations I can possibly work in. That is my challenge! [...] > I feel that if what I learned from LISP can only be applied by using LISP > itself; then I do not understand LISP at all! My knowledge of LISP would > not be applied enough to make me happy. [...] > But a LISP job using LISP itself; I just can't imagine that (though I have > done it in the past here and there). I don't want to do that again until > LISP becomes ubiquitous. My pragmatic side would never hear of it! My > philosophy of the ubiquitous would never allow it. That for me would indeed > be selling out.
> LISP burned far too many people in varying degrees due to the vagaries of > the LISP market. Can't you possibly imagine why some people might be a > little gun shy of LISP?
> Until LISP becomes ubiquitous I must remain on the mainstream side of the > fence and work towards the LISP side of the fence; not the reverse.
This whole thread, but these bits of this reply in particular, really remind me of a part of a speech by James P. Cannon that I read recently. He's specifically talking about revolutionists and tired once-revolutionsts in the Socialist Workers Party in mid-century US, but the point he makes applies to any partisan in any struggle:
The surest way to lose one's fighting faith is to succumb to one's immediate environment; to see things only as they are and not as they are changing and must change; to see only what is before one's eyes and imagine that it is permanent. That is the cursed fate of the trade unionist who separates himself from the revolutionary party. In normal times, the trade union, by its very nature, is a culture-broth of opportunism. No trade unionist, overwhelmed by the petty concerns and limited aims of the day, can retain his vision of the larger issues and the will to fight for them without the party.
The revolutionary party can make mistakes, and has made them, but it is never wrong in the fight against grievance-mongers who try to blame the party for their own weaknesses, for their tiredness, their lack of vision, their impulse to quit and to capitulate. The party is not wrong now when it calls this tendency by its right name.
People often act differently as individuals, and give different explanations for their actions, than when they act and speak as groups. When an individual gets tired and wants to quit, he usually says he is tired and he quits; or he just drops out without saying anything at all, and that's all there is to it. That has been happening in our international movement for 100 years.
But when the same kind of people decide as a group to get out of the line of fire by getting out of the party, they need the cover of a faction and a "political" rationalization. Any "political" explanation will do, and in any case it is pretty certain to be a phony explanation. That also has been going on for about 100 years.
Naturally, it's not vital to combat the equivalent tendancy in a programming-language community -- we're not talking about the future of mankind here -- but I think the descriptive analysis works here as well.
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
Paolo Amoroso <amor...@mclink.it> writes: > On 01 Nov 2002 12:04:36 -0800, Fred Gilham <gil...@snapdragon.csl.sri.com> > wrote:
> > Another speaker was Richard Greenblatt of MIT & LIM fame. Let me > [...] > > He started off on what I considered the wrong foot by saying that CLOS > > was a bad idea because it had multiple inheritance and multiple > > dispatch, and Lisp would be better off with something more like the
> Hmmm... is he working on an ArcMachine?
That sounds dangerous! Hopefully if he is, it's powered by a 9-volt battery, and not wall voltage...
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
Thomas F. Burdick wrote: > Paolo Amoroso writes: > >On 01 Nov 2002 12:04:36 -0800, Fred Gilham > >wrote:
> >>Another speaker was Richard Greenblatt of MIT & LIM fame. Let me
> >[...]
> >>He started off on what I considered the wrong foot by saying that CLOS > >>was a bad idea because it had multiple inheritance and multiple > >>dispatch, and Lisp would be better off with something more like the
> >Hmmm... is he working on an ArcMachine? > That sounds dangerous! Hopefully if he is, it's powered by a 9-volt > battery, and not wall voltage...
Even that sounds risky -- couple of gerbils and a rubber band sounds more like what is needed?
> > > I never suggested that Javascript's proximity to LISP should be cause for > > > declaring a premature victory and resting on laurels! Rather it should > > > encourage the building of bridges from the LISP side in order to meet > > > conventional languages half way.
> > This is being done, without abdicating Lisp itself.
> As I made clear in both my paper and presentation; I don't want to see LISP > give up its essence in the name of compromise.
As I stated at the beginning of my response, I didn't see your talk, nor have I yet read your paper. I am responding _only_ to the responses you have been giving in this thread, and nothing else.
> However, I don't know what you would point to as efforts on the LISP side to > bridge the gap to the conventional world, so I can't comment further.
From this response and other responses previously, below, and in other threads, it is obvious that you have had little contact with the Lisp world for many years (I notice you even spell it the old way - LISP instead of Lisp, which is no big deal, but telling).
> > Instead, we build > > bridges between Lisp and other languages, thus making it a great > connection > > glue even in areas where other languages have found a niche.
> I'm happy to hear that, but haven't seen anything yet that I'd consider very > ubiquitous.
You haven't been looking in the right places. A man happened upon another man one night under a street light, and the latter was obviously looking for something. The former asked him what he was looking for, and the latter said "My coat. I dropped it over there" (pointing into a dark ally). The first man was incredulous, asking "If you lost it there, then why are you looking for it here?", to which the second man replied "It's lighter here."
> > > It was my intention to focus on future wins that are still possible > rather > > > than lamenting lost opportunities; hence my upbeat and optimistic tone.
> > As was pointed out by another poster, this sentence doesn't ring true, due > > to the smashing of the optimism that you do so well in the next > (incorrect) > > sentence:
> I fail to see how those are not reconciled.
> Some battles have been lost. Some can still be won. I wanted to focus on > the latter rather than the former.
You view markets as battles won or lost. You have the wrong analogy.
> > > However, I believe the LISP community has failed very badly at marketing > > > LISP and many lost opportunities are now gone, perhaps for good.
> > How does a language, which has no hardware coattails to ride behind like > > C/C++, but which supports four or five commercial vendors and at least > > as many free/opensource vendors, fail badly at marketing? Does it need > > 100% of all markets to be sucessful?
> I found the above a bit obtuse to parse, but assuming I'm following you...
Probably the reason why it seems obtuse to you is because you've been out of the Lisp industry for so long. You should take another look.
> LISP should not need hardware coattails. I don't get that at all. LISP > should be able to run on stock hardware. The hardware is out there, it's > cheap, it's plentiful, it's powerful enough. Compiler technology is awesome > these days. What's the problem?
Lisp does run on almost all stock hardware. What's the problem?
> > > (For > > > instance, XML is here to stay but it should have been s-expression > based: > > > this was a missed opportunity for which I don't think there is much hope > of > > > an antidote in the foreseeable future due to momentum.)
> > Lisp is gracious to allow XML to languish in its niche, and to help it > along > > by providing tools for working with and generating XML.
> Why didn't LISP lead the way in the first place so that we never had to see > XML? Or HTML?
This is interesting. I remember a game we used to play without really thinking about it as kids, and my own children played it as they were growing up. I don't think it had a name, but its essence was pure competition - Two children would agree on a target to which to race, and they would race. Then, the loser would get huffy, and find a target very close to him/her, and say "ok, race you to <the new target>". Of course that child would win that race. The game became a series of targets chosen to guarantee success.
So of course, XML got to its target, because that's where it was headed.
> > > If my talk was to be condensed into an anecdote or characterization, > perhaps > > > it should be this: "repetition is the mother of learning"; which was my > > > recurring theme. In order to grow a technology it needs to learn, to > learn > > > it needs lots of repetition; to get that repetition there must be a lot > of > > > users, to get those users you must be widespread.
> > So what is it that you are repeating? What, for example, is JavaScript > > learning?
> Usage data by users. Lots of users, using lots of machines, using lots of s > oftware to amass huge volumes of real world experience data.
> The kind of data you cannot get by doing all the upfront thinking you can in > a lab.
> Finding out the types of things you missed in the lab or didn't think of or > couldn't even imagine.
> It's like planning a trip: at some point you must just go and learn by > doing. There are limits to how much you can plan or even imagine about what > you'll encounter along the way.
> Testers and users are wonderful. The more the merrier.
These are all fine and wonderful, and the Lisp world is doing this. Of course, you missed much of the good stuff at the conference, since you only stayed for one day. But I can understand that; a conference is expensive. However, you can also see a lot of what is happening by looking at a few websites, including ours, for free and without driving too far.
> > > Personally, I would like to see the LISP community impose on itself a > > > moratorium on research and development in order to focus on making LISP > more > > > widespread as the primary goal (at least for the shortrun).
> > What R&D is it that you think is taking Lisp from its primary goal?
> I'm answering this for the 3rd time, so I'll be brief. I'd like to see > applied R&D supplant more theoretical R&D until better financial stability > is arrived at. Then, more esoteric directions are okay to pursue once > again.
Unfortunately, you haven't answered my question once. Precisely _what_ R&D are you talking about? I want specific cases. If you have none, then you have no point to make.
> > > With all the minds in the LISP community, LISP can't find a better > market > > > than it has?
> > The world is Lisp's market. My wife and I just watched our DVD of a James > > Bond video again, and its title says it all - apparently, "The World is > > Not Enough".
> ???
OK, since you didn't get it, Lisp has been all over the world of late, and even the world is not enough; Lisp has indeed been sent into space. A better market than "the world and beyond" one cannot find.
> > > I'm all in favor of R&D, but I think that's a luxury after the basics > have > > > been accomplished and the community has some degree of financial health; > > > otherwise it's moot! Moreover, there would be more money for R&D if > LISP > > > focused on trying to be of service to the world at large (thereby > gathering > > > more of a grass roots following). It's all a matter of getting > priorities > > > straight!
> > Whose budget are you looking at? My question above still stands, along > with > > another: What R&D is being squandered away by the Lisp community? And > > whose financial health would removing such R&D thus improve?
> I think pondering estorery when your house is burning down is not a good > idea.
I don't know estorery; I assume you mean esoterica. What esoterica are we pondering? Specifically?
> I think getting your house in order should be a higher priority.
> > > Science is not alleviated from marketing: if you build a better mouse > trap, > > > it is your job to explain why it is advantageous. LISP has much to > offer, > > > but will it ever be properly offered? If we do our part to make it > > > accessible and it still isn't accepted; at least we will have done our > part.
> > What part have you been doing?
> Did you attend my talk???
As I stated at the beginning of my response, I didn't see your talk. I am responding _only_ to the responses you have been giving in this thread, and nothing else.
> Writing, education, participation in fixing bugs and suggesting > improvements, participating in R&D, beta testing. At some point I want to > participate more closely with the actual standards process rather than going > through intermediaries.
But not in the Lisp community, right? I have no problem with this, nor do I have any problem with you making improvements to other communities in the direction of Lisp. My only gripe is that you made statements in your post about the Lisp community that were clearly out of sync with reality.
> Every day I program in conventional languages I'm working towards the goals > mentioned above (which you are asking me about); as long as I do it in a > LISP style rather than a conventional style. What good is theory if it > isn't applied? What good is LISP if it's not part of your essence? If it's > part of your essence, you don't have to have a LISP job. You can breathe > LISP into the conventional world, everywhere you go, in everything you do. > That is actually much more interesting to me than having a classical LISP > job!
No problem here. Enjoy yourself. But don't trash the Lisp community by making statements about it that are many years out of date.