From: Austin Ziegler Date: 2002-09-08T13:46:03+09:00 Subject: Re: Larry Wall's comments on Ruby On Sun, 8 Sep 2002 12:50:25 +0900, Hal E. Fulton wrote: I wrote, paraphrasing something from the /. Larry Wall interview: >> (as Larry said, a paragraph should have a beginning, a middle, >> and an end -- so should blocks). > An interesting comment, since a paragraph doesn't have a specific > end token, but is delimited only by formatting. :) This is true, but only to a degree. If one is using block format (modified or otherwise), then it is more proper to say that a paragraph has no beginning token, but it has a clear end token (typically a bit of extra space between paragraphs, along with a ragged edge final line). If one is using "traditional" format, then it is proper to say that a paragraph doesn't have an ending mark, but does have a beginning mark (the indentation of the first line). However, what Larry was referring to is that in good analytical writing, one writes paragraphs such that there is a beginning to the argument, the argument itself, and a close to the argument addressed by the paragraph. I personally think that Ruby's approach (which is mildly reminiscent of Pascal and Ada on this matter) is cleaner than either Python's (which is reminiscent of Fortran and COBOL) or Perl's (which is also that of C/C++/Java/etc.) in that the block is cleanly delineated by meaningful tokens instead of symbols or spaces. def fun(foo) ... end to me seems to be much cleaner than fun(foo): ... or sub fun(foo) { ... } even though they ultimately mean the same thing. From a computer's perspective, it's far easier to track scope with single-character symbols (and it helps with editor paren-matching, too); IMO, from a human's perspective it's far easier to track scope with meaningful tokens than merely by space (especially since a single space error can cause compile problems). Of course, judicious use of formatting can make all of the things easier to read for the human. -austin -- Austin Ziegler, austin@halostatue.ca on 2002.09.08 at 00.34.23