comp.lang.ada
 help / color / mirror / Atom feed
From: "Warren W. Gay VE3WWG" <ve3wwg@cogeco.ca>
Subject: Re: ISO/IEC 14519 - Ada POSIX binding
Date: Fri, 20 Jun 2003 12:39:33 -0400
Date: 2003-06-20T12:39:33-04:00	[thread overview]
Message-ID: <3EF338C5.2010005@cogeco.ca> (raw)
In-Reply-To: rw28yrwc04e.fsf@lbrenta.corp.emc.com

Ludovic Brenta wrote:
> Marin David Condic <nobody@noplace.com> writes:
...
>>Also, this POSIX standard may be including a lot of things that might
>>be difficult to support across a multitude of platforms. Ada was
>>intended for machines ranging from bare-boards (no OS) up to full-size
>>machines with lots of different OS's - some of which may not
>>themselves be POSIX compliant. So you might have issues relating to
>>the Least Common Denominator syndrome that standards have to deal with.
> 
> POSIX stands for Portable Operating System Interface for uniX.  It

Note the "uniX". Some things in the POSIX standard are difficult
to implement on other platforms (Windows quickly comes to mind).

> defines only the API and its semantics, not how the API is
> implemented.  If there is an underlying POSIX-compliant operating
> system, then the implementation is trivial.  If there is an OS that is
> not POSIX-compliant, then the implementation is a thick binding to the
> OS.  

There are a number of situations where this is difficult, yeah
verily, maybe impossible. Its been a while since I've looked at
this but can W2k/XP support fork(2), select(2) and or poll(2)
APIs for example?

>>I don't know at what level this standard is written to, but it may
>>likely be dealing with lots of lower level things in order to be
>>applicable across a variety of implementations. If Ada had a sockets
>>package, I'd like to see it abstract away as much as possible from the
>>mechanisms used to move the bits. Is that philosophy incompatible with
>>the standard you cite?
> 
> On the contrary, as I said, POSIX _is_ an abstract interface, and
> implementations have some freedom in how they implement it.

But there _are_ problems WRT Ada. The first that comes to mind is
the whole error handling approach. POSIX likes the idea of an errno
value with errno codes. The Ada approach often uses exceptions, and
perhaps supplementary information APIs, which differ decidedly from
the POSIX interface.

Additionally, POSIX defines very C-ish like routines like read(2)
and write(2), where in Ada a streams approach would likely be
more natural.  So implementing read(2) or msgrecv(2) in an Ada
package doesn't make much sense in a strongly typed language like
Ada.

>>It is probably worth a look at the standard to determine its
>>applicability, but I could imagine some reasons why it might not be
>>the best answer.
> 
> I agree, but my a priori opinion is that POSIX would prove suitable;
> also I don't think it would be a good idea to create a new,
> incompatible standard.

As listed above there are reasons why POSIX cannot be used directly
with Ada.

Sure, it may be used underneath the hood, much like Ada.Text_IO
is. But you won't find fopen(3), fread(3) etc. routines used in
Ada over Ada.Text_IO (normally) for the same reasons. The POSIX
API is not overly suitable to a type safe language like Ada. POSIX
works well with C/C++ where you can override type safety by default.

> P.S. There is already an implementation of the POSIX standard
> available at no cost under the GPL.  It is called FLORIST and is
> maintained by ACT.  From what I understand, it is currently a thin
> binding to a POSIX-compliant underlying OS (including sockets), but
> providing alternative package bodies is probably feasible for all
> kinds of platforms.
> 
> See ftp://ftp.cs.nyu.edu/pub/gnat.

Ah, but have you tried to use this package on Windows?  It isn't
even complete under UNIX (for example, you can't yet use UNIX
sockets with Florist).

-- 
Warren W. Gay VE3WWG
http://home.cogeco.ca/~ve3wwg




  reply	other threads:[~2003-06-20 16:39 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-19 21:43 ISO/IEC 14519 - Ada POSIX binding Mark Lorenzen
2003-06-19 21:29 ` tmoran
2003-06-28 23:48   ` Richard Riehle
2003-06-20 11:57 ` Marin David Condic
2003-06-20 14:08   ` Ludovic Brenta
2003-06-20 16:39     ` Warren W. Gay VE3WWG [this message]
2003-06-20 18:33       ` tmoran
2003-06-20 19:09         ` Warren W. Gay VE3WWG
2003-06-21 19:14         ` Florian Weimer
2003-06-21 19:42           ` tmoran
2003-06-21 21:04             ` Robert I. Eachus
2003-06-29 15:05             ` Florian Weimer
2003-06-20 19:24       ` Georg Bauhaus
2003-06-20 20:49         ` Warren W. Gay VE3WWG
2003-06-20 20:49       ` Wesley Groleau
2003-06-20 23:05         ` Mark Lorenzen
2003-06-21  1:49         ` David Emery
2003-06-21 19:19           ` Florian Weimer
2003-06-21 21:47             ` David Emery
2003-06-21 22:22               ` Larry Kilgallen
2003-06-23 16:13               ` Warren W. Gay VE3WWG
2003-06-23 22:41                 ` Berend de Boer
2003-06-24  9:52                   ` Lutz Donnerhacke
2003-06-24 20:43                     ` Berend de Boer
2003-06-25  9:02                       ` Pascal Obry
2003-06-25  9:46                       ` Lutz Donnerhacke
2003-06-25 21:19                         ` Berend de Boer
2003-06-21 13:01       ` Pascal Obry
2003-06-21 12:11     ` Marin David Condic
2003-06-21 12:44       ` Ludovic Brenta
2003-06-21 13:03         ` Larry Kilgallen
2003-06-21 22:28           ` Ludovic Brenta
2003-06-22  3:45             ` Larry Kilgallen
2003-06-22  8:47               ` Mark Lorenzen
2003-06-23 16:36         ` Warren W. Gay VE3WWG
2003-06-24 11:46           ` Marin David Condic
2003-06-21 19:09 ` Florian Weimer
2003-06-21 22:38   ` Mark Lorenzen
2003-06-21 22:51     ` Ludovic Brenta
2003-06-23 16:54       ` Warren W. Gay VE3WWG
2003-06-24 11:49         ` Marin David Condic
2003-06-24 13:31           ` Warren W. Gay VE3WWG
2003-06-23 16:46     ` Warren W. Gay VE3WWG
2003-06-23 22:43       ` Berend de Boer
2003-06-29 15:10     ` Florian Weimer
2003-06-29 20:58       ` David Emery
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox