Subject: RE: [hackers-il] beating the Avergae

From: Chen Shapira <[email-masked]>
Date: Thu, 3 May 2001 17:28:41 +0200

> Second, I know lisp (nowhere close to the level of Paul Graham of
> course), and I use it in development (for prototyping and stuff). I
> would love to program in lisp for a living. Not that I will quit my
> current job if anyone mentions lisp in my presence, but I'll certainly
> want to know more. Are there lisp jobs in Israel at all?

And now for a more serious reply:

His argument for "power continuum" is compelling, but relative, in two ways.

A language is powerful per task, and a language is powerful by library
routines.

Note that he left "power" undefined. 

He's relying on an intuitive feeling of preference programmers have.
The language I prefer most is the most powerful one, given that one tryed
enough languages.

Besides, some things are very hard to compare. Which is more powerfull, Lisp
or Scheme? Lisp of SmallTalk? C or C++? C++ or Java?

I can't answer those questions.
It depends much on the context. Are you doing web development? A realtime
application? will you need to prove correctness?
What if a particular language has a larger standard library? (Moshez once
proved how powerful Python was by this arguement)
What if a language is really really good for a specific thing? (Like C for
realtime)
And some are mostly apples and oranges. How can you compare Lisp to
Smalltalk?
And then there are specialized languages. PostScript, TeX, make... How
powerful these are?

The argument of "language L doesn't have feature Y" becomes mute when
language are far apart.
C doesn't have classes, Java doesn't do pointers, Scheme doesn't have
dynamic scoping, Python won't type check me.
So?

In general I distrust arguments like "X is better than Y" I prefer "X fits
purpose P better than Y".

But I'm glad Lisp fitted his purpose for rapid development.

---

From: Oleg Goldshmidt <[email-masked]>
Date: 03 May 2001 18:09:37 +0300

> A language is powerful per task, and a language is powerful by library

Or by extensibility (see Graham's books, also below).

As for libraries, there are inter-language interfaces. If you have a
useful Fortran Library, it's no problem calling it from C. Lisp and
Python have numerous foreign-language interfaces. Thus library usage
is essentially external to your development (to an extent, anyway).

Also, there are things that you can do in some languages, and cannot
in others, other than by "writing an interpreter for a more powerful
language," as Graham suggests. Some languages have (tail-)recursion,
closures, first-class functions, lexical scoping, macros,
continuations, etc, some don't. This makes the repertoire of the
programmer wider.  Turing-equivalency is irrelevant, as Graham pointed
out.

> And then there are specialized languages. PostScript, TeX, make... How

Not very in general, very for particular tasks. Let's keep the
discussion to general-purpose languages.

> dynamic scoping, Python won't type check me.

Arguably, the Java and Python features are probably considered
advantageous from the modern point of view.  Now, lisp offers you weak
typing and strong typing if you need that, and OO through CLOS.

This is related to the question of extensibility. Lisp is not
object-oriented (CLOS notwithstanding - it's built upon Lisp). But
Graham shows in "On Lisp" how to extend Lisp to handle the
object-oriented paradigm, inheritance (even multiple inheritance),
etc, by writing a few utilities of a few lines each. I found that very
impressive.

> purpose P better than Y".

I was going to type that I agreed wholeheartedly, but decided against
it. [Wait: I did type it!]. Most things that I have dealt with up to
now could be written in any general-purpose language. Most modern
languages have the necessary facilities, including libraries, to do
all the useful things: communications, numerics, sorting and
searching, parsing, data structures and algorithms - you name it.
[Again, I mean applications - I skip Tex and LaTeX for
text-processing, and things like that, and the cases of projects
closely related to the OS used - UNIX stuff should better be in
C.]. There were a few cases in my experience when I implemented the
same project in different languages, for various reasons. So I am
asking myself which language I would prefer to use given the choice.
A lisp-like language will probably be the first in every case, and C++
pretty low in priority. Does this fit Graham's definition of "power"?

-- 
Oleg Goldshmidt | [email-masked] 
"I'd rather write programs to write programs than write programs."

---

From: guy keren <[email-masked]>
Date: Fri, 4 May 2001 01:42:04 +0300 (EET DST)

i have some claims against what graham is trying to say.

first of all, he mis-interprets reymond's quote in order to make use of
his fame (not that quoting reymond would convince me of anything, but it
might convince other people). the fact that someone asis its good to learn
some language, doesn't have to come cause that person thinks this is a
powerfull language. contrariwise. some languages are good for stretching
one's mind, because they are so _hard_ to use, or because they are very
unnatural.

second, the programmer is more important then the programming language.
if one programmer is more productive in one language then in another, then
one should use the first language. i learned lisp, i used it as a student,
and yet, i don't endorce using it generally. i prefer other languages, and
for _me_ they are more productive.

3rd, many programming methodologies can be exercised in various
programming languages. once i learn of a methodology that i find useful, i
deploy it in other languages as well, as i see fit. i didn't see these
languages making me less productive then other languages. the only place i
saw large differences was between compiled langauges and scripting
languages, where for _small_ specialized tasks, the scripting languages
helped me become far more productive then using compiled languages for the
same purposes.

4th, to some extent, i did using perl what he does with lisp, and it
worked quite well. so at least for me, it makes me believe that the
specific language here doesn't matter as much as he makes it seem to
matter. since i don't see the code he wrote, i can't comment on a deeper
level, but i have seen people (ab)using language features to such extremes
where hardly anyone other then them was able to maintain that code, and i
couldn't usualyl see why they chose to use those features so extensively,
otehr then "because they could". and in most industrial programming
projects, people change, and you need to be able to find other people to
continue maintainance and development on the code.

5th, letting the cat guard the milk isn't bound to give objective
opinions. the man is quite vested in lisp, so i'd be careful with what he
sais. it doesn't mean that he's wrong - it just means i'll need more
objective evidence to be convinced of lisp's power.

btw, oleg - i suggest that instead of looking for a "lisp job", you look
for an "interesting job". choosing a job based on the language used as
the major factor is, IMO, a mistake.

--
guy

"For world domination - press 1,
 or dial 0, and please hold, for the creator." -- nob o. dy

---

From: Oleg Goldshmidt <[email-masked]>
Date: 06 May 2001 10:30:30 +0300

> the major factor is, IMO, a mistake.

I did write that mentioning lisp wouldn't lure me by itself. It would
be a flag for me though that the job might be interesting, and there
might be "thinking out of the box" involved. That, I think, was
Graham's point, and I agree with it.

Actually, you might be making a point similar to Graham's. He writes
that job ads listing, say, C++ are in a way suspicious. A company
might make C++ a requirement for lots of good reasons, e.g. an
existing code base. But then, it also says something about the nature
of the job (not totally novel, probably). 

Besides, there is a subjective element of programming in lisp as fun 
in itself, but that's a quasi-religious issue... ;-)

---

From: guy keren <[email-masked]>
Date: Sun, 6 May 2001 11:15:05 +0300 (EET DST)

> Graham's point, and I agree with it.

if that was his point - he hid it well under piles of claims that 'lisp is
the only way to go'. i'm not sure which he considers as more important -
being creative, or using lisp.

> Actually, you might be making a point similar to Graham's.

if he meant what i think he meant - they i hope i'm not making a similar
point.

> He writes

or it might be that they believe that C++ is the right langauge for them,
and yet they have an interesting system to develope? no, i think that this
kind of judgement is a bit superfluous. in fact, judging a job by 'wanted'
ads is something that can hardly be done with satisfying results.

besides, you can change the way people think and work. where i work, they
were using no perl (except for 2 scripts written by the person i replaced
there). after a while working there, and when i was itching for perl
programming, i started putting it into use, both for internal web site
matters and system matters, and for the writing code generators for "real"
software projects.

> in itself, but that's a quasi-religious issue... ;-)

ok. if you simply enjoy lisp programming so much - then definately a "lisp
job" should be a top priority for you. just like i only pick unix
programming jobs, and avoid windows programming jobs - cause using windows
gives me the crips. i might be missing jobs with work on exciting projects
- but for me, having to use windows for long periods of time consecutively
is a complete downer.

--
guy