[comp.lang.modula2] Oh My! Modula-2 Book

Mark.Bacas@p0.f16.n396.z1.fidonet.org (Mark Bacas) (03/11/91)

Has anyone bought or looked at this book.  I'm planning on buying it and was wondering if anyone has any first hand knowledge about it.  Any help will be greatly appreciatted.  

 .\\ark



--  
uucp: uunet!m2xenix!puddle!396!16.0!Mark.Bacas
Internet: Mark.Bacas@p0.f16.n396.z1.fidonet.org

pattis@cs.washington.edu (Richard Pattis) (03/12/91)

Doug Cooper rewrote his popular Oh! Pascal! book, changing lots of technical
details (to correspond to Modula-2) and changing lots of philosophical and
pedagogical material too.  It is NOT a mere translation of Oh! Pascal!

Although I don't know the details, there is a very cheap way to get the
Stony Brook QuickMod compiler with this book. It also comes with a diskette
containing all sorts of interesting data files for use in programs.

Ohio State has adopted this text for its introductory programming course.

Rich Pattis

("cheap" means for a few dollars more; no where near $50).

zander@sumax.seattleu.edu (Carol Zander) (03/14/91)

I'm currently teaching the standard beginning sequence of programming at
Seattle University using Oh My! Modula-2!  We're at the end of the
second course.  In the evaluations of the first course, the majority of
students strongly disliked the book and I tend to agree with them.
The book does not develop smoothly.  The examples are poor -- some just
stupid and some too complicated.  He uses all non-standard libraries.

Overall, the book isn't terrible, but it's not good either.  I'm looking
for a different text for next year.

------------------------------------------------------------------------
Carol Zander           (206) 296-5508   |   Computer Sci./Software Eng.
Internet:         zander@seattleu.edu   |   Seattle University 
UUCP: ...!uw-beaver!sumax.uucp!zander   |   Seattle, WA  98122
------------------------------------------------------------------------

stucki@amygdala.cis.ohio-state.edu (David J Stucki) (03/15/91)

   From: zander@sumax.seattleu.edu (Carol Zander)
   Organization: Seattle University, Seattle WA

   I'm currently teaching the standard beginning sequence of programming at
   Seattle University using Oh My! Modula-2!  We're at the end of the
   second course.  In the evaluations of the first course, the majority of
   students strongly disliked the book and I tend to agree with them.
   The book does not develop smoothly.  The examples are poor -- some just
   stupid and some too complicated.  He uses all non-standard libraries.

   Overall, the book isn't terrible, but it's not good either.  I'm looking
   for a different text for next year.

	We are using Cooper's book here at Ohio State for the introductory
courses for cis majors and are quite happy with it.  This is the first
quarter   we  have used  it  and also  the first  quarter  that I have
received positive comments on the required text from students.  I have
not seen a Modula-2 text that I would rather teach out of thus far.

	As far as the examples, they appear to have been chosen to support
Cooper's philosophy of software design and engineering, which incorporates
top-down design and object-oriented design.

	The  use of non-standard libraries should  not  be a disadvantage,
since the  "standard" ones are  rarely implemented correct  wrt Wirth.
Cooper's IO module is much cleaner than either the InOut provided by 
Metrowerks (for the MAC) or Sun.

dave...
--
David J Stucki	   /\ ~~ /\  ~~	 /\  ~~	 /\  ~~	c/o Dept. Computer and 
537 Harley Dr. #6 /  \  /  \ 	/  \ 	/  \   	/   Information Science
Columbus, OH  43202   \/    \  /    \  /    \  /    2036 Neil Ave.
stucki@cis.ohio-state.edu ~  \/  ~~  \/	 ~~  \/	    Columbus, OH 43210

gkt@iitmax.iit.edu (George Thiruvathukal) (03/15/91)

In article <STUCKI.91Mar14120723@amygdala.cis.ohio-state.edu>, stucki@amygdala.cis.ohio-state.edu (David J Stucki) writes:
> 	The  use of non-standard libraries should  not  be a disadvantage,
> since the  "standard" ones are  rarely implemented correct  wrt Wirth.
> Cooper's IO module is much cleaner than either the InOut provided by 
> Metrowerks (for the MAC) or Sun.

I agree with the principle stated above; however, non-standard libraries ought
to have a standard implementation.  Without a standard set of libraries or,
minimally, a library which is implemented in the standard language, how can
any degree of portability between implementations be achieved?  It cannot be
achieved.

It is somewhat regrettable that Niklaus Wirth left the issue of libraries so
open-ended that programmers cannot rely upon a minimal set of libraries from
implementation to implementation.  Even in the C language, one can count on
input/output functions.  As the above excerpt suggests, one should not be able
to count on input/output (something so fundamental) being well-implemented by
compiler vendors.  Would it not make some sense that one ought to question the
abilities of a compiler writer who cannot design and implement simple libraries
to accompany his/her compiler?  Further, if the standard libaries cannot be 
implemented correctly, how on earth is a variation on the same theme to be
implemented?
-- 
George Thiruvathukal

Laboratory for Parallel Computing and Languages
Illinois Institute of Technology
Chicago

vsnyder@jato.jpl.nasa.gov (Van Snyder) (03/15/91)

In article <1991Mar14.191513.20184@iitmax.iit.edu> gkt@iitmax.iit.edu (George Thiruvathukal) writes:
>In article <STUCKI.91Mar14120723@amygdala.cis.ohio-state.edu>, stucki@amygdala.cis.ohio-state.edu (David J Stucki) writes:
>> 	The  use of non-standard libraries should  not  be a disadvantage,
>> since the  "standard" ones are  rarely implemented correct  wrt Wirth.
>> Cooper's IO module is much cleaner than either the InOut provided by 
>> Metrowerks (for the MAC) or Sun.
>
>I agree with the principle stated above; however, non-standard libraries ought
>to have a standard implementation.  Without a standard set of libraries or,
>minimally, a library which is implemented in the standard language, how can
>any degree of portability between implementations be achieved?  It cannot be
>achieved.
>
>It is somewhat regrettable that Niklaus Wirth left the issue of libraries so
>open-ended that programmers cannot rely upon a minimal set of libraries from
>implementation to implementation.  Even in the C language, one can count on
>input/output functions.  As the above excerpt suggests, one should not be able
>to count on input/output (something so fundamental) being well-implemented by
>compiler vendors.  Would it not make some sense that one ought to question the
>abilities of a compiler writer who cannot design and implement simple libraries
>to accompany his/her compiler?  Further, if the standard libaries cannot be 
>implemented correctly, how on earth is a variation on the same theme to be
>implemented?
>-- 
>George Thiruvathukal
>
>Laboratory for Parallel Computing and Languages
>Illinois Institute of Technology
>Chicago
Is it any wonder that Fortran and Cobol don't go away?  Back in the "dark ages"
I/O was an integral, standardized, part of the language.  In Ada, I/O (and
tasking) are disguised to look like procedures, but at least they're standard-
ized.


-- 
vsnyder@jato.Jpl.Nasa.Gov
ames!elroy!jato!vsnyder
vsnyder@jato.uucp

aubrey@ccwf.cc.utexas.edu (Aubrey McIntosh) (03/16/91)

In article <1991Mar14.235248.24540@jato.jpl.nasa.gov> vsnyder@jato.Jpl.Nasa.Gov (Van Snyder) writes:
>In article <1991Mar14.191513.20184@iitmax.iit.edu> gkt@iitmax.iit.edu (George Thiruvathukal) writes:
>>
>>It is somewhat regrettable that Niklaus Wirth left the issue of libraries so
>>open-ended that programmers cannot rely upon a minimal set of libraries from
>>implementation to implementation.  Even in the C language, one can count on
>

Actually, an alternate interpretation of the PIM book is that he not only
made recommendations, he gave examples.  Additionally, the Source Code was
available.  I tend to believe that some vendors wanted to produce a mature
product, and based their products on those libraries.  I can clearly port
code between very different machines, including IBM-PC, the Mac, and VAXes
using these products.

Other vendors suffer from sole source trapping in their marketing plans.
in those systems, I cannot move code between vendors on the same CPU
platform.  (Of course, some folks have had trouble between versions
1.04, 1.12, and 2.0 by the same vendor)

But I can buy the source to the libraries, and if they are well written,
port them into the alternate compiler's environment.  Sometimes there are
booby traps there as well.  I don't want to pick on a certain vendor without
having code in front of me, but I have seen very non-standard CODE procedures
in several library modules, and sometimes I felt that was gratuitous to 
prevent complete freedom of usage of the source.

If there was a standard, and "Primo Donya Software" released a non-compliant
version on "Spiffo Cpu" before anyone else, then we'd be right where we are
now without a standard.  What then?  Well, same as now. Don't buy a product
that prohibits second sourcing, portability, or which encourages use of
non-standard extensions.  And you can write clean Modula2 no matter what
the vendor offers as bells and whistles.

If this is a REAL nuisance in your mind, then invert that to a potential income
advantage:  Write a correct and portable library, and methodically place it on
each available platform/vendor position.  Either you should get rich, or 
you shouldn't be bitchin.

I'm certain I can produce .OBJ files in the MS-DOS world that will link with
FST, JPI, and Logitech 3.<any> all at the same time.  I've been deep into the
details, and I seriously doubt that I'm the only one who has.  I'm certain
I can produce code that is clean Modula2 or Clean Modula-2 .DEF and .ASM/.OBJ
pairs to do this, so that it ports between vendors.  With minimal thought,
this would port to radically different platforms.  The C community writes
code that fixes problems, then releases it.  If there is a need for a
'Terminal' or 'FileNameandOptions' module on a SPARC, then it could be written
and distributed, just as mail, rn, uudecode, and most other utilities are.
None of this is language or library deficiency.   

I bought a source license to one of the early ETH compilers, and partially 
ported
it as a cross compiler on an IBM-PC using Logitech.  This involves enough
machine differences to make me believe that Modula-2, when well written, is
inherently portable.


-- 
Aubrey McIntosh  /  Chemistry  /  University of Texas  /  Austin, TX 78712
..another Gaelic learner...

news@m2xenix.psg.com (Randy Bush) (03/16/91)

> It is somewhat regrettable that Niklaus Wirth left the issue of libraries so
> open-ended that programmers cannot rely upon a minimal set of libraries from
> implementation to implementation.

I do not mean to put words into his mouth, and thus the following should be
taken as my insufficiently humble opinion only.

Professor Wirth often stresses that what one leaves out of a language is often
as or more important than what one puts in.  Somewhere, I also think he said
that one should only include what one knows the [one] simple correct way of
doing.

Thus, Modula-2, the language, omits that which is contentious, unclear, or has
multiple [good] solutions.  As Modula-2 provides for a library, what better
place to put all those things?

And, as someone who has done a few libraries, and watched the standardization
process's attemtps at libraries, I assure you that they're contentios, unclear,
and admit of many solutions (but few good ones).

At the last ISO Modula-2 meeting, I suggested that

   FROM SYSTEM (* or whatever *) IMPORT printf, ...;

would be far better, was already a standard, is quite easy to implement, and
will be more acceptable to the mass of users than anything the committee has
come up with to date.  Although few took me seriously (well, we were in the
pub), I fear that it is the sad truth.
-- 
Randy Bush  / news@psg.com  / ..!uunet!m2xenix!news 

Jon.Guthrie@p25.f506.n106.z1.fidonet.org (Jon Guthrie) (03/21/91)

 On a message of 18-Mar-91, Aubrey McIntosh Said:

> But I can buy the source to the libraries, and if they are well
> written, port them into the alternate compiler's environment.

Yes, that IS possible.  Now try to ship production code with those
ported libraries imbedded in them.  If you ever get over the legal
difficulties, get back to me and I'll say 'I told you so.'

> If there was a standard, and "Primo Donya Software" released a
> non-compliant version on "Spiffo Cpu" before anyone else, then we'd
> be right where we are now without a standard.

No, that isn't necessarily true.  (I think you're probably trying to
draw an analogy with Turbo Pascal.)  If there WERE a standard, there
would be strong advantages in following it.  (Which is why most
C compiler vendors have already moved to ANSI C and are moving to C++
despite other alternatives that are every bit as good.)

> If this is a REAL nuisance in your mind, then invert that to a
> potential income advantage:  Write a correct and portable library,
> and methodically place it on each available platform/vendor
> position.  Either you should get rich, or you shouldn't be bitchin.

You speak as if that were child's play to get compiler vendors to
accept outside code.  You also speak as if most people out there are
using Modula-2.  Might I remind you that an awful lot more work is
done in C (which has had a well-defined I/O and support library almost
since it's creation) than in M-2 and the lack of a library standard is
one of the primary reasons.

The REASON it's a difficulty because you are forced to learn another
way of doing things every time you get a new compiler.  Logitech
expertise doesn't translate into Stonybrook which doesn't translate
into TopSpeed which doesn't translate into FST.  You can't say "I'm a
Modula-2 programmer" without adding some kind of statement about which
compiler you're using.

While I can appreciate Randy Bush's point about there being no clearly
superior way to define an I/O library, I must insist that C is an
example that shows how powerful even a mediocre (and often actively
bad) library I/O standard can be when it comes to portability.



--  
uucp: uunet!m2xenix!puddle!106!506.25!Jon.Guthrie
Internet: Jon.Guthrie@p25.f506.n106.z1.fidonet.org