Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Indentation (please stop)

13 views
Skip to first unread message

Josef Eschgfaeller

unread,
Jun 30, 1999, 3:00:00 AM6/30/99
to

Erik Naggum wrote:

> it seems you stick to your non-indentation line with something other
> than willingness to listen to good advice.

Hey, this is becoming a sport. I thought I'm here in a good group with
big people from the Lisp community, where I can learn much, and find
myself in this wrestling ring. I didn't stick at all, I sent 3 lines
and 4 lines of not indented code, which everybody of you big guys could
read easily, read carefully your replies, agreeing in part, sometimes
remaining more doubtful, and thought in the last two days we could stop,
since positions became clear enough. Read the end of my first message
("with no intention of flame") - I'm not the world danger for the Lisp
community.

I shall take much time this summer to learn Lisp well and thought to seek
more useful advice from the list.

I'll reply now to some points, but I was more interested in understanding
here what I cannot find in the books, so perhaps one should conclude
this indentation thread. For example there were also some mistakes
in all that. Anyway, I'm a little surprised, how important indendation
seems to be. I think there is much more in Lisp than indentation.

>> More specifically in Lisp I try to memorize (and to teach to
>> memorize) the shapes which can appear.

> you _teach_ Lisp, too? those of us who think that Lisp's image among
> young programmers suffers from bad teachers just got a very unwelcome
> confirmation of our worst fears.

Make an agreement - I forget what you said and you forget what I say
in the next lines. Do you really fear that my students will spread from
Ferrara over the continents and ruin Lisp worldwide? How can you call
someone you don't know a bad teacher? Do you know that in many universities
they teach Pascal? I did that 13 years ago. Anyway, I taught 7 hours of Lisp
at the end of the C/C++ course and it was a little success. Young girls seem
to be very able to close parentheses, as opposed to your young programmers.
Next year I'll teach a full year course on Lisp, comp.lang.lisp permitting
and helping I thought. I have some good books here and collected many
articles to read from the web, however, so in case of disaster I shall
organize some Robinson Lisp. But it's not my preferred choice.

Also, you missed the main point, when I wrote that beginners should
memorizes the structures which appear. I think that it is really important
to create an image of little typical pieces of code in their brain,
which they then recognize in more general cases. This means
carefully reading the code, creating by yourself mentally a sort
of stack of dependencies which substitutes the indentation.

I'm a mathematician by origin and know very well how disturbing
unusual notation can be. Writing X: f ---> f for a function instead
of f: X ---> X is an innocent change, but makes already things
uncomfortable. But if one knows exactly what one is speaking about,
it becomes a minor difficulty. Notation in mathematics is very
important, but understanding much more. So I'm trying to understand exactly
what is going on in Lisp, because as a teacher I have to explain
well also those things, which a programmer maybe deals only by experiment
or experience. These little details, which some of you are
knowledgeable about, I not, are surely much more important than
indentation.

>> For example: "A do has the following structure ... Therefore, when you
>> see a do, look first at the assignments, then at the break-condition and
>> the result, then at the single instructions." And so on. In my opinion
>> this is a good training, and after little time one has no more need to
>> study the indentations, which also takes time and distracts.

> this sounds like a struggling beginner's view, a beginner who struggles
> because he's doing something wrong and don't want to change his ways.

Here I cannot follow your reply. It's an important point. What is
wrong with it? I'm a beginner - I studied Lisp two years ago, mainly
in a good older German book by Mayer, which explains rather well the
underlying data structures, but thought then it were too difficult
for my classes, and changed opinion only this year, because it seemed
easy for them. The students are beginners too. So I think it's o.k.
that they learn how the building blocks in Lisp look.

And why do you think that I don't want to change my opinions? When I
learn something, I change my opinions very often, each time I discover
some new aspect.

>> in fundamental mode), I verify the balance of parentheses with the editor.
> "always in fundamental mode"? there should be a law against that.

Sorry, that's my private problem. I'm very quick in typewriting and
can indent by myself. During the last 1-3 years I wrote much in Python,
where indentation is obligatory - that's not the point.
I'm maintaining a bibliography with over 3500 files and a rather big
Web server, using only Emacs in fundamental mode, and it takes me very
little time. I like Emacs because it's so powerful, but if one prescribes
too much one looses some of that power.

> this often happens to people who don't engage in introspection.

This is pure wrestling. I thought about it before, I read all your
terrific mails, I shall think about again, so what about introspection?
I appreciated most the letters by Gareth McCaughan (British cool, I
like Sherlock Holmes - or Scottish? another flame arriving ...) and
Pierre Mai, which were technical. Other ones I found rather emotional.
Fortunately we are only writing about Lisp. More generally the point
of view, that someone who doesn't follow blindly any uniformization
lacks introspection, should be rather dangerous. Indentation is not
the problem, I can indent how you want, but I'm thinking about
intolerance now.

> lazy people who don't engage in introspection

Sorry, lazy university teachers teach Pascal.

> never learned to use the power of Emacs

Is this your technique of discussion? I appreciated much also some of
your advices on my Lisp questions before, but this seems to be not
your field.

I learned everything I need of Emacs and have an .emacs file full of
little utilities. I don't need the special modes because I type
so fast. How can you judge a person you don't know?

> I'm frankly amazed that you think _others_ are stubborn.

Not at all. Maybe I think it now.

> here's my suggestion: use PPRINT on your forms to see how Common Lisp is
> most commonly formatted.

Beautiful. I shall from now on indent my code in my questions, and if
I should forget, you use print. I tried it, it works well.

> (defun number-list (from to &optional (step 1))
> (do ((element from (+ element step)) (list nil))
> ((> element to) (nreverse list))
> (push element list)))

> I would expect a seasoned Lisp programmer not to write this as a function

Now you are critizing non-seasoned Paul Graham.

> rather just write (loop for n from <from> to <to> collect n)

Give me some time please. I find loop rather complicated and it is a
long chapter in Steele. I shall read that later, because it is also
interesting, but before there are many other points I want to master.
I made some little experiments with loop, but systematically it's too
much at the moment.

Everything ready for the next European War. So quickly it goes.

Josef Eschgfaeller
Dipartimento Matematico
Universita' di Ferrara
e...@felix.unife.it e-mail
http://felix.unife.it/ home page


Gareth McCaughan

unread,
Jun 30, 1999, 3:00:00 AM6/30/99
to
Josef Eschgfaeller wrote:

> Also, you missed the main point, when I wrote that beginners should
> memorizes the structures which appear. I think that it is really important
> to create an image of little typical pieces of code in their brain,
> which they then recognize in more general cases. This means
> carefully reading the code, creating by yourself mentally a sort
> of stack of dependencies which substitutes the indentation.

But you don't *need* to do that, most of the time. Alfred North
Whitehead once said something very wise: that intellectual progress
is largely a matter of reducing the number of things about which
we actually have to think. One thing that indentation does is to
enable you to read code quickly *without* having to think hard
about it; whereas the "mental sort of stack of dependencies" thing,
though it's important to be able to do, requires some concentration.
Usually, that concentration can be used better for other purposes.

Itsperfectlypossibletoreadenglishwithoutspacescapitallettersorpunc
tuationandtheresnoparticularreasonwhyonehastouseanyofthosecrutches
ifonedoesntwanttoitspossibletofollowwhatsgoingoneveninquiteacompli
catedsentencewithnopunctuationbybuildingupcarefullyamentalmodeloft
hesentencestructurebutseehowfrustratingitisifyouhavetodoitformoret
hanabouttensecondsatastretchreadinglispcodeorcodeinanyotherlanguag
eforthatmatterwithoutindentationisabitlikereadingenglishwithoutany
spacescapitallettersorpunctuationyoucandoitbutitspainfulandifyouac
tuallywanttomakeanyuseofwhatyourereadingitreallyslowsyoudownbecaus
eyouretryingtouseyourbrainfortwothingsatonce

Now, maybe that wasn't really so bad. But suppose it had been, not
a piece of general blurb about how hard compressed English is to
read, but a non-trivial technical question, or a hard-to-understand
poem, or a set of crossword clues. That would have been *painful*
(unless you're much cleverer than I am, which perhaps you are).

> I'm a mathematician by origin and know very well how disturbing
> unusual notation can be. Writing X: f ---> f for a function instead
> of f: X ---> X is an innocent change, but makes already things
> uncomfortable. But if one knows exactly what one is speaking about,
> it becomes a minor difficulty. Notation in mathematics is very
> important, but understanding much more.

What would you think of a mathematician who began a seminar by
saying "In what follows, I'm going to write all my arrows the
other way round from what's usual; I'm going to use R to denote
the Riemann sphere (short for Riemann, you see), and Z (short
for Zahlen) to denote the usual real numbers. N will be the set
of negative numbers. I find all this much easier to follow than
the usual conventions. Oh, and I ought to warn you that I
interchange the usual meanings of `tensor' and `torsion'"?
I bet you'd hate him all through that seminar, even if he
proved the Riemann Hypothesis. Of course I'm giving an extreme
example; but that's the sort of effect you get if you say "I'm
going to ignore the unanimous opinion of a generation of computer
folks, and not indent any of my code, because *I* find it easier
to read without the indentation".

> So I'm trying to understand exactly
> what is going on in Lisp, because as a teacher I have to explain
> well also those things, which a programmer maybe deals only by experiment
> or experience. These little details, which some of you are
> knowledgeable about, I not, are surely much more important than
> indentation.

Certainly. And if you ask questions about those details, people
will answer them. Although they might be more reluctant to do so
if you insist on obfuscating your code :-).

>>> in fundamental mode), I verify the balance of parentheses with the editor.
>> "always in fundamental mode"? there should be a law against that.
>
> Sorry, that's my private problem. I'm very quick in typewriting and
> can indent by myself. During the last 1-3 years I wrote much in Python,
> where indentation is obligatory - that's not the point.
> I'm maintaining a bibliography with over 3500 files and a rather big
> Web server, using only Emacs in fundamental mode, and it takes me very
> little time. I like Emacs because it's so powerful, but if one prescribes
> too much one looses some of that power.

What power do you use by using Emacs in Lisp mode? I don't
understand.

>> this often happens to people who don't engage in introspection.
>
> This is pure wrestling. I thought about it before, I read all your
> terrific mails, I shall think about again, so what about introspection?
> I appreciated most the letters by Gareth McCaughan (British cool, I
> like Sherlock Holmes - or Scottish? another flame arriving ...)

Thanks! Actually I'm Irish by descent, was born in the USA, and
have lived in England most of my life. I guess that makes me, er,
confused.

> I learned everything I need of Emacs and have an .emacs file full of
> little utilities. I don't need the special modes because I type
> so fast. How can you judge a person you don't know?

The special modes aren't there only in order to save typing.
They're also intended to save thinking, and to save making the
sort of stupid mistakes most of us make (especially when typing
fast). Perhaps you don't make mistakes; but the rest of us do.

And, even if all they did was to speed your typing, wouldn't
it be even better if you (effectively) typed even faster?
Surely everything just scales linearly with typing speed,
so that the proportional improvement is much the same whether
you're very fast or very slow. (Not quite, obviously, since
thinking speed doesn't depend on typing speed.)

Now, maybe you've given all the special modes that might be
useful to you a thorough inspection and tried them for a bit,
and you've found that they didn't help you; if so, fair enough.

> Give me some time please. I find loop rather complicated and it is a
> long chapter in Steele. I shall read that later, because it is also
> interesting, but before there are many other points I want to master.
> I made some little experiments with loop, but systematically it's too
> much at the moment.

A suggestion: don't bother trying to understand everything about LOOP
for the moment. Learn to do easy things with it:
(loop for i from 1 to n collect ...)
(loop for i from 1 to n sum ...)
(loop while ... do ...)
Think of it as a sort of common syntax for all the different
kinds of simple loop you can find in other languages. It *can*
do hairy things too, but even if you never use it for the hairy
things it's handy for simple things.

--
Gareth McCaughan Dept. of Pure Mathematics & Math. Statistics,
Gareth.M...@pobox.com Cambridge University, England.

thi

unread,
Jun 30, 1999, 3:00:00 AM6/30/99
to
Josef Eschgfaeller <e...@felix.unife.it> writes:

> Make an agreement - I forget what you said and you forget what I say
> in the next lines. Do you really fear that my students will spread
> from Ferrara over the continents and ruin Lisp worldwide? How can you
> call someone you don't know a bad teacher? Do you know that in many
> universities they teach Pascal? I did that 13 years ago. Anyway, I
> taught 7 hours of Lisp at the end of the C/C++ course and it was a
> little success. Young girls seem to be very able to close parentheses,
> as opposed to your young programmers. Next year I'll teach a full
> year course on Lisp, comp.lang.lisp permitting and helping I
> thought. I have some good books here and collected many articles to
> read from the web, however, so in case of disaster I shall organize
> some Robinson Lisp. But it's not my preferred choice.

everyone teaches by their actions (and sometimes by their words). good
teachers do not hobble their students, as i fear you are doing.

if you're interested in choice and freedom of expression, the best thing
you can do for your students is to archive these discussions, present
them to the class, and let them decide for themselves. you may learn
something in the process.

thi

Vassil Nikolov

unread,
Jun 30, 1999, 3:00:00 AM6/30/99
to comp.la...@list.deja.com
On 1999-06-30 19:57 +0200,
Josef Eschgfaeller wrote:

> Erik Naggum wrote:
>
> > it seems you stick to your non-indentation line with something other
> > than willingness to listen to good advice.
>
> Hey, this is becoming a sport. I thought I'm here in a good group with
> big people from the Lisp community, where I can learn much, and find
> myself in this wrestling ring. I didn't stick at all, I sent 3 lines
> and 4 lines of not indented code, which everybody of you big guys could
> read easily, read carefully your replies, agreeing in part, sometimes
> remaining more doubtful, and thought in the last two days we could stop,

and kept insisting indentation was not essential. Since we have good
reason to believe indentation _is_ essential, we have been trying to
enlighten you, and also anybody else that may have been reading the
thread.

[...]


> Anyway, I'm a little surprised, how important indendation
> seems to be. I think there is much more in Lisp than indentation.

Indeed. Also, there is much more in poetry than starting each
verse on a new line, yet somehow poets do do this---just ritual, I
guess, probably sanctified because Homer did it (whoever it
was that wrote the Iliad down, since Homer couldn't actually
do it, being blind).

Fill, 66 characters per line:

No longer mourn for me when I am dead than you shall hear the
surly sullen bell give warning to the world that I am fled from
this vile world, with vilest worms to dwell. Nay, if you read
this line, remember not the hand that writ it, for I love you so
that I in your sweet memory would be forgot if thinking on me
should make you woe. Oh, if, I say, you come upon this verse
when I perhaps compounded am with clay, do not so much as my poor
name rehearse but let your love even with my life decay. Lest
the wise world should look into your moan and mock you with me
after I am gone.

[...]


> Do you know that in many universities
> they teach Pascal? I did that 13 years ago.

After languages such as Scheme, CLU and probably some of the
functional languages, Pascal is a good choice of an educational
programming language (after all, this was its original purpose),
much better than Java or C or C++ as a first-year programming
language. (Mail flames directly to me and I will summarise to
the group.)

> Anyway, I taught 7 hours of Lisp
> at the end of the C/C++ course and it was a little success. Young girls seem
> to be very able to close parentheses, as opposed to your young programmers.

If Lisp is not about indentation, it is even less about closing
parentheses, first impressions notwithstanding.

[...]


> So I'm trying to understand exactly
> what is going on in Lisp, because as a teacher I have to explain
> well also those things

[...]

Let me take this occasion to say that I believe in this: the amount
of what a teacher knows about the subject being taught must be
at least 10 times as much as what the teacher actually says on
the subject.

[...]


> I'm maintaining a bibliography with over 3500 files and a rather big
> Web server, using only Emacs in fundamental mode, and it takes me very
> little time. I like Emacs because it's so powerful, but if one prescribes
> too much one looses some of that power.

Does maintaining a server include writing/modifying programs?
If so, why do you miss the chance to improve productivity by using
an appropriate mode? If not, do you also restrict yourself to fundamental
mode when _writing_ programs?

[...]


> Give me some time please. I find loop rather complicated and it is a
> long chapter in Steele. I shall read that later, because it is also
> interesting, but before there are many other points I want to master.
> I made some little experiments with loop, but systematically it's too
> much at the moment.

This led me to make the following mental experiment. Consider the
following statement, made extreme for illustrative purposes:

LOOP is evil, I refuse to use it, I refuse to learn it, it has no
place as part of Lisp.

Now, imagine that a Lisp programmer says that. After that, imagine
that a Lisp teacher says that. There is a difference, isn't there.

Similar to what one of the other posters suggested, I wonder if
there are Lisp students (whether from Ferrara or not) that are
reading this, and I wonder what they would think of it.


Vassil Nikolov
Permanent forwarding e-mail: vnik...@poboxes.com
For more: http://www.poboxes.com/vnikolov
Abaci lignei --- programmatici ferrei.

Christopher Browne

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
On Wed, 30 Jun 1999 19:57:39 +0200, Josef Eschgfaeller
<e...@felix.unife.it> wrote:
>I shall take much time this summer to learn Lisp well and thought to seek
>more useful advice from the list.

Good luck with this...

>I'll reply now to some points, but I was more interested in understanding
>here what I cannot find in the books, so perhaps one should conclude
>this indentation thread. For example there were also some mistakes
>in all that. Anyway, I'm a little surprised, how important indendation
>seems to be. I think there is much more in Lisp than indentation.

Indeed there is more than indentation.

The point is that indentation is sufficiently easy to automate, and
improves readability sufficiently, that it makes little sense to *not*
automate this.

>I'm a mathematician by origin and know very well how disturbing
>unusual notation can be. Writing X: f ---> f for a function instead
>of f: X ---> X is an innocent change, but makes already things
>uncomfortable. But if one knows exactly what one is speaking about,
>it becomes a minor difficulty. Notation in mathematics is very
>important, but understanding much more. So I'm trying to understand exactly
>what is going on in Lisp, because as a teacher I have to explain
>well also those things, which a programmer maybe deals only by experiment
>or experience. These little details, which some of you are
>knowledgeable about, I not, are surely much more important than
>indentation.

A *definitely* reasonable parallel is to look at Donald Knuth's efforts
in creating TeX.

He spent considerable time and effort to build tools to render
mathematical material correctly.

And contrary to your suggestion that indentation isn't important, in
TeX, the notion of "gluing" objects together is the concept of *vital*
importance. One (good) view of TeX is as a system that allows the user
to construct a large and very complex dynamic programming formulation
where the point of the exercise is to optimize the layout based on a
host of constraints and objectives.

In effect, this is the "indentation problem" taken to the nth degree.

>>> For example: "A do has the following structure ... Therefore, when you
>>> see a do, look first at the assignments, then at the break-condition and
>>> the result, then at the single instructions." And so on. In my opinion
>>> this is a good training, and after little time one has no more need to
>>> study the indentations, which also takes time and distracts.
>
>> this sounds like a struggling beginner's view, a beginner who struggles
>> because he's doing something wrong and don't want to change his ways.
>
>Here I cannot follow your reply. It's an important point. What is
>wrong with it? I'm a beginner - I studied Lisp two years ago, mainly
>in a good older German book by Mayer, which explains rather well the
>underlying data structures, but thought then it were too difficult
>for my classes, and changed opinion only this year, because it seemed
>easy for them. The students are beginners too. So I think it's o.k.
>that they learn how the building blocks in Lisp look.
>
>And why do you think that I don't want to change my opinions? When I
>learn something, I change my opinions very often, each time I discover
>some new aspect.

You suggest that a goal is for one to (rewording slightly) "not need to
work hard at handling indentation."

Everyone agrees with that; the point that is being put across is that
with an editor environment that is supportive of indentation, managing
indentation does not represent a burden either of intellectual effort or
of time.

>>> in fundamental mode), I verify the balance of parentheses with the editor.
>> "always in fundamental mode"? there should be a law against that.
>
>Sorry, that's my private problem. I'm very quick in typewriting and
>can indent by myself. During the last 1-3 years I wrote much in Python,
>where indentation is obligatory - that's not the point.
>I'm maintaining a bibliography with over 3500 files and a rather big
>Web server, using only Emacs in fundamental mode, and it takes me very
>little time. I like Emacs because it's so powerful, but if one prescribes
>too much one looses some of that power.

If you switched to a Lisp-oriented mode, the editor could handle Lisp
indentation for you, thereby diminishing the number of things you need
to worry about by one.

>> here's my suggestion: use PPRINT on your forms to see how Common Lisp is
>> most commonly formatted.
>
>Beautiful. I shall from now on indent my code in my questions, and if
>I should forget, you use print. I tried it, it works well.
>
>> (defun number-list (from to &optional (step 1))
>> (do ((element from (+ element step)) (list nil))
>> ((> element to) (nreverse list))
>> (push element list)))
>
>> I would expect a seasoned Lisp programmer not to write this as a function
>
>Now you are critizing non-seasoned Paul Graham.

What he presents in a textbook, for pedagogical purposes, may not
represent what should be used in large production systems.

It is useful to have students perform exercises that build functions for
things that one might, "programming in the large," instead represent in
another way.

>> rather just write (loop for n from <from> to <to> collect n)
>
>Give me some time please. I find loop rather complicated and it is a
>long chapter in Steele. I shall read that later, because it is also
>interesting, but before there are many other points I want to master.
>I made some little experiments with loop, but systematically it's too
>much at the moment.

... And that represents nicely why Graham would present it as a
function.

(loop ...) is not a Lisp form that is easy for novices to grasp.

a) If the point of the course is to teach about things like lists,
recursion, and presenting-program-as-data, (loop) is not of great
pedagogical value.

b) (loop) is hard to understand, and novices shouldn't try to learn it
first, as in that direction lies frustration.

c) The specifications for (loop) are arguably not completely consistent,
which means that experts may sometimes disagree as to how a particular
instance should function.
--
Real Programmers use: "compress -d > a.out"
cbbr...@ntlug.org- <http://www.ntlug.org/~cbbrowne/lsf.html>

Josef Eschgfaeller

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
Thien-Thi Nguyen wrote:

> if you're interested in choice and freedom of expression

I find this not correct. I did at most propose a different point
of view, I did not defend it so exaggeratedly, and some of you guys
attack me in this way and speak of choice and freedom of expression.

Was it not you who wrote me last week "I believe education about Lisp
is the most important thing we can do at this time, and hope your
course goes well."?

Eli Barzilay wrote now too:

>> (defun num-list (a b &optional (d 1))
>> (do ((x a (+ x d)) (li nil))
>> ((> x b) (nreverse li)) (push x li)))

> BTW, if indentation is completely unimportant, why did you put the
> newlines in those places? Why did you put spaces around some parens
> where it is not needed?

> And if you insist on using this style in public, then why do you put
> these "> " prefixes to stuff you quoted?

You like it to contradict yourself. If you look a little better at my
earth-shaking 3 lines, you would discover that there is some
system. Do you have any difficulty to read it? May be it's
unconventional, but it's rather neat. I see, also on the list,
sometimes code which is less carefully structured.

I learnt those "> " prefixes on Fidonet - a good school in
civilised written remote distance communication.

> The whole point of comparing natural language to programs is bogus.
> When you write English sentences (or any other language), you never
> get them too deep. Try looking at texts that you wrote and find the
> longest sentence, then find the longest function you wrote.

Not so sure. Read Kant or Cicero or Defoe, and you will find quite
long sentences. It's training. Today young people don't read much
and think that a sentence of three lines is a long one.

> The memoization of a function fn using a key which defaults to the
> first function and a test that defaults to eql function and an
> optional name argument is: take table as a new hash table with a
> test as its test function, set the :memo property of the name

Funny. Remembers me of the HyperTalk programs I wrote years ago.
Was not a bad language. Your example shows also that natural language
is rather powerful and that, with some ability, one could formulate
most computer programs in natural language. It seems to me more a
compiler problem. But all these attacks are stupid. In mathematics
really there are complicated formulas or theorems which are almost
impossible to translate into a natural language. Try to translate some
lines of a paper in commutative algebra into English. But I know such
stuff by myself, don't you believe that? How do you know that I
never thought about such things?

I find Lisp a very interesting language, sometimes I think that young
pure programmers don't see everything one can make out of it, and I'm
interested in discussing technical and, if you want, also general or
philosophical aspects, being conscious that many people on the list are
more knowledgeable than I, but this thread, which is not more correct
or constructive, I have no intention to continue. Sorry to those who
instead were constructive.

je

Erik Naggum

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
* Josef Eschgfaeller <e...@felix.unife.it>

| Hey, this is becoming a sport.

why am I not surprised that this is your line of defense? sigh.

| Read the end of my first message ("with no intention of flame") - I'm not
| the world danger for the Lisp community.

in this demonstration of paranoia, you keep defending yourself against
charges that have never been levied against you, which I take to mean
that you do not intend to listen, learn, or adapt your ways, but are
still fully aware that they are wrong and do not serve the purposes you
want them to serve.

| Anyway, I'm a little surprised, how important indendation seems to be.

if it is so unimportant to you, why don't you just adapt?

I'm still baffled by the amazing lack of introspection on your part. why
don't you understand how important indentation is to _yourself_ before
you attack others for really stupid things they don't say, mean or intend?

| Young girls seem to be very able to close parentheses, as opposed to your
| young programmers.

come again? as opposed to _whom_? I actually do teach Lisp at times,
but now is the first time you have had opportunity to learn that fact.
my "young programmers" are taught to understand structure by zooming in,
not by scrutinizing details, because when a professional programmer reads
code, he or she will want to understand big issues first, not minutiae of
the coding. stuff like control flow, data flow, intent, and abstraction,
not the precise syntax of a DO form.

| Also, you missed the main point, when I wrote that beginners should
| memorizes the structures which appear.

no, I downgraded your "main" point and upgraded your other points.

| This means carefully reading the code, creating by yourself mentally a
| sort of stack of dependencies which substitutes the indentation.

this is a mistaken view. the big, useful idea with high-level languages
is to be able to localize effects so that the human brain can deal with
units of useful size, and to respect the fact that the human brain does
not have an unlimited stack with unlimited precision and does not have an
unlimited number of mental units available. if we had had that, we would
have had very different languages. and programming is already _way_ more
difficult to grasp and hold in one's brain than regular languages.

| I'm a mathematician by origin and know very well how disturbing unusual

| notation can be. ... So I'm trying to understand exactly what is going


| on in Lisp, because as a teacher I have to explain well also those
| things, which a programmer maybe deals only by experiment or experience.

this tells me that you have never actually programmed, only taught. when
programming in real life, the most important issue is fast navigation,
bar none. professional programmers want to read code in large blocks,
not look at every character. that's how most people read, too: they
don't look at each character, they scan multiple "word pictures" at a
time, perhaps whole paragraphs to recognize key words. the visual
structure of a text, with paragraphs, heads, fonts, etc, is all there to
make this scanning faster and more accurate. you effectively argue that
we should revert to ś's in the middle of the text, and neither should we
use more visible display fonts for heads, because people will read a page
of text from start to finish, anyway.

| These little details, which some of you are knowledgeable about, I not,
| are surely much more important than indentation.

again, if indentation is so unimportant to you, why do you carp on it?

| And why do you think that I don't want to change my opinions?

because you haven't, in a case where you should have if the rest of what
you say is true and honest.

| I'm very quick in typewriting and can indent by myself.

well, stuff like this helps me conclude you won't change your opinions.
smart people keep looking at ways to improve their ways. being
_satisfied_ with a way of doing something only goes to show that you're
set in your ways, and having a teacher like that is the worst that could
happen to a group of students (apart from being shot, raped, poisoned,
etc, which I'm sure you would have brought up if I didn't exclude it).

| More generally the point of view, that someone who doesn't follow blindly
| any uniformization lacks introspection, should be rather dangerous.

ah, so you think this is about your not following "uniformization", and
of course your have to make it into _blindly_ following, too! geez.

| Indentation is not the problem, I can indent how you want, but I'm
| thinking about intolerance now.

great, but maybe you should start examining your own intolerance first.
maybe you should examine the _actual_ basis for your incredibly stupid
charge of "blindly following uniformization". you're hell-bent on being
different for no good reason, and that has a high price. deal with it.

| I learned everything I need of Emacs and have an .emacs file full of
| little utilities. I don't need the special modes because I type so fast.

people who think they have "learned everything they need" are wrong.

| How can you judge a person you don't know?

because I judge and criticize your actions, not your person.

| Now you are critizing non-seasoned Paul Graham.

silly appeals to authority don't work very well with me. try again.

| Everything ready for the next European War.

I'm really baffled why you want to start a war over this. you're being
criticized for a really stupid position, take it deeply personal, defend
yourself against charge never levied at you, fill your rejoinder with 95%
irrelevant crap, and you think others are at war with you? are you nuts?

but, yeah, you're right, there's nothing the world can ever teach you, so
let's conclude this discussion now.

#:Erik
--
@1999-07-22T00:37:33Z -- pi billion seconds since the turn of the century

Fernando Mato Mira

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to

Josef Eschgfaeller wrote:

> I'm a mathematician by origin and know very well how disturbing

> Give me some time please. I find loop rather complicated and it is a

Learn SERIES. (Appendix in CLtL2) You'll like it.
Leave loops to the Pascal teachers Show the _other_ ways
of doing things. And, more importantly, the evils of:

1. EVAL (instead of APPY)
2. Lists (instead of structures/CLOS)
3. MAPCAR (instead of SERIES)
4. Macros (instead of (declare inline))

The worst thing is not when people is not exposed to Lisp, it's when they are
trivially introduced to it, so that then they try to blindly apply _one_ approach
to everything, which is wrong. Gee, I can write an AntiPattern paper now ;->

Regards,

Fernando Mato Mira

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to

Fernando Mato Mira wrote:

> of doing things. And, more importantly, the evils of:

Gee. A couple I forgot:

5. LOOP (instead of SERIES)
6. SERIES (instead of LOOP)

;->

Isn't that cool? It means Lisp forces you to _think_ ..


Tim Bradshaw

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
Josef Eschgfaeller <e...@felix.unife.it> writes:


> Not so sure. Read Kant or Cicero or Defoe, and you will find quite
> long sentences. It's training. Today young people don't read much
> and think that a sentence of three lines is a long one.
>

Dangerous statement. People who do a lot of news & mail often read a
*lot*. On bad days I probably look at over 100,000 words (400
messages, 50 lines, 5 words a line) a day. And others read a lot more
than me. Of course I'm not reading all that in depth and I don't
*like* reading that much, but I (and many other people) really consume
a lot of written text.

On bad days (or perhaps good days?) I also scan a *lot* of program
source, particularly when chasing bugs in some large system I don't
know that well.

And I'm doing that off a screen with a monospaced (albeit carefully
chosen) font. I have no idea what my rate of consumption of decently
printed text would peak at: for ficton I can certainly do 1000 pages a
day, and again I am nowhere near the extreme. There must be many
people alive today who have read more printed text than there *was* x
hundred years ago, for x a fairly small number.

And it's exactly those people who want their Lisp code indented nicely
-- they've read enough of it to *know* it wins.

--tim

Erik Naggum

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
* Josef Eschgfaeller <e...@felix.unife.it>

| I find this not correct. I did at most propose a different point
| of view, I did not defend it so exaggeratedly, and some of you guys
| attack me in this way and speak of choice and freedom of expression.
|
| Was it not you who wrote me last week "I believe education about Lisp
| is the most important thing we can do at this time, and hope your
| course goes well."?

this is actually quite interesting. not only is this guy posting from
Italy, he's from outer space. I just _knew_ it was a bad idea to send
Lisp into space.

here on earth, we appreciate the opportunity to criticize people's
actions and have this naïve idea that to err is human, which means that
even at the time the action indeed WAS the best thing to do, that quality
might not have been fully established from the available information, or
some vital information might have been missing, or, as might readily
happen, the person was not entirely focused on the particular task at
hand and slipped up. none of these faults are personality disorders in
humans -- it's how we normally think and act and respond to others. part
of the idea is to present views and positions to others and then actually
accept input and more information, even if we think we are right to begin
with. so if you have been unable to convince humans, it might just be
that you have not yet discovered that earthlings are more flawed in this
regard than members of your own alien species.

| You like it to contradict yourself. If you look a little better at my
| earth-shaking 3 lines, you would discover that there is some system.

^^^^^^^^^^^^^

you really are visiting this planet only to destabilize the Lisp world,
aren't you, and quite literally so, too? this is what we humans call a
Freudian slip, named after another nutty guy who might as well have come
from outer space himself, considering HIS weird fixation with particular
properties of human behavior, too.

| I learnt those "> " prefixes on Fidonet - a good school in civilised
| written remote distance communication.

and this just goes to show that we just gotta be more careful what we
send out into space via those satellites. I'll bet they get all confused
about who the aliens are in 3rd Rock from the Sun, too. damn!

| Not so sure. Read Kant or Cicero or Defoe, and you will find quite long
| sentences. It's training. Today young people don't read much and think
| that a sentence of three lines is a long one.

again, Hollywood and mass marketing and television commercials are not
what this planet is about. I'm sorry about sending the wrong signals to
your planet, but here on earth, only a tiny minority of young people are
similar to what the adults think they look like. maybe the people who
make TV shows for dumb kids are also from outer space. it would explain
an awful lot.

| But I know such stuff by myself, don't you believe that? How do you know
| that I never thought about such things?

I sympathize. it must be awful to watch us limited humans react only to
what you write and not what _you_ know is communicated to the entire
galaxy from your telepathic superbrain. we're _ages_ away from actually
developing telepathy, you see, so we limit our reactions to what people
do and say, and respond to what people do and say, not the entirety of
their personality, even though you probably do that on your planet. I
remember Robert A. Heinlein using the work "grok" to describe the merging
of oneself with knowledge of something else.

I hope they don't terminate you just because you have been exposed, but
if you do have to go, could you tell the SETI project what to look for?

enjoy your stay. and I'm glad Lisp is what attracted the aliens, too.

Paolo Amoroso

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to
On Wed, 30 Jun 1999 23:44:06 +0300, Vassil Nikolov <vnik...@poboxes.com>
wrote:

> Similar to what one of the other posters suggested, I wonder if
> there are Lisp students (whether from Ferrara or not) that are
> reading this, and I wonder what they would think of it.

I am a computer science student at the university of Milano, Italy. I took
my latest Lisp class last year. It was my third Scheme class (okay, I
promise that I will join a Lisp Anonymous group to get out of this
addiction :)

My experience shows that students rely on indentation for understanding
Lisp code. I'll tell you an anecdote that shows how much it's important for
them. But first switch your newsreader to its maximum parental control
setting, and make sure there are no kids around :)

At the time of my latest Scheme class, our student lab was equipped with a
couple of HP servers running HP-UX, accessible through about one hundred X
terminals, and a dozen diskless PCs running WFW 3.x. All machines were
connected to a LAN. STk was installed on the Unix systems, 3DScheme (a
commercial educational environment by Schemers, Inc.) on the PCs.

Students were free to decide both the topic of the final programming
project and which Scheme system to use for development. Most of them loved
3DScheme's and DrScheme's automatic indentation and sexp visualization
facilities.

A group of students chose STk for the project. Their "editing cycle" was
rather--how can I say?--"unconventional". They started coding under Unix
with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp
indentation, they weren't used). When the thing became sufficiently messy,
they:

- accessed the files from the Windows PCs via NFS
- loaded them with 3DScheme
- reformatted the code with 3DScheme's integrated editor
- continued editing the freshly formatted files under Unix


Paolo
--
Paolo Amoroso <amo...@mclink.it>

Fernando Mato Mira

unread,
Jul 1, 1999, 3:00:00 AM7/1/99
to

Paolo Amoroso wrote:

> A group of students chose STk for the project. Their "editing cycle" was
> rather--how can I say?--"unconventional". They started coding under Unix
> with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp

The STk documentation mentions the modes available for Emacs, which include
a classic remote-eval facility. Obviously they were not guided properly.

Ralf Muschall

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to
Josef Eschgfaeller wrote:

> Not so sure. Read Kant or Cicero or Defoe, and you will find quite
> long sentences. It's training. Today young people don't read much
> and think that a sentence of three lines is a long one.

Maybe, but OTOH I remember an editor's footnote in
"Kritik der reinen Vernunft" which says that some sentence
could not be reconstructed due to lack of a recognizable
grammatical structure, i.e. unreadable programs tend to
be buggy.

Btw., I recently did an experiment (with VIM on a DOS box):
I changed the color of the parentheses (why the hell does
vim colorize *them* at all?) to an almost (adjustable with
the contrast knob of the monitor) dark grey in scheme.vim.

The readability of the code did almost not suffer (what
I missed was a correctly working autoindent).

Ralf

Marco Antoniotti

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to

Ah! This brings back memories :) ....


amo...@mclink.it (Paolo Amoroso) writes:

> On Wed, 30 Jun 1999 23:44:06 +0300, Vassil Nikolov <vnik...@poboxes.com>
> wrote:
>
> > Similar to what one of the other posters suggested, I wonder if
> > there are Lisp students (whether from Ferrara or not) that are
> > reading this, and I wonder what they would think of it.
>
> I am a computer science student at the university of Milano, Italy. I took
> my latest Lisp class last year. It was my third Scheme class (okay, I
> promise that I will join a Lisp Anonymous group to get out of this
> addiction :)

That's where I got addicted too. Since it looks like I am much older
than you, you have no escape. :)

...

> At the time of my latest Scheme class, our student lab was equipped with a
> couple of HP servers running HP-UX, accessible through about one hundred X
> terminals, and a dozen diskless PCs running WFW 3.x. All machines were
> connected to a LAN. STk was installed on the Unix systems, 3DScheme (a
> commercial educational environment by Schemers, Inc.) on the PCs.
>
> Students were free to decide both the topic of the final programming
> project and which Scheme system to use for development. Most of them loved
> 3DScheme's and DrScheme's automatic indentation and sexp visualization
> facilities.
>

> A group of students chose STk for the project. Their "editing cycle" was
> rather--how can I say?--"unconventional". They started coding under Unix
> with vi (not in Lisp mode) or nedit (if it provides facilities for Lisp

> indentation, they weren't used). When the thing became sufficiently messy,
> they:
>
> - accessed the files from the Windows PCs via NFS
> - loaded them with 3DScheme
> - reformatted the code with 3DScheme's integrated editor
> - continued editing the freshly formatted files under Unix

Most of this story is amusing to me, since I know a couple of the
professor there and always told them to switch to CL. On top of that,
the lack of Emacs culture at Milan is appalling :)

As usual the solution is to install Emacs everywhere and start working
with the real thing :)

Cheers

--
Marco Antoniotti ===========================================
PARADES, Via San Pantaleo 66, I-00186 Rome, ITALY
tel. +39 - 06 68 10 03 17, fax. +39 - 06 68 80 79 26
http://www.parades.rm.cnr.it/~marcoxa

William Deakin

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to

Josef Eschgfaeller wrote:

> Not so sure. Read Kant or Cicero or Defoe, and you will find quite
> long sentences. It's training. Today young people don't read much
> and think that a sentence of three lines is a long one.

Thank you for patronising young people.

I would advice you to read something a bit more upto date like Witgenstein
or something pop like Simenon. They are able to say something without using
long sentences.

I find that reading long obscure multi-line blocks of code tedious. More so
since it is almost always unneccessary.

Although I don't have the capacity to consume the scary amount of text
that Tim can (doesn't it hurt?), there are times where I too have to read
alot of code. And it would make my and alot of other programmers lives alot
easier if people would try and KEEP IT SIMPLE. There are very difficult
idears and problems to be tackled in this world (thats what makes it
interesting) but obscuring these problems by making things more complicated
than they need is something that should be abhorred.

Sorry about the rant.

Cheers,

Will


Fernando Mato Mira

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to
William Deakin wrote:

> Josef Eschgfaeller wrote:
>
> > Not so sure. Read Kant or Cicero or Defoe, and you will find quite

> I would advice you to read something a bit more upto date like Witgenstein

Yo, guys! Don't make me feel like a dummy! I still have 2000 pages of the
Norton Shakespeare to go! ;-)

OK. Time for Vassil to talk about Dostoievsky or something like that ;-)

Rolf-Thomas Happe

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to
Ralf Muschall writes:
> Josef Eschgfaeller wrote:
> > Not so sure. Read Kant or Cicero or Defoe, and you will find quite
[...]

> Maybe, but OTOH I remember an editor's footnote in
> "Kritik der reinen Vernunft" which says that some sentence
> could not be reconstructed due to lack of a recognizable
> grammatical structure, i.e. unreadable programs tend to
> be buggy.

Kant's late & great books are landmarks of academic obfuscation.
His stylistic barbarisms make reading the "critiques" about as
pleasant as chewing leather. (With the exception of some passages.)

rthappe

William Deakin

unread,
Jul 2, 1999, 3:00:00 AM7/2/99
to
Rolf-Thomas Happe wrote:

eschew obfuscation ;-)
--will


Reini Urban

unread,
Jul 4, 1999, 3:00:00 AM7/4/99
to
Fernando Mato Mira <mato...@iname.com> wrote:
>Learn SERIES. (Appendix in CLtL2) You'll like it.
>Leave loops to the Pascal teachers. Show the _other_ ways

>of doing things. And, more importantly, the evils of:
>3. MAPCAR (instead of SERIES)

What would be the short anti-pattern of MAPCAR?
(compared to the advantages of series, which i don't know that good)

I do see that mapping with lazy-evaluated lists has some serious
advantages over the simple mapping, but i wouldn't try to explain that
in a beginners course, only as far as SICP goes (lazy evaluation only),
but not into the complete SERIES package.

--
Reini

0 new messages