[comp.lang.modula2] intro to the following PIM diffs

neitzel@infbs.UUCP (Martin Neitzel) (06/24/89)

		"As any other language Modula-2 undergoes
		a constant development.  Therefore, the
		3rd edition of this book does not only
		contain formal corrections of the 2nd
		edition but also modifications of the
		language Modula-2."

					[from the backside cover of a
					well known book]

		"Oh no, not again!"
					[me]

The next three messages will contain diffs of the PIM reference parts,
editions 2, 3, and 4.  In the following, "PIMn" means "Programming in
Modula-2, n-th edition".  Specifically, "PIM2" refers to the second
edition only.

Thanks go to Udo Hafermann and Erik Schoenfelder for helping out.  It
took three hours to read the three reports in parallel and clone PIM2
and PIM4 from the PIM3 I had typed in already.  It took additional
four hours to bring them into the shape that provided context diffs
that are concise and (we hope :-) clear.

Before you investigate the fruits of all this labour, some
introductory remarks and hints.

* The primary goal of all this work was to provide us (and you) with a
  clear overview what has definitely changed in PIM4.  The copyright
  notes in the books make it quite clear that we may not broadcast the
  entire online versions of the reports to comp.lang.modula2;
  nevertheless, the context diffs are legal (and probably more useful
  to you, too).

* The two first diffs (PIM2->3, PIM3->4) have the usual 3 lines of
  context.  This is definitely enough to locate the places in PIM2 and
  PIM3, respectively.  I made also a diff PIM2->4, but I think it does
  not provide significantly more useful information in addition to the
  first diffs -- so I do not post this one.  Instead, I consider a (very
  compact) diff3 of all three reports worth to be posted.  It provides a
  very terse but complete overview over the changes in Modula2.  In my
  opinion: *THE* best fun listing a Mod2-compiler implementor can ever
  have.

* I am very confident now that our online versions now are verbatim
  copies of the reports.  Including the original typos and questionable
  wordings here and there.  You will surely notice that in PIM4 the
  first paragraph of "8.2. Operators" is garbled, starting with the
  `word' "prcits".  This has to be so, believe me.  A passage from the
  previous paragraph gets repeated at that point, obviously an editing
  error of N.Wirth.  (No one will be able to say for sure what is
  missing at this place...)

* The online version necessarily has to make some compromises with
  respect to the typographic layout of the originals.  Changes in the
  layout in PIM[234] have not been reflected in these diffs.  They
  have no influence on the contents anyway.  Basically, all paragraphs
  have line breaks suited (a) to fill the usual screen width properly
  and (b) to produce clear change marks in the diffs.  [An italic
  "foo" of the printed reports is written as "`foo'" in the online
  versions.]

* It is interesting to note that towards the end, PIM4 looks more like
  PIM2 than PIM3.  That is, there are places were PIM2 and PIM4 agree
  and PIM3 "broke out".  For example, opaque types may be subranges
  again.  If you are teaching a course in programming language design,
  the development PIM2 -> PIM3 -> PIM4 is definitely an interesting (and
  "funny") case study.

* In PIM4, Wirth seems to be uncertain about constant expressions
  again.  While the report and the railway diagrams in appendix A4
  don't differ syntacticly between expressions and constant expressions,
  the EBNF in appendix A1 introduces a separate subtree again to
  avoid call expressions.  BTW:  The German (re-?)translation of PIM3
  (approved by N.Wirth) used the restricted form of constExpr's
  throughout the entire report, contrary to the official English
  original.  (Maybe that's what they are meaning with "constant
  development" in the cover text :-)

* Any bets that there will be a 5th edition?  (Ooops: "5th corrected",
  of course...)  Hey, the show MUST go on, folks! :-) :-) :-( :-)

							Martin