Path: utzoo!utgpu!watmath!clyde!att!pacbell!ames!ncar!tank!nic.MR.NET!umn-cs!stachour
From: stachour@umn-cs.CS.UMN.EDU (Paul Stachour)
Newsgroups: comp.lang.misc
Subject: Re: Standardization (of FORTRAN, Ada, ect.)
Message-ID: <10250@umn-cs.CS.UMN.EDU>
Date: 29 Nov 88 02:09:24 GMT
References:  <395@ubbpc.UUCP> <311@csun1.UUCP>
Reply-To: stachour@umn-cs.cs.umn.edu (Paul Stachour)
Distribution: na
Organization: CSci Dept., University of Minnesota, Mpls.
Lines: 35

In article <311@csun1.UUCP> weyrich@csun1.UUCP (Orville Weyrich) writes:
>DEC demonstrates that this can be done in the VAX/VMS family of programming
>languages (although this is a private DEC standard).
>
>It *must* be easier, faster, and more cost-effective to define linkage between
>say FORTRAN and Ada than it is to redefine FORTRAN to have most of the features
>of Ada (as is being done by the 8X committee).
>
>Of course, such a proposal is not expected to be greeted with a warm welcome
>by certain mainframe manufactures who have trouble getting their own standard
>linkage conventions standardized :-), or those who have separate and
>incompatible runtime libraries for each language :-), or those who do not
>have language-independent code generators :-).
  Of course we need to be able to call any other language from any
other language.  But DEC was by no means the first to think about this.
GE and MIT, when they built the Multics system, way-back-in-60's, provided
that any language could call any other, and even without having to provide
any such thing as a "pragma" or other means of saying "I'm calling FORTRAN
here from COBOL or PL/I or ...".  And the standard they created is still
good enough today to handle Ada, even though the HOLWG didn't even exist
yet when Multics was done.
  But, as many of us know, people don't buy reliability, or security,
or ease-of-programming.  They buy "cheap" and pay through the nose
for it again and again and again.
  For the curious, the Multics conventions are based on passing
1+n+n words as an argument-list, with the "1" telling how many
arg-pointers and how many descriptor-pointers there are. The n+n
are the arg-pointers and descriptor-pointers.  Languages like FORTRAN
pass only 1+n, ones like PL/I and Pascal pass 1+n+n, and the 
inter-language calls from PL/I to FORTRAN are done by FORTRAN
ignoring the descriptors.  Calls from FORTRAN to PL/I are done by
the PL/I code simply not referencing the non-existant descriptors,
since nothing could have been passed that needed one!
  "Computer Science loses its memory, if not its mind,
   at regular (six month???) intervals. (from ???)"   ...Paul