Re: is LISP the ultimate prgram language?
On Oct 19, 11:18 pm, r...@zedat.fu-berlin.de (Stefan Ram) wrote:
m...@privacy.net writes:
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 =BBobject oriented programming language=AB
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 =BBobject oriented programming=AB 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:-).)
=BBIt 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.=AB
http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
Note that Key was the inventer of Smalltalk. (Interested party,
so to speak.)
Other quotes:
=BBActually I made up the term "object-oriented", and I
can tell you I did not have C++ in mind.=AB
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++.
http://en.wikiquote.org/wiki/Alan_Kay
=BBAs 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.=AB
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 <87oezm7eoa....@mithril.chromatico.net>
=BBAssuming 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.=AB
H. S. Lahman in <Kf7Df.1590$0J3.367@trndny08>
=BBThe problem of teaching object-oriented programming (...)
C++ fails to meet almost all requirements on our list.=AB
Michael K=F6lling
=BBC++ is generally regarded as the most technically
deficient of the popular OOPLs.=AB
H. S. Lahman in <bv6je.8995$_f7.1506@trndny01>
=BBThere are only two things wrong with C++,
The initial concept and the implementation.=AB
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
=BBC++ is a horrible language.=AB
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
=BBC++ has always been a zombie, its only drive is the C
ghost inside it=AB
Given the quality of Linux, I don't think you can quote Linus on
software engineering issues.
--
James Kanze