[comp.os.cpm] Modula2

bobc@hrcca.UUCP (04/21/87)

Do you think Modula-2 will be a successful language in the Micro
world?  I recently purchased Turbo Modula-2 from Echelon, and have
mixed feelings about the language.  Although I don't think there is
any question that straight M2 is a better language than straight
Pascal, most M2 enhancements were already incorporated into Turbo
Pascal (and other successful implementations of Pascal I believe).
Indeed, I think that Wirth liked certain features of Turbo Pascal and
'C' language, borrowed them to rewrite Pascal, and named the result
Modula-2.

On the negative aspects of M2:

 1.  The explicit IMPORT of every identifier that I want to
     use drives me crazy.  It wouldn't be so bad if there
     were only 2 or 3 modules to import from, but there are
     so many!! I'll never complain about
     #include <stdio.h> again.

 2.  The lack of a general purpose output procedure (e.g.:
     Pascal's WRITE/WRITELN or C's printf() ) makes output
     routines a nightmare.  Using 4-5 procedure calls to
     write 1 line to the console is a pain.

 3.  Linking in entire modules rather than individual
     procedures (which I took the bother of identifying
     with IMPORTs) leads to large object code. This may
     just be a problem with Borland's linker though and not
     inherent to the language.

I would be interested in the comments that you or any of your
associates may have on this matter.

          Sincerely,

          Bob Kemp

jtr485@umich.UUCP (Johnathan Tainter) (04/24/87)

In article <KPETERSEN.12296145744.BABYL@SIMTEL20.ARPA>, bobc@hrcca.UUCP writes:
> Do you think Modula-2 will be a successful language in the Micro
> world?  I recently purchased Turbo Modula-2 from Echelon, and have
> mixed feelings about the language.  Although I don't think there is
> any question that straight M2 is a better language than straight
> Pascal, most M2 enhancements were already incorporated into Turbo
> Pascal (and other successful implementations of Pascal I believe).
> Indeed, I think that Wirth liked certain features of Turbo Pascal and
> 'C' language, borrowed them to rewrite Pascal, and named the result
> Modula-2.
Actually, Turbo Pascal did not innovate anything.  All the good stuff was
lifted from UCSD Pascal (with some massaging to make it fit as native code
on the z80 and 8088's; for those what don'know UCSD Pascal is compiled to a
stack machine language called p-code then interpreted by hardware specific
interpreters).  However, UCSD didn't really innovate much either.  They just
collected a number of the academically favored language facilities and added
them to pascal to get a real language.  Meanwhile, over in Europe, Wirth was
developing Modula (NOT Modula-2 yet) which incorporated many of these same
ideas and some that had given rise to the C programming language.  There were
problems with Modula (just as there had been with pascal).   However the world
was no longer starving for a programming language which was both concise
and powerful, so Modula did not get heavily adopted.  This allowed Wirth to
come along with another language, Modula-2, before anyone took Modula to heart.
Modula-2 changed substitute new broken constructs for old but made some
progress also. (Personal commentary, I HATE UPPERCASE RESERVED WORDS!  They
heavily detract from the readability of code.)
> On the negative aspects of M2:
>  1.  The explicit IMPORT of every identifier that I want to
>      use drives me crazy.  It wouldn't be so bad if there
>      were only 2 or 3 modules to import from, but there are
>      so many!! I'll never complain about
>      #include <stdio.h> again.
Some M2 compilers provide a source include directive so you can do this.
>  2.  The lack of a general purpose output procedure (e.g.:
>      Pascal's WRITE/WRITELN or C's printf() ) makes output
>      routines a nightmare.  Using 4-5 procedure calls to
>      write 1 line to the console is a pain.
This is a consequence of not wanting special predefined procedures or functions
nor allowing variable parameter lists.  A clean strongly typed language is
going to have this kind of problem.
>  3.  Linking in entire modules rather than individual
>      procedures (which I took the bother of identifying
>      with IMPORTs) leads to large object code. This may
>      just be a problem with Borland's linker though and not
>      inherent to the language.
Since there can be hidden objects/functions inside of modules (which the
procedures you want are dependent on) it demands a very sophisticated linker
and dependency information to properly support selective linkage.  You are
not likely to find this in an inexpensive system.
>           Bob Kemp
--j.a.tainter