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,4e02731064e80d04 X-Google-Attributes: gid103376,public From: mfb@mbunix.mitre.org (Michael F Brenner) Subject: Re: Ada - State of the art tools... lacking Date: 1997/12/29 Message-ID: <688998$avn@top.mitre.org>#1/1 X-Deja-AN: 311012150 References: <01bd102d$fcfbb910$652da8c0@steved_home> <01bd1274$01939f40$652da8c0@steved_home> <34A74195.46994669@srv.net> Organization: The MITRE Corporation, Bedford Mass. Newsgroups: comp.lang.ada Date: 1997-12-29T00:00:00+00:00 List-Id: > ... although Ada is by far the best language for developing large > and complex systems for multiple platforms do so is FAR FROM > AUTOMATIC. Things to watch out for are compiler/platform > specific pragmas, representation clauses (legal boundries and > element sizes), and various and sundry semantic interpretation > differences. If anyone is making a list of things to watch out for, the following have bitten me this year: (1) differences in system.storage_size, (2) differences in ordinary operating system functions such as renaming files, getting directory lists, getting the current tick of the clock, accessing virtual versus absolute memory, how to set the environmental variables, how to spawn an Ada program as a separate operating system process, etc. (3) differences in the way you address different disk drives and specifically the lack of ability to use URLs to address different disk drives the way IE and Netscape and Mosaic do, (4) differences in the way you access the exact unparsed command line from which the user invoked yourself, (5) differences in the way you convert a machine address into an integer type, (6) differences in the way interrupts are handled: how to enable or disable interrupts, how to read or set interrupt vectors, how to go into supervisor (root, protected, etc.) mode, how to do a callback, how to put a wrapper around a function that will be called by an interrupt handler, how to chain interrupts, how to attach an Ada interrupt handler to an interrupt number, how to restore the previous interrupt handler, how to tickle a port, (7) differences in the way you extract bytes from integers, for example, if you wish to get the third byte (the byte next to the high-order byte) of a four-byte integer, (8) differences in the way assertions are implemented as a procedure or an optional pragma, (9) differences in whether code is generated for unchecked conversion in each given case (i.e. when code is generated the procedure has to be rewritten a different way to avoid making the extra copy of large data structures), (10) whether things exist like long_float, (11) gross differences in the way stream_io works on various current implementations of gnat with regard to whether extra carriage returns or line feeds are generated, how to determine end of a binary file, how to connect to pipelines in DOS and Unix, and how to use the built-in random access in stream_io to actually do random access on your piped input file. (12) whether one can link a package or a procedure in a package as the main program versus just being able to link a library level procedure as a main program, (13) availability of the annexes. Mike Brenner mikeb@mitre.org