[M3devel] 5.8.6 LINUXLIBC6 breakage, kernel 2.6.23, glibc-2.6-4 message dated "Fri, 22 Apr 2011 06:29:08 -0000."

Mika Nystrom mika at async.caltech.edu
Fri Apr 22 18:25:36 CEST 2011


Jay K writes:
>--_f508cc8d-d8d9-47ec-89e0-fcca258f1fc1_
>Content-Type: text/plain; charset="Windows-1252"
>Content-Transfer-Encoding: quoted-printable
>
>
> > As for the use of C vs. Modula-3=2C it obvious that you and I have a dif=
>ference of opinion.
>Exchanging Modula-3 for C has tremendously improved the maintainability=2C =
>portability=2C correctness=2C size-in-source=2C and correctness-by-inspecti=
>on of the system.
>Debuggability has improved as well=2C though hopefully that will "even out"=
> -- hopefully Modula-3 code will become just as debuggable with stock gdb=
>=2C and on systems without stabs support.
>
> - Jay

In theory you are right.  In practice, almost ten years ago now others
at Caltech and I started to try to switch from PM3 to CM3 since it
was obvious it was CM3 that was going to be maintained in future.
The process still isn't over, as my frequent postings to this list bear
witness to.

My perspective is really very simple.  I've been using Modula-3 as
a tool to solve almost all programming problems I've had since about
1999, when I gave up C due to my inability to write a correct C program.
I'm a user of the system and only reluctantly a peripheral maintainer.
A few of my observations as a user are the following.

-- Threads work perfectly in PM3.  In CM3 it's very much ???

-- It took five years to get TEXT working acceptably (as in, no stack
   overflows!) in CM3.  Now seems more or less OK, but Text.Hash is
   still possibly an order of magnitude slower than .

-- I have no debugger that works for CM3.  m3gdb is *very useful* for
   the old PM3.  No it doesn't work perfectly but you can set breakpoints
   and print variables but that's what at least I use a debugger for.

-- CM3 has some weird performance issues; namely ISTYPE and TYPECASE
   are very slow (like orders of magnitude slower than for PM3).  I
   looked at it once and realized that someone had walked all over RT0
   with very heavy feet.  Not a pretty sight, on my (long) to-do list.

-- m3tk is broken owing to the introduction of LONGINT.  This is not a
   peripheral issue when a lot of the code you produce is generated 
   from other code (a process that improves programming productivity
   manyfold---when it works).  As with all the other items on this
   list, m3tk has no trouble parsing the Modula-3 accepted by PM3.

-- other LONGINT problems...

-- It's taken me literally months of struggle to get my application
   working with CM3.  The old PM3-compiled one traded half a billion
   dollars worth of stocks last year without a single glitch.  The
   CM3-compiled version has been hanging every day except the last
   (so hopefully it's OK now...???)  I'm literally losing sleep over
   this because it's running during European business hours.  Only
   reason I got sleep last night is because it's Good Friday.

Now I'm not blaming anyone in particular for these problems.  In fact I
think they mostly come from things that were done at Critical Mass, Inc.
However there is a common thread.  Just about all the issues I've run into
have had *something* to do with someone's attempt to make Modula-3 more
of "all things to all people" than it was.  Its main strength was and
is that it is a programming language with almost equal expressibility
(both at the machine and data-structure level) as C++ with a *fifty* page
definition in reasonably clear English---that's just a few pages longer
than R5RS and in a bigger font to boot.  Portability, library support,
multicore use, comprehensive base datatypes, ... all those things are
nice but not part of the "core mission" of the language.

It makes sense to try to expand out and be all things to all people if you
have the budget and development team for it.  As it is now, all the
improvements have done is threaten the survival of the programming
language for any use whatsoever.

Here's an experiment anyone on this list can try.  Find a friend who
doesn't use Modula-3 but is a computer programmer, software engineer,
etc.  Ask him to install CM3 and configure it so that the thread testing
program works.  See how long it takes before he gives up.  

     Mika




More information about the M3devel mailing list