Correct Behaviour? R.I.P.
[1/5] from: joel:neely:fedex at: 5-Jul-2001 17:20
Hi, again, Jeff,
Jeff Kreis wrote:
> > NASA does, in fact, "count down" to zero. That's the point
> > at which lauch occurs.
>
> They say "lift off" not zero, aye?
>
> "3 .. 2 .. 1 .. lift off!"
>
Right. Because they're naming the interesting thing that
happens *at* time t = 0 ...
> not
> "3 .. 2.. 1... 0... lift off!"
>
... because that would place the time of "lift off" *at*
t = +1 (one second too late).
> Rock and Roll is definitely one base indexed.
>
I find the present state of this thread highly ironic.
I don't believe I've ever denied that there are some applications
which are naturally and simply one-based (and if I have done so,
or left that impression, I categorically retract and apologize).
There certainly are.
But there are *also* many (non-"system") situations for which
zero is a natural basis. If a particular language does not
support that capability, it makes writing programs for those
situations more complicated (or at least, cluttered) than would
be the case otherwise. I offered several examples of such cases
without receiving any meaningful replise. I'm still interested
in ideas anyone may have to offer regarding effective work-
arounds in such situations.
We should admit that "array" is a low-level concept. Higher-
level data structures allow the programmer to connect "keys"
(of any type) with their associated values (also of any type).
The main reasons we programmers attach special significance
to arrays are:
1) Historical -- low-level languages came first, before we
knew how to do better, and
2) Performance -- a consecutive range of integers (regardless
of base point) can be used to perform "direct access" to
a specified region of memory, requiring less time than
searching a collection of keys of arbitrary data type.
Since the choice of base point is actually arbitrary, it seems
fair to discuss:
* the relative merits and pros/cons of the choice,
* how to work around the constraints imposed by any
particular choice, and
* whether one alternative has more flexibility, and offers
simpler expressions for a wide range of tasks, than some
of the others.
Other reasons to ask "Why...?" are:
* there are sometimes reasons for design choices that are
not obvious on the surface, and
* sometimes understanding the reason for a design decision
helps one use a feature more effectively.
Learning a new skill means that one actually has to be willing
to learn something one does not already know. This especially
applies to programming, which requires a degree of precision not
commonly required in other human activities. REBOL, like any other
programming language, contains concepts and distinctions that are
outside the everyday thought habits of John Q. Public.
John Q. thinks that computers can do arithmetic. When he
evaluates 5280 * 12 to tell his inquisitive daughter how
many inches are in a mile, it obligingly tells him 63360
as an answer. But when he tries to evaluate the expression
186282 * 60 * 60 * 24 * 365 to tell the same child how many
miles are in a light year, he gets
** Math Error: Math or number overflow
** Where: halt-view
** Near: 186282 * 60 * 60
Poor John Q. is forced to confront the difference between
integers and floating-point numbers, which he probably
never had to think about before.
John Q. has been typing since high school, and thinks that
an uppercase "A" is just an uppercase "A". Then he hits
upon the fact that #"A" = "A" is false!
Poor John Q. is forced to confront the difference between
characters and strings, which he probably never had to
think about before.
And the list goes on and on and on ...
Therefore, to dismiss a point of view out-of-hand on the grounds
that it is different from the everyday experience of "the rest
of the world" really begins to strain credibility.
Jeff, I believe I've said many times that I have considerable
respect for all of you at RT and for your accomplishments. Even
though I may not understand all of the design decisions made in
REBOL (or may disagree with some of the ones I understand ;-)
I think it is a fine piece of work, and I hope to see it do well.
But if this thread has gotten to the point where we're dealing in
highly distorted exaggerations, put-down references to "academic
correctness" or "those of the REDESIGN REBOL mindset", and appeals
to rock and roll as replacements for sincere (and vigorous and
humorous, too!) discussion of how to write better code in the
real world, then I have to say that it's passed the point of
diminishing returns for me.
However, I'm still quite interested in your suggestions for how
to accumulate and report character frequencies in a data file!
Thanks for all the fish!
-jn-
--
___________________________________________________________________
The purpose of computing is insight, not numbers!
- R. W. Hamming
joel'dot'neely'at'fedex'dot'com
[2/5] from: petr:krenzelok:trz:cz at: 6-Jul-2001 1:54
Hi Jeff,
strange I am replying to Joel's email and writing "Hi Jeff"? Correct -
that's because I would like to know answer to below.
I have really bad suspicious, that once ppl try to resolve some situation,
RT is silent ... and silent ... and silent, and we can here some deep
language design issues explanations only sporadically. We saw it already
several times here - highly academic discussion of Joel, Ladislav, eariler
Elan, and others, long messages, endless reasoning, while maybe one
single/simple email of Carl or someone from RT would solve all of the mess
here.
It's our nature which leads us to temptation to find out how do things work
under the hood and once ppl find some kind of inconsistence, they want to
know if it is bug, intended behavior, but what we can see very often is - RT
is silent or even doesn't reply to feedback issues (except letting bot to
assign a feedback ticket number :-) ...
I just hope you don't mind I dared to express what others probably think but
are too polite to express here :-)
> John Q. thinks that computers can do arithmetic. When he
> evaluates 5280 * 12 to tell his inquisitive daughter how
<<quoted lines omitted: 23>>
> REBOL (or may disagree with some of the ones I understand ;-)
> I think it is a fine piece of work, and I hope to see it do well.
The same here. Telling something is wrong should not be regarded being an
attack, as it is not :-)
Cheers,
-pekr-
[3/5] from: jeff:rebol at: 5-Jul-2001 17:12
Howdy howdy, Joel:
> But if this thread has gotten to the point where we're
> dealing in highly distorted exaggerations, put-down
<<quoted lines omitted: 4>>
> then I have to say that it's passed the point of
> diminishing returns for me.
My exaggerations are never distorted. :-) And my bringing
up Rock and Roll was not a replacement for vigorous and
humourous discussion concerning the 0/1 question, but was,
in fact, a completely sincere, vigorous, and humorous
contribution to that discussion! Guess my sense of humor
is 1 base indexed, or something. :-)
Also, I didn't know we were talking about "writing better
code". I was under the impression we were debating the
relative merits of the design decision behind REBOL being
one base indexed, as opposed to (what I think you're
arguing) the more "superior" zero base indexing.
What I've tried to do, other than provide amusement, is to
present my understanding of the justification behind
REBOL's one-base indexing -- that it has a lot to do with
conceptual portability, but maybe I've been to round about
in getting there? Supporting this, I've argued that
zero-based indexing is less intuitive for most (but
certainly not all) worldly applications.
We can judge REBOL design based on pure mathematics, ease
of use, aesthetics, conciseness, consistency, many
different criteria.
If the goal of REBOL was "academic correctness", then it
may be appropriate to judge it based on correctness, the
ease with which you can prove functions, etc. If the goal
of REBOL is to help people work with direct memory and
arrays, then many of these considerations wrt to zero based
indexing might be more important.
The "goals of REBOL" are hard to enumerate (at least I'm
not especially good at it), but I can say that one-based
indexing is as fundamental to the "goals of REBOL" as
anything else, and it is from its goals that REBOL should
be judged. Maybe the problem here is in the articulation
of the "goals of REBOL".
Don't know what to say-- that's how I view my contribution
to our discussion. The discussion has been fun, and I hope
it was useful for someone reading along, if it has not be
for you, Mr. Joel.
Cheers!
-jeff
[4/5] from: jeff:rebol at: 5-Jul-2001 17:29
Howdy, Petr:
> ... We saw it already several times here - highly academic
> discussion of Joel, Ladislav, eariler Elan, and others, long
> messages, endless reasoning, while maybe one single/simple
> email of Carl or someone from RT would solve all of the mess
> here.
My experience has been that it's not so easy to dip into
some of the deeper academic discussions around here because
you may be sucked into the thread for a loooong time and you
will end up neglecting work and everyone will just be
frustrated.
I try to provide good answers when I can. I'm not always
right. I try to avoid making things up, if I can help
it. (-:
I know the rest of the crew does the same and is often
better with their accuracy than myself. Busyness is usually
to blame for any lack of communication, and too much
communication to blame for lack of busyness.. ;-)
-jeff
[5/5] from: petr::krenzelok::trz::cz at: 6-Jul-2001 2:53
> Howdy, Petr:
> > ... We saw it already several times here - highly academic
<<quoted lines omitted: 12>>
> I know the rest of the crew does the same and is often
> better with their accuracy than myself. Busyness is usually
replace find above-line "B" "y" "i" :-)
> to blame for any lack of communication, and too much
> communication to blame for lack of busyness.. ;-)
maybe you should install bot to a) answer questions on ml b) code rebol
products, allowing yoy a) ;-)
Anyway, nearly 3 am here, time to go to bed :-)
Cheers,
-pekr-
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted