473,776 Members | 1,529 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

BIG successes of Lisp (was ...)

In the context of LATEX, some Pythonista asked what the big
successes of Lisp were. I think there were at least three *big*
successes.

a. orbitz.com web site uses Lisp for algorithms, etc.
b. Yahoo store was originally written in Lisp.
c. Emacs

The issues with these will probably come up, so I might as well
mention them myself (which will also make this a more balanced
post)

a. AFAIK Orbitz frequently has to be shut down for maintenance
(read "full garbage collection" - I'm just guessing: with
generational garbage collection, you still have to do full
garbage collection once in a while, and on a system like that
it can take a while)

b. AFAIK, Yahoo Store was eventually rewritten in a non-Lisp.
Why? I'd tell you, but then I'd have to kill you :)

c. Emacs has a reputation for being slow and bloated. But then
it's not written in Common Lisp.

Are ViaWeb and Orbitz bigger successes than LATEX? Do they
have more users? It depends. Does viewing a PDF file made
with LATEX make you a user of LATEX? Does visiting Yahoo
store make you a user of ViaWeb?

For the sake of being balanced: there were also some *big*
failures, such as Lisp Machines. They failed because
they could not compete with UNIX (SUN, SGI) in a time when
performance, multi-userism and uptime were of prime importance.
(Older LispM's just leaked memory until they were shut down,
newer versions overcame that problem but others remained)

Another big failure that is often _attributed_ to Lisp is AI,
of course. But I don't think one should blame a language
for AI not happening. Marvin Mins ky, for example,
blames Robotics and Neural Networks for that.
Jul 18 '05
303 17764
Jon S. Anthony wrote:
It's just this sort of monotonous (yet important) book keeping (along
with all the exception protection, etc.) that something like
with-open-file ensures for you.


I can't say that I am completely won over but this is an important
point. Thanks for the discussion.

Brian

Jul 18 '05 #191
"Rainer Deyke" <ra*****@eldwoo d.com> writes:
Jon S. Anthony wrote:
Brian Kelley <bk*****@wi.mit .edu> writes:
Now the usage is:

f = SafeFileWrapper (open(...))
print >> f, "A couple of lines"
f.close()

...
I still have to explicitly close the file though when I am done with


It's just this sort of monotonous (yet important) book keeping (along
with all the exception protection, etc.) that something like
with-open-file ensures for you.


Personally I'd prefer guaranteed immediate destructors over with-open-file.
More flexibility, less syntax, and it matches what the CPython
implementation already does.


Right... all along until CPython introduces a more elaborate
gc scheme.

Note that reference-counting has problems with cyclic
references; probably not something that will bite you in the case of
open files, but definitely a problem you need to be aware of.

--
Raymond Wiker Mail: Ra***********@f ast.no
Senior Software Engineer Web: http://www.fast.no/
Fast Search & Transfer ASA Phone: +47 23 01 11 60
P.O. Box 1677 Vika Fax: +47 35 54 87 99
NO-0120 Oslo, NORWAY Mob: +47 48 01 11 60

Try FAST Search: http://alltheweb.com/
Jul 18 '05 #192
Kaz Kylheku <ka*@ashi.footp rints.net> wrote:
+---------------
| Ah, but in Lisp, this is commonly done at *compile* time. Moreover,
| two or more domain-specific languages can be mixed together, nested in
| the same lexical scope, even if they were developed in complete
| isolation by different programmers. Everything is translated and
| compiled together. Some expression in macro language B can appear in
| an utterance of macro language A. Lexical references across these
| nestings are transparent:
|
| (language-a
| ... establish some local variable foo ...
| (language-b
| ... reference to local variable foo set up in language-a!
| ))
+---------------

Exactly so!

A concrete example of this is using a macro package such as Tim
Bradshaw's HTOUT together with (say) one's own application-specific
Lisp code. You can blithely nest macro-generated HTML inside Lisp
code inside macro-generated HTML, etc., and have *direct* access to
anything in an outer lexical scope! Big win. Consider the following
small excerpt from <URL:http://rpw3.org/hacks/lisp/appsrv-demo.lhp>
(which has been reformatted slightly to make the nesting more apparent).
Note that any form *not* starting with a keyword switches from the
HTML-generating language ("language-B") to normal Lisp ("language-A")
and that the MACROLET "htm" switches from normal Lisp ("A") back to
HTML generation ("B"):

(lhp-basic-page () ; Contains a call of WITH-HTML-OUTPUT.
...
(:table ()
(:tr ()
(loop for e from 1 to pows
and h in headings do
(let ((p (cond ((= e 1) ":") ((= e pows) "") (t ","))))
(htm (:th (:nowrap)
(fmt h e) p)))))
(loop for i from 1 to nums do
(htm
(:tr (:align "right")
(loop for e from 1 to pows do
(htm
(:td ()
(princ (expt i e) s))))))))
... )

Note how the innermost reference of "i" [in "(expt i e)"] is nested
inside *four* language shifts from the binding of "i" [in the LOOP form],
that is:

(Lisp
;; "i" is bound here
(HTML
(Lisp
(HTML
(Lisp
;; "i" is used here
)))))

Oh, and by the way, all of that HTML-generating code gets expanded
into Lisp code at macro-expansion time [roughly, at compile time].
-Rob

-----
Rob Warnock <rp**@rpw3.or g>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607

Jul 18 '05 #193
Raymond Wiker <Ra***********@ fast.no> wrote in
news:86******** ****@raw.grenla nd.fast.no:
"Rainer Deyke" <ra*****@eldwoo d.com> writes:
Jon S. Anthony wrote:
Brian Kelley <bk*****@wi.mit .edu> writes:
Now the usage is:

f = SafeFileWrapper (open(...))
print >> f, "A couple of lines"
f.close()
...
I still have to explicitly close the file though when I am done
with

It's just this sort of monotonous (yet important) book keeping
(along with all the exception protection, etc.) that something like
with-open-file ensures for you.
Personally I'd prefer guaranteed immediate destructors over
with-open-file. More flexibility, less syntax, and it matches what
the CPython implementation already does.


Right... all along until CPython introduces a more elaborate
gc scheme.


.... which is highly unlikely to happen without preservation of reference
counting semantics for files... google if you're _really_ interested :-/
Note that reference-counting has problems with cyclic
references; probably not something that will bite you in the case of
open files, but definitely a problem you need to be aware of.


(a) true (by definition of cycle/ref.counting?)
(b) no relevance to CPython (which uses a generational collector
to reclaim reference cycles [with the regular finalizer problems]).
(c) why are open file objects special (are you saying objects with no
internal references are less likely to be reachable from a cycle,
or that there is something intrinsically special about (open?) files)?

-- bjorn
Jul 18 '05 #194
Bjorn Pettersen <bj************ *@comcast.net> writes:
Note that reference-counting has problems with cyclic
references; probably not something that will bite you in the case of
open files, but definitely a problem you need to be aware of.
(a) true (by definition of cycle/ref.counting?)
(b) no relevance to CPython (which uses a generational collector
to reclaim reference cycles [with the regular finalizer problems]).


I didn't know that (obviously :-)
(c) why are open file objects special (are you saying objects with no
internal references are less likely to be reachable from a cycle,
or that there is something intrinsically special about (open?) files)?


I cannot think of any scenarios where open files would be
involved in a cycle, that's all. That doesn't mean that it's impossible.

--
Raymond Wiker Mail: Ra***********@f ast.no
Senior Software Engineer Web: http://www.fast.no/
Fast Search & Transfer ASA Phone: +47 23 01 11 60
P.O. Box 1677 Vika Fax: +47 35 54 87 99
NO-0120 Oslo, NORWAY Mob: +47 48 01 11 60

Try FAST Search: http://alltheweb.com/
Jul 18 '05 #195
Raymond Wiker <Ra***********@ fast.no> wrote in
news:86******** ****@raw.grenla nd.fast.no:
Bjorn Pettersen <bj************ *@comcast.net> writes:
(c) why are open file objects special (are you saying objects with no
internal references are less likely to be reachable from a cycle,
or that there is something intrinsically special about (open?)
files)?


I cannot think of any scenarios where open files would be
involved in a cycle, that's all. That doesn't mean that it's
impossible.


Ok. Btw., creating such a cycle is easy,

a = [open('foo')]
b = [a]
a.append(b)

(i.e. any file that's reachable from a cycle). IIRC, A commonly used
'markup' library up until recently kept open file handles for all inline
images as part of the internal object state -- although I'd perhaps call
that more of a bug than a scenario? <wink>

-- bjorn
Jul 18 '05 #196
Bjorn Pettersen <bj************ *@comcast.net> writes:
Raymond Wiker <Ra***********@ fast.no> wrote in
news:86******** ****@raw.grenla nd.fast.no:

[ SNIP ]
Note that reference-counting has problems with cyclic
references; probably not something that will bite you in the case of
open files, but definitely a problem you need to be aware of.


(a) true (by definition of cycle/ref.counting?)
(b) no relevance to CPython (which uses a generational collector
to reclaim reference cycles [with the regular finalizer problems]).
(c) why are open file objects special (are you saying objects with no
internal references are less likely to be reachable from a cycle,
or that there is something intrinsically special about (open?) files)?


Open file handles is a "scarce resource". It wasn't uncommon to have
an upper limit of 32, including strin, stdout and stderr, in older
unix environments. These days, 256 or 1024 seems to be more common
(default) upper limits. usually not a problem, but if one does a lot
of "open, write" and leave it for the GC to clean up, one *may* hit
resource starvation problems one wouldn't have hit, had teh file
handles been clsoed in a timely fashion.

//Ingvar
--
A routing decision is made at every routing point, making local hacks
hard to permeate the network with.
Jul 18 '05 #197
Stephen Horne <st***@ninereed s.fsnet.co.uk> wrote:

<snip>
One thing that has become clear in neuroscience is that almost all
(perhaps literally all) parts and functions of the brain benefit from
learning. Explicit memory is quite distinct from other memory
processes - it serves the conscious mind in a way that other memory
processes do not.
<snip>
At a more extreme level, entire memories can be fabricated. The harder
you search for memories, the more they are filled in by made up stuff.
And as mentioned elsewhere, the brain is quite willing to invent
rationalisatio ns for things where it cannot provide a real reason. Add
a psychiatrist prompting and providing hints as to the expected form
of the 'memory' and hey presto!
<snip>
Many people seem to have an obsession with a kind of mystic view of
consciousnes s. Go through the list of things that people raise as
being part of consciousness, and judge it entirely by that list, and
it becomes just another set of cognitive functions - working memory,
primarily - combined with the rather obvious fact that you can't have
a useful understanding of the world unless you have a useful
understandin g of your impact on it.


Sorry that I had to cut your long (but excellent) post to comment only
on a small subset of it. I want to reply only to the part that
concerns memory and consciousness, because I feel that you are having
a problem with these while the answer is already present in other
parts of your post.

According to Merleau-Ponty there is something to "the whole is more
than the sum of the parts" and other gestalt-like consciousness
mysticism. He explains this as the effect that having a sense of
direction and purpose gives each of the components that are involved a
new meaning such that they all operate coherently.

For example a primate can use a stick as an instrument, but a human
can use an instrument to build other instruments, thereby potentially
transforming the meanings of *all* objects in the environment, and
thereby finally being able to rearrange the environment itself or
gaining the powers to transport to some other place with such
efficient methods that the effect is virtually the same as rearranging
the environment.

My understanding of this point is that this effect is also seen very
prominently in the way we remember things. But contrary to your
position I see this rearranging of the constituent parts of our memory
-in a certain sense the basis of our consciousness- not as something
"fabricated " or "rationaliz ed" (or in some other semi-pejorative
terms).

The way we structure our past is a positive accomplishment and we
should value it as such instead of insisting that there is only one
past and that any deviation from the "standard" (who's standard
anyway?) is showing some tendency to "evade problems" or gain unlawful
advantages over others.

In fact there is no fixed past at all, and the past that we have now
can be changed very easily, without using time-machines even. The
complete reality whether individual or shared is just a figment of our
collective or individual imagination and is therefore subject to
change without warning.

Ok, let me try to back up these bold claims with some trivial examples
of how our individual and collective pasts can be changed or are
changed or have been changed.

First a little "Gedankenexperi ment", suppose you have been luckily
married for over twenty years and now I'm showing you a photograph
(supposedly of the kind that can't be forged) of your partner in a
compromising situation with someone else. I can back up this data with
several other facts, accumulated over the years, each of which you
have no prior knowledge of. Does this change your past, or just your
image of the past, so that it now comes closer to the "real" past?

If one looks at this example carefully one might wonder if this newer,
more "real", past is not also a figment of our imagination, and so on.

Another example, suppose someone on clpy who's first name is Alex came
into the possession of some convincing information linking corporate
culture and social factors to the divergence of programming styles and
data formats, in fact proving without a shred of doubt to him that
social factors are for 95% or more responsible for the generation of
divergent cultures of programming (with the accompanying dialects of
programming languages) through the process of "math-envy". This would
lead to some interesting new perspectives on macros being responsible
for the diverging of communities of programmers, making them into
mechanisms rather than sources. This could lead to a new world view
where from now on not macros would be avoided, but rather a certain
way of competition of programmers which would be identified as
unhealthy for the community as a whole. Would this change the past?
Certainly the whole macro-wars history of clpy would gain a new
interpretation.

Next consider the event of the twin tower airplane attack. Suppose it
was finally publicly acknowledged that there where no foreign nations
involved in the attack but that it was just a rather small group of
individuals acting on their own, backed by some very rich capitalist
but still only a small group of people acting in their own selfish
interest. Also no weapons of mass destruction could be found in Iraq,
Hussein had no connection with Osama bin Laden, and so on. This would
make the American attacks on two countries into war crimes and would
lay open speculations about the oil-industry being behind these so
called anti terrorism activities. Taking civil rights away from the
citizens of the united states could be another motivating factor for
certain powerful groups in the American government. Of course this is
all nonsense and pure speculation, but a quick view of what is still
written in Japanese history books about world war two, or an
investigation of what Iraqi school children had to learn about Saddam
Hussein will quickly disperse any doubts about what is possible in the
ways of completely misrepresenting collective memory.

Another example, imagine you had been suffering from a stomach ulcer
that was incurable and had taken drugs for years in order to reduce
the acidity of your stomach content. Someday someone comes along and
mentions that it's all caused by a bacterium called helicobacter and
you could be cured in two weeks. If you believed this person, would
this change your personal past?

There *is* no fixed past. What is possible is to make a past that is
purposeful, makes one strong and directed and flexible and open to
change. We should start seeing our pasts as an accomplishment and an
asset, and -realizing the moldability of it all- begin healthy
cooperations with other people to synchronize our pasts, incorporating
all the little "facts" of all people into a grand unifying theory in
which all these past episodes have a new meaning, and where everything
can find its place.

If you still think that's not magic, it's probably better to keep it
that way in order not to compromise the wonderful life that is
theoretically possible, given these observations.

Anton

Jul 18 '05 #198
On Fri, 24 Oct 2003 16:00:12 +0200, an***@vredegoor .doge.nl (Anton
Vredegoor) wrote:
There *is* no fixed past.


So you are saying that if a psychiatrist convinces his patient that
she was abused by her parents as a child, even though it never
occurred, to the point that she can remember it - then it must be
true!

I'm not confused on this - you are.

Sorry, but you are not keeping a clear distinction between "the past"
and "knowledge of the past". If memory is altered then it doesn't
change the past, only the (now incorrect) memory.

This sounds a lot like extreme cultural relativism. But I'm afraid
that if you drive your car past a village of people with no knowledge
of cars, while they may believe that your car is propelled by a demon
under the hood, in reality the engine will still be there.

Perception is not reality. It is only a (potentially flawed)
representation of reality. But reality is still real. And perception
*is* tied to reality as well as it can be by the simple pragmatic
principle of evolution - if our ancestors had arbitrary perceptions
which were detached from reality, they could not have survived and had
children.

You'll find many people who claim otherwise, of course. But the limits
of perception are actually already better understood than most people
realise. On the whole, they are pretty much the limits of information
processing.
--
Steve Horne

steve at ninereeds dot fsnet dot co dot uk
Jul 18 '05 #199
Raymond Wiker wrote:
"Rainer Deyke" <ra*****@eldwoo d.com> writes:
Personally I'd prefer guaranteed immediate destructors over
with-open-file. More flexibility, less syntax, and it matches what
the CPython implementation already does.


Right... all along until CPython introduces a more elaborate
gc scheme.

Note that reference-counting has problems with cyclic
references; probably not something that will bite you in the case of
open files, but definitely a problem you need to be aware of.


I'm all for more elaborate gc schemes. In particular, I want one that gives
me guaranteed immediate destructors even in the presence of reference
cycles. And I want to language specification to guarantee it.

Having to explicitly close files is something I'd expect in C or assembly,
but it has no place in high-level languages. And "with-open-file" is too
limiting. Let the computer do the work, not the programmer.
--
Rainer Deyke - ra*****@eldwood .com - http://eldwood.com
Jul 18 '05 #200

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

73
8072
by: RobertMaas | last post by:
After many years of using LISP, I'm taking a class in Java and finding the two roughly comparable in some ways and very different in other ways. Each has a decent size library of useful utilities as a standard portable part of the core language, the LISP package, and the java.lang package, respectively. Both have big integers, although only LISP has rationals as far as I can tell. Because CL supports keyword arguments, it has a wider range...
699
34235
by: mike420 | last post by:
I think everyone who used Python will agree that its syntax is the best thing going for it. It is very readable and easy for everyone to learn. But, Python does not a have very good macro capabilities, unfortunately. I'd like to know if it may be possible to add a powerful macro system to Python, while keeping its amazing syntax, and if it could be possible to add Pythonistic syntax to Lisp or Scheme, while keeping all of the...
34
2688
by: nobody | last post by:
This article is posted at the request of C.W. Yang who asked me to detail my opinion of Lisp, and for the benefit of people like him, who may find themselves intrigued by this language. The opinions expressed herein are my personal ones, coming from several years of experience with Lisp. I did plenty of AI programming back in the day, which is what would now be called "search" instead.
82
5388
by: nobody | last post by:
Howdy, Mike! mikecoxlinux@yahoo.com (Mike Cox) wrote in message news:<3d6111f1.0402271647.c20aea3@posting.google.com>... > I'm a C++ programmer, and have to use lisp because I want to use > emacs. I've gotten a book on lisp, and I must say lisp is the ugliest > looking language syntax wise. What is up with this: (defun(foo()). (DEFUN FOO () NIL) > What were the lisp authors thinking? Why did Stallman use lisp in
852
28731
by: Mark Tarver | last post by:
How do you compare Python to Lisp? What specific advantages do you think that one has over the other? Note I'm not a Python person and I have no axes to grind here. This is just a question for my general education. Mark
0
9627
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9462
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10287
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10119
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10060
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9922
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8951
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
4030
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
2859
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.