[comp.sys.apollo] Apollo Pascal

jwb@LINDENTHAL.CAE.RI.CMU.EDU (John Baugh) (05/04/89)

[I recently posted a similar request to comp.lang.pascal with little
response]

Can anyone give me some information on Apollo's Pascal compiler?
I plan on using it for a course in the Fall.  Does it have a
corresponding interpreter?  Profiling capabilities?  Other tools
and/or utilities?  Is it bsd-like?  ISO compliant (apparently, it
isn't Level 1 compliant, e.g., conformant arrays)?

It's been a while since I've used Pascal, and I'm unfamiliar
with the ramifications of the ANSI & ISO standards.  Does the
provision for directives such as EXTERNAL give implementations
a way to support separate compilation?

Thanks for any information.

John Baugh (jwb@lindenthal.cae.ri.cmu.edu)
-- 

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (05/04/89)

I can address some of your questions.  I'm not familar with the ISO
standard for Pascal, so I can't speak to that.

DOMAIN Pascal has no interpreter that I know of.  It does have a powerful
and relatively easy to use debugger (there is an initial learning hump, 
but it's kind of small).  The debugger is DEBUG at SR9.7 (which is good)
or DDE at SR10.X (which from what little use I've made of it is better,
especially for a novice).

There are two profiling type tools.  HPC is bundled and provides a
map of CPU usage within a program.  OK for CPU bound programs.  DPAK
is an extra, but cheap (I think $250 or so?), and is much 
better in two key ways (many smaller ways too).  First, it samples
wait states, so if you have a program which is I/O bound or 
thrashing you can find out where it spending its time.  Second,
you can map both CPU usage and page faults in a "called from"
fashion, rather than for the program as a whole as with HPC.  This
is especially useful when HPC shows that service routine XYZ, called
from 192 separate places in your code, turns out to take all your 
cpu time.  DPAK lets you break down XYZ's time by caller.

Other tools and utilities?  I'm not familar with much pd stuff
for it.  There is a Pascal cross-referencer.  Sometimes useful.

DOMAIN pascal does support separate compilation, but I don't think
it's to any standard, although I could be wrong.

Good Luck!

Dave Erstad
DERSTAD@cim-vax.honeywell.com
Honeywell SSEC

broman@schroeder.nosc.mil (Vincent Broman) (05/11/89)

Except for the profiler and debugger, which work for C and Fortran also,
Apollo Pascal doesn't come with many tools.

The code generated is quite fast, and the facilities available
through language extensions and pascal-callable libraries are
very extensive.  (bit ops, address manipulations, graphics, comms, etc.)

The language supported as DOMAIN Pascal has only a superficial
resemblance to real Pascal.  Don't look for conformance to
any standard at all.  Even the notion of "type" is changed
to use structural equivalence instead of name equivalence of types.
The compiler supports separate compilation, of course,
but does not provide any type consistency checking at all
across files.  (none!)  You have to arrange that yourself
by means of include files, make, etc.  Procedure/function arguments
to procedures and functions are not allowed.  
New reserved words are defined.   Other fun stuff...

Don't bother screaming to Apollo about the atrocities they perpetrate upon 
a nice language.  The responses I've gotten from them are either illiterate
or else a variant of "That's not a bug, that's a feature."

Vincent Broman,  code 632, Naval Ocean Systems Center, San Diego, CA 92152, USA
Phone: +1 619 553 1641    Internet: broman@nosc.mil   Uucp: sdcsvax!nosc!broman

lehotsky@pmax7.osf.org (Alan Lehotsky) (05/11/89)

After saying a whole bunch of nice things about Apollo Pascal, [like
fast code, extensive extensions, etc], Vincent Broman makes the
mistake of claiming that:

	"Don't look for conformance to any standard at all"
    
I'd like to point out that Apollo's Pascal has been ISO Level 0
compliant for (I think) over two years now.

	"Procedure/function arguments to procedures and functions are
	not allowed"

This was also fixed at least two years ago (even before it became ISO
conforming).  I suspect that he has a very old release of the compiler,
or else he hasn't bothered to RTFM.

Finally, the remark about "illiterate" responses to bug reports is
(hopefully) inaccurate, or else Mr. Broman caught us on an off day.
Most of the UCR responses for Pascal were written by me, or by a
co-worker who happened to be a philosophy major.  I won't try too
hard to convince the world that I am literate, but the philosopher
certainly can claim that skill.

And now, penultimately, I'll agree with you that Apollo Pascal contained
more than its share of poorly integrated language extensions.  It was
a victim of too many language architects and too little language
architecture!

[I sound like a parent defending his child, huh?  So much for ego-less
 programming!]

 Al Lehotsky

grr@cbmvax.UUCP (George Robbins) (05/12/89)

In article <BROMAN.89May10143725@schroeder.nosc.mil> broman@nosc.mil writes:
> Except for the profiler and debugger, which work for C and Fortran also,
> 
> The language supported as DOMAIN Pascal has only a superficial
> resemblance to real Pascal.  Don't look for conformance to
> any standard at all.  Even the notion of "type"...

OSIL:  think of it as an Apollo specific Operatings System Implementation
Language and it will hurt your head less.  The closest parallel might be
to some of the degenerate Algol compilers used for similar purposes on
Burroughs and HP machines (ESPOL, SPL).

-- 
George Robbins - now working for,	uucp: {uunet|pyramid|rutgers}!cbmvax!grr
but no way officially representing	arpa: cbmvax!grr@uunet.uu.net
Commodore, Engineering Department	fone: 215-431-9255 (only by moonlite)

slocum@hi-csc.UUCP (Brett Slocum) (05/12/89)

In article <BROMAN.89May10143725@schroeder.nosc.mil> broman@nosc.mil writes:
>Except for the profiler and debugger, which work for C and Fortran also,
>Apollo Pascal doesn't come with many tools.

Well, there's DSEE, which is one of the finest software engineering
environments around.  We had a massive research contract that produced
about 100K lines of code, and maintained/improved another 100K lines
of code.  We had a fluxuating staff of from 4-16 engineers working on
it, sometimes for as little as a month at a time.  Using Domain Pascal 
and DSEE, work progressed so well, that we were able to deliver major
enhancements over and above the contract needs, and we came in on-time
and within budget.

> [. . .]
>The language supported as DOMAIN Pascal has only a superficial
>resemblance to real Pascal.  Don't look for conformance to
>any standard at all.  Even the notion of "type" is changed
>to use structural equivalence instead of name equivalence of types.
>The compiler supports separate compilation, of course,
>but does not provide any type consistency checking at all
>across files.  (none!)  You have to arrange that yourself
>by means of include files, make, etc.  Procedure/function arguments
>to procedures and functions are not allowed.  
>New reserved words are defined.   Other fun stuff...

Since we were working for the DoD, they had fairly strict requirements
as to the Pascal we used.  Domain Pascal was fine in their eyes.
Part of the project was porting this monster of programs to a Vax,
running VMS.  This task was accomplished in a week, by student aides.
200K lines of code!!!
Now, granted, we did make some attempt to write 'standard' Pascal, and
not use Apollo-specific calls where avoidable.  But this port shows
that Domain Pascal is compatible with other Pascals.  If you are using
multiple source files, you're damn right you should be using include
files.  How else is the compiler going to figure out what you mean? 
Are you saying that all modules should be compiled at one time, so
that the compiler can do proper type-checking?  That's absurd!  If
you look at C, which was designed for separate compilation, you'll
find those same include files all over the place.  It's the best way
to insure consistency.

If you are looking to standards, there is a compiler switch that checks 
to see if your code conforms to ISO/ANSI standard Pascal.  The problem
with non-standard Pascal is not in Domain, but in the nature of Pascal
itself.  There is no standard for multiple source files, system calls,
procedure parameters, etc.  If you look at Wirth, there is no provision
for functions and procedures as parameters.  If you take a look at 95% of
all Pascal compilers, they will all have the same problems you have just
mentioned.  If they don't, then many things will be impossible, such as
separate compilation.

>Don't bother screaming to Apollo about the atrocities they perpetrate upon 
>a nice language.  The responses I've gotten from them are either illiterate
>or else a variant of "That's not a bug, that's a feature."

Most of the things you are complaining about ARE features.  If you use them,
then you better realize that you are writting non-portable code (the manual
clearly states this).  If you don't use them, then you have portable code.
It's really a lot easier than you are making it out to be.
-- 
Brett Slocum   UUCP: ...uunet!hi-csc!slocum
               Arpa: hi-csc!slocum@uunet.uu.net

krowitz@RICHTER.MIT.EDU (David Krowitz) (05/13/89)

Actually, I have found Apollo's compilers to be pretty good
in the compatibility area. The real problem is this:

Everyone I know defines "compatible" as "the way I do it".

Apollo's language manuals have all language extensions marked
in red type. DEC's Vax manuals (last time I looked at them)
had their non-standard language extensions marked in blue.
If you avoid those sections, your code will probably be ok ...
but there are an awful lot of sections which you would think
would be part of the language standard which aren't (would
you believe that the logical AND and OR functions aren't
part of the Fortran 77 standards? Ever compiler I've met
has the functions, but some have "a.and.b", some have "and(a,b)",
and some have "iand(a,b)"). Pascal is one of the worst 
languages in this sense. Much of the language's features
that are necessary for building useful programs were loosely
defined or not defined at all. 


 -- David Krowitz

krowitz@richter.mit.edu   (18.83.0.109)
krowitz%richter@eddie.mit.edu
krowitz%richter@athena.mit.edu
krowitz%richter.mit.edu@mitvma.bitnet
(in order of decreasing preference)