473,937 Members | 5,067 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

OFF-TOPIC:: Why Lisp is not my favorite programming language

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.

Due to time constraints, I will refrain from posting any
follow-ups here. Participants of other newsgroups are well
aware of comp.lang.lispe rs' tendency to engage in personal
attacks, so a productive discussion with them is unlikely
anyway.

Permission is granted to copy and distribute this document
without restrictions.
=============== =============== =============== ============
Why Lisp is not my favorite programming language.
=============== =============== =============== ============
(In the following, "Lisp" refers to ANSI Common Lisp)

This article is a collection of facts anyone interested in
Lisp should know about.

---------------------------------------------------------

FACT 1: The fastest Lisp implementations are slow

(See any third-party benchmark: The Great Computer Language
Shootout comes to mind, but the Coyote Culch test is in my
optinion even better: it is a professional-quality
interlanguage benchmark)

As a rule of thumb, the most hand-optimized Lisp programs
will be longer than their C/C++ equivalents, and will run
2-20 times slower using the best compilers.

This alone is half the truth. To get such performance out
of Lisp, one has to add type declarations and shed all
safety checks, which is analogous to casting /everything/
to (void*) in C. This is needed to turn off type tag checks
at run time.

Sadly, Lisp code that was posted to USENET by Pascal
Bourguignon for the Coyote Gulch test did not measure up
even to these low expectations and was 31.6 times slower
than C++, using CMUCL 18d as a Lisp compiler and Intel C++
7.1 (with -O3 -xW optimization switches) as a C++ compiler
on Pentium IV.

---------------------------------------------------------

FACT 2: No one but a small clique of fanatics likes it

No matter how odd or perverted the cause, there will be
followers. In fact, the odder the cause, the fewer, but
more fervent its followers are. Look at any religious cult,
like Scientology, or take a peek in comp.lang.lisp and
listen to Lisp zealots talk about 'making sacrifices for
the cause' (in all seriousness!). Look up "a public
apology" thread started by Pascal Costanza as an excellent
example.

ZEALOTS STOP AT NOTHING TO ADVANCE THEIR CAUSE, AND
PERSONALLY ATTACKING ANYONE WITH A DISSENTING OPTINION IS
THE FIRST THING IN THEIR ARSENAL.

---------------------------------------------------------

FACT 3: The vast majority of people who study Lisp in
school, never want to use it again.

You should already know this if you studied or taught CS
where Lisp courses were offered. Even those students who
are fond of Scheme are usually disgusted by Lisp.

---------------------------------------------------------

FACT 4: Lisp is the most complicated language in the world

It has the biggest standard specification document, which
is also the most obfuscated one - something a lawyer
pretending to be a programmer could have written. C, C++
and Fortran 95 specs are much better written, by people who
can communicate directly and eloquently.

---------------------------------------------------------

FACT 5: Despite its size, Lisp does not define threads or
GUI.

Large libraries are very useful when programming, however
Lisp's many functions and macros hardly qualify.

---------------------------------------------------------

FACT 6: There is no open-source cross-platform native-code
compiler

It was suggested that GCL (GNU Common Lisp) is the only
exception. However, it needs to be noted, that despite its
name, GCL is a dialect of its own, is quite slow even by
Lisp standards, and most alarmingly, unlike with other
compilers, its license requires your, programmer, code to
be GPL if you distribute it with GCL. (Because you will
need to use GCL both as a compiler and a run time library)

---------------------------------------------------------

FACT 7: There is no standard C interface.

C has become a lingua franca for interlanguage APIs. It may
be unfair, but not having a standard C interface is a
serious problem for any language.
EPILOGUE:

I do not hate Lisp, and I think it was a fine tool decades
ago, and I am not going to say "Lisp sucks". However, now
that we have superior languages for coding close to the
iron, high-performance computing, number crunching,
algorithms, scripting and gluing components together, Lisp
should be finally retired.
Jul 22 '05
32 2038
ni****@netzero. net (Mike Nishizawa) wrote in message news:<d7******* *************** ****@posting.go ogle.com>...

please dont top-post.
tia.
These posts are like big huge neon signs that say, "I'm IGNORANT."
So is the post I am now responding to!

At the risk of offending you, are you sure that your last 3 years
as a programmer have properly equipped you to make informed
decisions like the ones you've made below?

<snipped>
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.


Pick a fairly simple application ... lets say a tic-tac-toe
game. Are you certain that the game implemented in java will
run on more platforms than the same game implemented in ANSI
C?

C has many many weaknesses; platform dependence is /not/ one of
them.

<snipped stuff I am in agreement with>

goose,
Jul 22 '05 #21
nobody wrote:

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 solution to your problem is obvious. Just treat Lisp like
Chocolate; if you don't like it, you can't have any.

Followups set.

Bear
Jul 22 '05 #22
goose wrote:
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.

Pick a fairly simple application ... lets say a tic-tac-toe
game. Are you certain that the game implemented in java will
run on more platforms than the same game implemented in ANSI
C?


Absolutely certain if it uses a GUI. Otherwise, it depends very much
on the C programmer, whereas even the most incompetent Java programmer
will find it hard to casually insert a platform dependance.

C has many many weaknesses; platform dependence is /not/ one of
them.


Like *hell* it isn't!

- sizes of basic types differ between platforms and compilers
- newly allocated memory may or may not be zeroed
- sctructs may or may not be padded, variables may or may
not need to be aligned
- etc.

Yes, you can work around all of them, but it takes an active effort. There's
a reason why it's now common practice to buld C applications with GNU
autoconf, making the build a *three*-level process (counting pre-processor,
compilation and linking together as only one). And it still often fails
with cryptic error messages.

Jul 22 '05 #23
I goofed!

I'm trying to write a news server and did some test with a random header
I found in this group. But I forgot to set newsgroups to a test group...
So the above is not a repost, just my garbage. It also was a crosspost,
that does make me realy bad doesn't it? ;)
(sorry)

yuri
Jul 22 '05 #24
mi************@ yahoo.com (Minti) wrote in message news:<e8******* *************** ****@posting.go ogle.com>...
ni****@netzero. net (Mike Nishizawa) wrote in message news:<d7******* *************** ****@posting.go ogle.com>...
These posts are like big huge neon signs that say, "I'm IGNORANT." If
you hold that 1 language is better than all other languages, then you
ARE ignorant. LISP is a parsing language. It's obviously not made to
do the same things that C is. LISP is extremely fast for processing
data files.

C in not an end-all be-all of programming languages, even though it is
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.

Really these discussions boil down to the programmer him/herself, who
is usually the one at fault for poor performance. I'm not quite sure
when this happened, but at some point programmers started relying on
hardware for fast, efficient software and from that point on, the
quality and emphasis placed on writing efficient programs has
diminished. If you want your code to run faster, make it more
efficient... make it use less resources... and use the right language
for the job. Don't try to fit all things under one umbrella because
that language has not been developed yet.

Quite valid arguments. However I have one question to ask, I am quite
naive with LISP { just couple of weekends ) but I think the OP did
raise some doubts in my mind. I mean to me LISP looks right now to be
just OK. Some people said that with all the () it is difficult to code
in but I think that with proper indentation that is absolutely
ludicurous. However when some one says that the code might be 31.?
times slower as compared to C, kinda of scares me. Could assert such
figures. I know speed is not the one and only goal but just wondering
if these figures are correct.
Thanks


I would ask what the C program is doing. If it beats LISP at it's own
game which is, list processing, then that would be different. I don't
think I would choose to write an enterprise application in it, but I
think it's as good a choice as anything for any type of parsing
applications. And to the smart guy who feels like he can take a stab
at me for calling lisp a parsing language... consider: a parser is,
by definition, something that analyzes or separates (input, for
example) into more easily processed components. Let's take a
document, for instance. If I wanted to parse the document and
separate it into words, I would write a parser to do so. What is a
document but a list of words separated by spaces... an especially good
application for a LISt Processing language.
Jul 22 '05 #25
mi************@ yahoo.com (Minti) wrote in message news:<e8******* *************** ****@posting.go ogle.com>...
ni****@netzero. net (Mike Nishizawa) wrote in message news:<d7******* *************** ****@posting.go ogle.com>...
These posts are like big huge neon signs that say, "I'm IGNORANT." If
you hold that 1 language is better than all other languages, then you
ARE ignorant. LISP is a parsing language. It's obviously not made to
do the same things that C is. LISP is extremely fast for processing
data files.

C in not an end-all be-all of programming languages, even though it is
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.

Really these discussions boil down to the programmer him/herself, who
is usually the one at fault for poor performance. I'm not quite sure
when this happened, but at some point programmers started relying on
hardware for fast, efficient software and from that point on, the
quality and emphasis placed on writing efficient programs has
diminished. If you want your code to run faster, make it more
efficient... make it use less resources... and use the right language
for the job. Don't try to fit all things under one umbrella because
that language has not been developed yet.

Quite valid arguments. However I have one question to ask, I am quite
naive with LISP { just couple of weekends ) but I think the OP did
raise some doubts in my mind. I mean to me LISP looks right now to be
just OK. Some people said that with all the () it is difficult to code
in but I think that with proper indentation that is absolutely
ludicurous. However when some one says that the code might be 31.?
times slower as compared to C, kinda of scares me. Could assert such
figures. I know speed is not the one and only goal but just wondering
if these figures are correct.
Thanks


I would ask what the C program is doing. If it beats LISP at it's own
game which is, list processing, then that would be different. I don't
think I would choose to write an enterprise application in it, but I
think it's as good a choice as anything for any type of parsing
applications. And to the smart guy who feels like he can take a stab
at me for calling lisp a parsing language... consider: a parser is,
by definition, something that analyzes or separates (input, for
example) into more easily processed components. Let's take a
document, for instance. If I wanted to parse the document and
separate it into words, I would write a parser to do so. What is a
document but a list of words separated by spaces... an especially good
application for a LISt Processing language.
Jul 22 '05 #26
ni****@netzero. net (Mike Nishizawa) writes:
If it beats LISP at it's own game which is, list processing, an especially good application for a LISt Processing language.


[lots more uninformed garbage elided]

Please get a clue about what Lisp is in the 21st century (hell, even
what it was in the last 2 decades of the 20th century), before posting
any more of your drivel.

For example, you could look at http://franz.com/success/ for a little
insight into what is being done (mereyly by processing lists and
parsing files, according to your view of the world) in Lisp today.
Jul 22 '05 #27
ni****@netzero. net (Mike Nishizawa) writes:
If it beats LISP at it's own game which is, list processing, an especially good application for a LISt Processing language.


[lots more uninformed garbage elided]

Please get a clue about what Lisp is in the 21st century (hell, even
what it was in the last 2 decades of the 20th century), before posting
any more of your drivel.

For example, you could look at http://franz.com/success/ for a little
insight into what is being done (mereyly by processing lists and
parsing files, according to your view of the world) in Lisp today.
Jul 22 '05 #28
mi************@ yahoo.com (Minti) wrote in message news:<e8******* *************** ****@posting.go ogle.com>...
ni****@netzero. net (Mike Nishizawa) wrote in message news:<d7******* *************** ****@posting.go ogle.com>...
These posts are like big huge neon signs that say, "I'm IGNORANT." If
you hold that 1 language is better than all other languages, then you
ARE ignorant. LISP is a parsing language. It's obviously not made to
do the same things that C is. LISP is extremely fast for processing
data files.

C in not an end-all be-all of programming languages, even though it is
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.

Really these discussions boil down to the programmer him/herself, who
is usually the one at fault for poor performance. I'm not quite sure
when this happened, but at some point programmers started relying on
hardware for fast, efficient software and from that point on, the
quality and emphasis placed on writing efficient programs has
diminished. If you want your code to run faster, make it more
efficient... make it use less resources... and use the right language
for the job. Don't try to fit all things under one umbrella because
that language has not been developed yet.

Quite valid arguments. However I have one question to ask, I am quite
naive with LISP { just couple of weekends ) but I think the OP did
raise some doubts in my mind. I mean to me LISP looks right now to be
just OK. Some people said that with all the () it is difficult to code
in but I think that with proper indentation that is absolutely
ludicurous. However when some one says that the code might be 31.?
times slower as compared to C, kinda of scares me. Could assert such
figures. I know speed is not the one and only goal but just wondering
if these figures are correct.
Thanks


I would ask what the C program is doing. If it beats LISP at it's own
game which is, list processing, then that would be different. I don't
think I would choose to write an enterprise application in it, but I
think it's as good a choice as anything for any type of parsing
applications. And to the smart guy who feels like he can take a stab
at me for calling lisp a parsing language... consider: a parser is,
by definition, something that analyzes or separates (input, for
example) into more easily processed components. Let's take a
document, for instance. If I wanted to parse the document and
separate it into words, I would write a parser to do so. What is a
document but a list of words separated by spaces... an especially good
application for a LISt Processing language.
Jul 22 '05 #29
mi************@ yahoo.com (Minti) wrote in message news:<e8******* *************** ****@posting.go ogle.com>...
ni****@netzero. net (Mike Nishizawa) wrote in message news:<d7******* *************** ****@posting.go ogle.com>...
These posts are like big huge neon signs that say, "I'm IGNORANT." If
you hold that 1 language is better than all other languages, then you
ARE ignorant. LISP is a parsing language. It's obviously not made to
do the same things that C is. LISP is extremely fast for processing
data files.

C in not an end-all be-all of programming languages, even though it is
quite robust. For instance, C is great if you are going to develop
software for 1 platform. However, if you are developing software for
multiple platforms, Java is a better choice.

Really these discussions boil down to the programmer him/herself, who
is usually the one at fault for poor performance. I'm not quite sure
when this happened, but at some point programmers started relying on
hardware for fast, efficient software and from that point on, the
quality and emphasis placed on writing efficient programs has
diminished. If you want your code to run faster, make it more
efficient... make it use less resources... and use the right language
for the job. Don't try to fit all things under one umbrella because
that language has not been developed yet.

Quite valid arguments. However I have one question to ask, I am quite
naive with LISP { just couple of weekends ) but I think the OP did
raise some doubts in my mind. I mean to me LISP looks right now to be
just OK. Some people said that with all the () it is difficult to code
in but I think that with proper indentation that is absolutely
ludicurous. However when some one says that the code might be 31.?
times slower as compared to C, kinda of scares me. Could assert such
figures. I know speed is not the one and only goal but just wondering
if these figures are correct.
Thanks


I would ask what the C program is doing. If it beats LISP at it's own
game which is, list processing, then that would be different. I don't
think I would choose to write an enterprise application in it, but I
think it's as good a choice as anything for any type of parsing
applications. And to the smart guy who feels like he can take a stab
at me for calling lisp a parsing language... consider: a parser is,
by definition, something that analyzes or separates (input, for
example) into more easily processed components. Let's take a
document, for instance. If I wanted to parse the document and
separate it into words, I would write a parser to do so. What is a
document but a list of words separated by spaces... an especially good
application for a LISt Processing language.
Jul 22 '05 #30

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

Similar topics

4
12480
by: Frank | last post by:
Whats best : register_globals ON ? OR register_globals OFF ? I currently use: $_POST
2
9032
by: scorp7355 | last post by:
I was wondering if there is some other way to turn autocomplete off besides using "autocomplete=off", using a meta tag or something similar. It would be great if there is some way to turn it off at a page level. Any ideas/thought would be greatly appreciated. Thanks in advance, Zac
21
5010
by: nicholas | last post by:
Although in my web.config I have <customErrors mode="off" /> I still get no detailed errors. How comes ? THX This is what I get: Server Error in '/mywebfolder'Application.
5
3991
by: Andreas Müller | last post by:
Hi! I've been looking for a way to log off another user from Windows XP, that is to terminate his session without having to shutdown Windows. My goal is to write a service (preferrably running under System privileges) which is able to log off users after a defined time. Since other users may be logged on as well, it would be quite an unelegant and questionable way to simply use ExitWindows or something of this kind. Since the task manager...
4
23565
by: no_spam_for_gman | last post by:
Hi, I can turn off autocommit within the command window but I cannot figure out how to turn it off when you are in the IBM DB2 Command Line Processor. Does anybody knows how? By the way I mean when you are logged on and the prompt is: db2 => Here's an example how I do it from Command Window (option is c):
6
2058
by: Frank Rizzo | last post by:
I have the following situation: 1. Application X1 runs under a regular user account (this user is also the currently logged on user). 2. Application X1 kicks off Application X2 using an Administrator account and then quits itself. 3. Application X2 does a couple of things, then restarts Application X1 using the regular User account, then Application X2 quits itself.
8
2436
by: Rory Becker | last post by:
A wise man once said: "Never put off until runtime what you can fix at compile time." Actually I think he said it about 10 minutes before I started this post. I am a firm believer, like the man in question, in "Option Strict On" by default. Actually I don't believe I have code where this is not the case.
8
3904
by: =?Utf-8?B?R3JlZw==?= | last post by:
We have an application in our office that has the Option Strict option set to off right now. I do understand it should be set to ON, but right now, I'm just going to continue with it this way since I do not have the time to fix everything to set it to ON. Anyway, my question is if its set to OFF why is it it keeps getting set back to ON, everytime we move the package from one machine to another. It's the Option Strict option specific to...
0
2300
by: scooby dooby | last post by:
Hi All, I need to write a script for windows,which has the requirements as below. 1,It should log out the particuler user from windows at a particuler time ,say 6 o'clock in the evening everyday,At the same time it should not log off other users.Say, if A and B are the users ,then only A has to be loggef off .Also it should display an alert window before logging off. Following pop up msg has to be displayed ''you are going to log off ,plz...
6
1602
by: Rain | last post by:
Hi, I noticed the other day when I was trying to optimise the traffic on a particular web page that it had significant viewstate even though I had turned it off for most of the controls. So in a bold step I decided to attempt to set viewstate on the form itself off which had a massive impact on the viewstate like 80K to 15k. So my question is what is the significance of turning off the viewstate for the form and what information...
0
10125
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
9960
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
11507
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...
1
11279
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
9849
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...
0
7377
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
6280
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
4441
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3494
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.