From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,52882f38318f3520 X-Google-Attributes: gid103376,public From: kilgallen@eisner.decus.org (Larry Kilgallen) Subject: Re: Linking an ADA routine to a program written in C Date: 1996/10/04 Message-ID: <1996Oct4.102608.1@eisner>#1/1 X-Deja-AN: 187525339 x-nntp-posting-host: eisner.decus.org x-nntp-posting-user: KILGALLEN x-trace: 844439181/8393 organization: LJK Software newsgroups: comp.lang.ada Date: 1996-10-04T00:00:00+00:00 List-Id: In article , dewar@schonberg.cs.nyu.edu (Robert Dewar) writes: > Larry says > > "> However, in practice, since Ada 95 can duplicate a C interface, Ada 95 >> can certainly interfac to anything that C (or for that matter Fortran >> or COBOL) can interface to. Of course, as is generally true for interacing >> from C to anything, such interfaces may indeed be non-portable. > > As far as _non-portable_ interfaces to other languages, I can do that > with an Ada 83 program, since I can generally figure out how to program > in assembly language, and in my experience understanding the underlying > machine calling sequences is essential for figuring such things out even > if the linkage is to be constructed in a compiled language. > " > This shows that you do not have muych experience in the use of Ada 95 in > constructing such interfaces, since what you say is simply wrong for > Ada 95, you can interface GNAT to a wide range of languages by following > whatever C would do without having the slightest idea of what the > underlying machine calling sequence is. And how do I find out "whatever C would do" ? Are you presuming that every Ada programmer is a former C programmer ? The little bit of C I do know does not seem to support that portability argument. VMS C programmers call to Pascal routines without specifying that the language being called is Pascal. When they port that C code to 68K Macintosh, they must add a keyword to their source to indicate that the language being called is Pascal. Presumably any Ada implementation must deal with that issue as well, but adding a keyword on getting to a new platform is not what I would call portable. Or even consider calling out to C programs. I buy object code which was written in C from one vendor. If I were to buy different object code from another vendor who happened to use a different brand of 68K Macintosh C compiler (there are 4 available at last count), I would have to specify in my Ada program which brand of C was used for the various imported C subroutines, since there are different binary calling conventions for the various brands of C compiler. This is not an issue on VMS (unless gcc has managed to avoid using the common calling standard), so the Ada code I had written on VMS would need to be "augmented" in order to work on 68K Macintosh. Now admittedly, I only have one current vendor from whom I get multi-platform subroutines written in C. I am sure there are other vendors selling software in that format, but it is unlikely their subroutines are something I want. > Perhaps your experience with Ada 83 is indeed typical, perhaps it is > not, but in any case it seems irrelevant with respect to Ada 95. Presentation of such a broad marketing claim seems intended to win me over on our previous discussions regard GNAT being "commercial" :-) Larry