is LISP the ultimate prgram language?

M

me

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.

Can anyone confirm and explain or elaborate?
 
A

Alf P. Steinbach

* (e-mail address removed):
Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.

Can anyone confirm and explain or elaborate?

You don't want to take a C++ class taught by a Lisp advocate.

For that matter you don't want to take a Lisp class taught by a C++ advocate.

Language bigots & fanatics are best avoided. They're just silly people. If you
trust what they say or teach you'll be heading for disaster.


Cheers & hth.,

- Alf
 
M

me

Alf P. Steinbach said:
You don't want to take a C++ class taught by a Lisp advocate.

For that matter you don't want to take a Lisp class taught by a C++ advocate.

Understood but the teacher is neither

It was just something that came up when talking abt the
history of programming languages

Something that someone in history said. And I'm curious
why this person thinks this.
 
J

James Kanze

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.
Can anyone confirm and explain or elaborate?

Well, it's certainly considered by some to be the ultimate
language. Just about any language has such fanatices, and I've
also heard C, C++ and Java qualified as the ultimate language.
Ignoring such extremists, however, I think it's safe to say that
the ultimate language doesn't exist, and almost certainly never
will.

With regards to the "direction" languages are going: there are
strong arugments on some grounds ("proving" correctness, etc.)
in favor of functional languages, and there have been very
serious articles, by leading experts (particularly John Backus),
preconcising functional languages in order to be able to better
prove correctness. All of the papers I can find in this regard,
however, date from the 1970's; since then, either the proponents
have given up or retired, or they've accepted the fact that
functional programming is not going to replace procedural
programming in practice, regardless of the theoretical aspects.
Or perhaps they've simply recognized that you can use a more or
less functional style even in more general purpose languages
like C++, which weren't designed for it; in my own code, there
are a large number of functions which consist of a single return
statement, and I'll accept a more complicated expression than
usual in order to achieve this (but without making any sort of
hard and fast rule about it).

Finally, the "direction" modern languages are going in practice
is a mixture of object oriented and various generic idioms (of
which C++'s template meta-programming is an example). Which
doesn't prevent most code written in industry to still be fairly
procedural---inside the classes of OO, the member functions are
still very procedural. (IMHO, making them more often
functional, without going to extremes, would be an improvement,
but the fact remains that in practice, when I look at existing
code bases, 40 or 50 line functions doing all sorts of
unrelated, or very weakly related things is still the norm.)
 
B

Brian Raven

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.

Can anyone confirm and explain or elaborate?

I like this as a response:

http://xkcd.com/224/
 
S

Stefan Ram

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.
Can anyone confirm and explain or elaborate?

C++ wants to be an »object oriented programming language«

The term »object oriented programming« was coined in 1967 by
Alan Kay who wrote in 2003 regarding object oriented
programming:

»It can be done in Smalltalk and in LISP. There are
possibly other systems in which this is possible, but
I'm not aware of them.«

http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

Other quotes:

»Actually I made up the term "object-oriented", and I
can tell you I did not have C++ in mind.«

http://en.wikiquote.org/wiki/Alan_Kay

»As for myself, it wasn't until I got to play
extensively with Smalltalk, Objective-C, and LISP that
I realized just how badly broken C++ is.«

Charlton Wilbur in <[email protected]>

»Assuming from the message title that you are going to
be teaching the basic OO paradigm to novices, then I
agree with O'Leary, C++ is a terrible place to start.«

H. S. Lahman in <Kf7Df.1590$0J3.367@trndny08>

»The problem of teaching object-oriented programming (...)
C++ fails to meet almost all requirements on our list.«

Michael Kölling

»C++ is generally regarded as the most technically
deficient of the popular OOPLs.«

H. S. Lahman in <bv6je.8995$_f7.1506@trndny01>

»There are only two things wrong with C++,
The initial concept and the implementation.«

Bertrand Meyer

»C++ is a horrible language.«

Linus Torvalds

»C++ has always been a zombie, its only
drive is the C ghost inside it«

Pascal J. Bourguignon in <[email protected]>
 
B

Brian Wood

  C++ wants to be an »object oriented programming language«

  The term »object oriented programming« was coined in 1967 by
  Alan Kay who wrote in 2003 regarding object oriented
  programming:

      »It can be done in Smalltalk and in LISP. There are
      possibly other systems in which this is possible, but
      I'm not aware of them.«

http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

  Other quotes:

      »Actually I made up the term "object-oriented", and I
      can tell you I did not have C++ in mind.«

http://en.wikiquote.org/wiki/Alan_Kay

      »As for myself, it wasn't until I got to play
      extensively with Smalltalk, Objective-C, and LISP that
      I realized just how badly broken C++ is.«

Charlton Wilbur in <[email protected]>

      »Assuming from the message title that you are going to
      be teaching the basic OO paradigm to novices, then I
      agree with O'Leary, C++ is a terrible place to start.«

H. S. Lahman in <Kf7Df.1590$0J3.367@trndny08>

      »The problem of teaching object-oriented programming (...)
      C++ fails to meet almost all requirements on our list.«

Michael Kölling

      »C++ is generally regarded as the most technically
      deficient of the popular OOPLs.«


It would help if you had more links for these quotes.
Probably some of them date to the 1990s. At the time
there may have been more truth to the quotes than
there is now. Progress has been made in ironing out
some of the weaknesses. Anyway, my opinion is
similar to something Kanze wrote once -- C++ isn't
very good, but it is better than the alternatives.
I don't think the future is bright for C, Java or
Lisp. The sapling on the cover of D&E though has
since been growing into a healthy tree. That
growth makes some people angry I guess.


Brian Wood
http://webEbenezer.net
 
N

Nick Keighley

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.

Can anyone confirm and explain or elaborate?

you could take a look at comp.lang.lisp (don't cross-post or you'll
start a war!). You could take a look at scheme as well (a light-weight
variant of Lisp (and *that's* a controversial view as well!)).

Lisp is an interesting language and nearly as old as FORTRAN.
Lisp has been the future for an awful long time.

--
In a profession plagued by, "when all you have is a hammer, everything
looks like a nail," we get really excited when someone is able to come
along and prove that everything really *is* a nail if lambda is the
hammer.
B.R.Lewis (comp.lang.scheme)
 
J

James Kanze

C++ wants to be an »object oriented programming language«

No it doesn't. C++ wants to be a multi-paradigm programming
langauge, supporting many different paradigms, including object
oriented programming. Many (not all) of the criticisms of it
come from people who insist that only one paradigm is good, and
are upset with C++ because it doesn't impose that paradigm. In
practice, the more tools you have in your workbox, the more
effective you can be (provided you know how to use them). For
any given paradigm, C++ is probably a bit harder to use than a
language dedicated to only supporting that paradigm, but it has
the advantage of not imposing any one paradigm, and letting you
use which ever one is most appropriate to the problem at hand.

Having said that: let's look at where your quotes are coming
from.
The term »object oriented programming« was coined in 1967 by
Alan Kay who wrote in 2003 regarding object oriented
programming:

The term was coined by Alan Key, but has gone one to acquire a
life and a meaning of its own, beyond what he originally
conceived of. In particular, Key's OO was very much dynamically
bound, with inheritance only for implementation; almost all
serious OO languages today use static type checking, with
inheritance mainly of implementation. Arguably, these are two
different things, and a different word should have been chosen,
but it wasn't. (Meyer once defined OO in a way that it couldn't
be done in Smalltalk:).)
»It can be done in Smalltalk and in LISP. There are
possibly other systems in which this is possible, but
I'm not aware of them.«

Note that Key was the inventer of Smalltalk. (Interested party,
so to speak.)
Other quotes:
»Actually I made up the term "object-oriented", and I
can tell you I did not have C++ in mind.«

That's rather obvious, since C++ didn't exist at the time. More
to the point, Key was very much thinking in terms of dynamic
type checking (as in Lisp); as I said, the word has evolved, and
most people associate it with languages with static type
checking: Java and Eiffel, if not C++.
»As for myself, it wasn't until I got to play
extensively with Smalltalk, Objective-C, and LISP that
I realized just how badly broken C++ is.«

I'm not too sure how to take that (except maybe as sour grapes):
Key obviously was playing with Smalltalk (and probably Lisp,
given the influence of Lisp on Smalltalk) long before C++ was
even invented.
Charlton Wilbur in <[email protected]>
»Assuming from the message title that you are going to
be teaching the basic OO paradigm to novices, then I
agree with O'Leary, C++ is a terrible place to start.«
H. S. Lahman in <Kf7Df.1590$0J3.367@trndny08>
»The problem of teaching object-oriented programming (...)
C++ fails to meet almost all requirements on our list.«
Michael Kölling
»C++ is generally regarded as the most technically
deficient of the popular OOPLs.«
H. S. Lahman in <bv6je.8995$_f7.1506@trndny01>
»There are only two things wrong with C++,
The initial concept and the implementation.«

I'm not familiar with any of the above people, but I'd be
interested in knowing more about the context in which they are
speaking. *IF* the goal is to teach OO as the unique solution,
and as an end in itself, then no, C++ is not the ideal language.
If the goal is to teach effective programming, using OO when
appropriate, other languages when appropriate... C++ probably
isn't the ideal language, either, but none of the others are
very good either. It's a real problem; in some ways, I'd argue
that the first programming course should still be taught in
Pascal (but that's just showing my age). In other ways, I'd
argue that the language isn't that important in itself: the best
book on programming (in general) that I know is by far
Stroustrup's: _Programming Principles and Practice Using C++_.
And one of the main reasons is in the title: it insists on the
principles and practice, reducing the language (C++) to the role
of a tool (which is what it should be). He could rewrite the
book to use Java (or Lisp, or just about any other language)
without major modifications.
Bertrand Meyer
»C++ is a horrible language.«

Bertrand Meyer is the inventor of Eiffel. And he's very
dogmatic; you could replace C++ with any other language except
Eiffel in the above, and he would probably agree. As I said,
I've read a paper in which he proves not only that you can't
really do OO in C++, but that you can't do it in Smalltalk
either. (Meyer's contributions to software engineering are not
to be underestimated, but I do wish he'd be less dogmatic about
Eiffel.)
Linus Torvalds
»C++ has always been a zombie, its only drive is the C
ghost inside it«

Given the quality of Linux, I don't think you can quote Linus on
software engineering issues.
 
K

Krice

Lisp is an interesting language and nearly as old as FORTRAN.

It's probably a nice language in theory, but in practice
nothing really useful has been programmed with it. It's the
matter with many languages that are supposed to be better
than C++. I think the reason is simple: horrible syntax.
I know some people don't appreciate the syntax of C++, but
at least it can be read by humans, in most cases (there are
examples of very twisted C++ source code which is harder
to read than usual).
 
M

Mick

Krice said:
It's probably a nice language in theory, but in practice
nothing really useful has been programmed with it. It's the
matter with many languages that are supposed to be better
than C++. I think the reason is simple: horrible syntax.
I know some people don't appreciate the syntax of C++, but
at least it can be read by humans, in most cases (there are
examples of very twisted C++ source code which is harder
to read than usual).

UMICH claims: Lisp totally dominated Artificial Intelligence
applications for a quarter of a century, and is still the most widely
used language for AI. In addition to its success in AI, Lisp pioneered
the process of Functional Programming.

http://www.engin.umd.umich.edu/CIS/course.des/cis400/lisp/lisp.html

MickG
 
S

Stefan Ram

Brian Wood said:
It would help if you had more links for these quotes.

Most sources are given as URIs or MIDs.

I hope that more information about each quote can be found
via a search engine either in the Web or in Usenet Archives.

Some dates are given on the following page (which is mixed
German and English, the quotes are given near the end with
sometimes some additional date information).

http://www.purl.org/stefan_ram/pub/c++_lernsprache_de
C++ isn't very good, but it is better than the alternatives.

(BTW: Seems to me as if someone also said this about
democracy.)
I don't think the future is bright for C, Java or Lisp.

TIOBE Programming Community Index

Position Delta Programming
Oct 2009 Language

1 = Java
2 = C
...
4 v C++
...
17 ^^ Lisp/Scheme

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Lisp recently might have gained some momentum due to
Clojure.
 
S

Stefan Ram

James Kanze said:
No it doesn't. C++ wants to be a multi-paradigm programming
langauge, supporting many different paradigms, including object
oriented programming.

C++ started out as »C with classes«, so, initially,
classes were seen to be the main raison d'être for C++.
Many (not all) of the criticisms of it come from people who
insist that only one paradigm is good, and are upset with C++
because it doesn't impose that paradigm.

Ignoring other paradigms, C++ does not support
object-oriented programming well even when it is viewed in
isolation. It misses:

- »Everything is an object«

- In C++, there is no support for most literals
as objects:

- »2« is not an object

- »"abc"« is not an object

- In C++, there is no support for several kinds
of data as objects (numbers are not objects,
booleans are not objects)

- In C++, there is no support for code blocks
as objects:

- »{ o.f(); }« is not an object

- Dynamics

- In object-oriented programming, most is done
as late as possible at run time (like message
dispatching) - the C++ standard library tries
to do as much as possible as early as possible
(at compile time; template instantiation).
I'm not familiar with any of the above people, but I'd be
interested in knowing more about the context in which they
are speaking.

For some more information about the source or context see
the other post that I posted about less than an hour ago.
 
T

Tim Slattery

Krice said:
It's probably a nice language in theory, but in practice
nothing really useful has been programmed with it.

Lilypond (www.lilypond.org) is written in Scheme, which I understand
is a dialect of Lisp. Lilypond is a free, open-source, music notation
program, capable of producing *extremely* nice looking scores, of just
about any degree of complexity.

This is extremely useful for those of use who have a need to write out
sheet music from time to time.
 
M

Michael Doubez

C++ started out as >>C with classes<<, so, initially,
classes were seen to be the main raison d'être for C++.

Yes, but in terms of organization of program; not in term of paradigm.
See "A History of C++: 1979-1991" for more information:
http://www.research.att.com/~bs/hopl2.pdf

Ignoring other paradigms, C++ does not support
object-oriented programming well even when it is viewed in
isolation. It misses:

- >>Everything is an object<<

Which is not a OO fundamental principle.

Even Java which is pretty OO has some fundamental type to a class (int
by opposition to Integer IIRC - I have not programmed in Java for
quite a long time).

However, nothing prevents you from using some fundamental library that
wrap fundamental types into class and use them.

[snip]
- Dynamics

- In object-oriented programming, most is done
as late as possible at run time (like message
dispatching) - the C++ standard library tries
to do as much as possible as early as possible
(at compile time; template instantiation).

C++ does support runtime polymorphism.

If you are speaking about message dispatching, it can achieve OO but
it is only a mechanism, not a paradigm. And the runtime overhead is
not in line with C++ goal.
 
A

Anand Hariharan

Taking an Into C++ class in college and the teacher was
talking something abt how LISP was considered by some
to be the ultimate language and that C++ the wrong
"direction" to be going as far as languages.

Can anyone confirm and explain or elaborate?

Google for "Worse is Better". It was written at a time when C was
becoming more popular than LISP and gives insights on why it was so.

- Anand
 
M

Michael Oswald

Krice said:
It's probably a nice language in theory, but in practice
nothing really useful has been programmed with it.

Well, IIRC parts of the software for the DeepSpace 1 probe (or was it
another one?) were programmed in Lisp. Of course this depends on what
exactly you define as useful...


lg,
Michael
 
F

Francesco S. Carta

James Kanze said:
No it doesn't. C++ wants to be a multi-paradigm programming
langauge, supporting many different paradigms, including object
oriented programming. Many (not all) of the criticisms of it
come from people who insist that only one paradigm is good, and
are upset with C++ because it doesn't impose that paradigm. In
practice, the more tools you have in your workbox, the more
effective you can be (provided you know how to use them). For
any given paradigm, C++ is probably a bit harder to use than a
language dedicated to only supporting that paradigm, but it has
the advantage of not imposing any one paradigm, and letting you
use which ever one is most appropriate to the problem at hand.

Having said that: let's look at where your quotes are coming
from.


The term was coined by Alan Key, but has gone one to acquire a
life and a meaning of its own, beyond what he originally
conceived of. In particular, Key's OO was very much dynamically
bound, with inheritance only for implementation; almost all
serious OO languages today use static type checking, with
inheritance mainly of implementation. Arguably, these are two
different things, and a different word should have been chosen,
but it wasn't. (Meyer once defined OO in a way that it couldn't
be done in Smalltalk:).)


Note that Key was the inventer of Smalltalk. (Interested party,
so to speak.)


That's rather obvious, since C++ didn't exist at the time. More
to the point, Key was very much thinking in terms of dynamic
type checking (as in Lisp); as I said, the word has evolved, and
most people associate it with languages with static type
checking: Java and Eiffel, if not C++.


I'm not too sure how to take that (except maybe as sour grapes):
Key obviously was playing with Smalltalk (and probably Lisp,
given the influence of Lisp on Smalltalk) long before C++ was
even invented.


I'm not familiar with any of the above people, but I'd be
interested in knowing more about the context in which they are
speaking. *IF* the goal is to teach OO as the unique solution,
and as an end in itself, then no, C++ is not the ideal language.
If the goal is to teach effective programming, using OO when
appropriate, other languages when appropriate... C++ probably
isn't the ideal language, either, but none of the others are
very good either. It's a real problem; in some ways, I'd argue
that the first programming course should still be taught in
Pascal (but that's just showing my age). In other ways, I'd
argue that the language isn't that important in itself: the best
book on programming (in general) that I know is by far
Stroustrup's: _Programming Principles and Practice Using C++_.
And one of the main reasons is in the title: it insists on the
principles and practice, reducing the language (C++) to the role
of a tool (which is what it should be). He could rewrite the
book to use Java (or Lisp, or just about any other language)
without major modifications.


Bertrand Meyer is the inventor of Eiffel. And he's very
dogmatic; you could replace C++ with any other language except
Eiffel in the above, and he would probably agree. As I said,
I've read a paper in which he proves not only that you can't
really do OO in C++, but that you can't do it in Smalltalk
either. (Meyer's contributions to software engineering are not
to be underestimated, but I do wish he'd be less dogmatic about
Eiffel.)


Given the quality of Linux, I don't think you can quote Linus on
software engineering issues.

Just for the records, I think you have mistaken the quotes'
attribution.

You seem to have interpreted them as "quoted person / quote" while
Stefan Ram seems to have posted them as "quote / quoted person".

If I'm correct, then your considerations could eventually be reviewed
- in particular:

(editing Stefan Ram's text)
---
»There are only two things wrong with C++,
The initial concept and the implementation.«
Bertrand Meyer
---

»C++ is a horrible language.«
Linus Torvalds
---
»C++ has always been a zombie, its only
drive is the C ghost inside it«
Pascal J. Bourguignon
---
(end of edited Stefan Ram's text)

As for this discussion in general, I still need to get accustomed to
other languages.

I am currently rehearsing my javascript-ing, which was rusty at least,
and I'm having some headaches about the pass-by-value vs pass-by-
reference behavior.

For what is worth in this context, I love C++ for its completely
explicit behavior about this and several other subjects, and I love it
being multi-paradigmatic, it feels just like having a swiss-army knife
always at reach.
 
M

Michael Oswald

Juha said:
Except for Haskell! ;)

(Well, at least if you ask *any* Haskell advocate.)

Well, I like Haskell very much. But it has it's own problems (space
leaks because of too much lazyness and the global variable problem come
into mind). Some do very low level things with Haskell (Linux kernel
modules and a operating system kernel), while most other uses can be
found on more high level stuff.

Anyway, there are still certain tasks for which I would stick with C++
because it's better suited there. At least in my daily work I use most
of the time C++.

lg,
Michael
 
R

Richard Herring

Mick said:
UMICH claims: Lisp totally dominated Artificial Intelligence
applications for a quarter of a century, and is still the most widely
used language for AI.

Hmm. And what has AI achieved as a result, a quarter-century later?

;-/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,682
Members
48,796
Latest member
Greg L.

Latest Threads

Top