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