comp.lang.ada
 help / color / mirror / Atom feed
From: sbelmont700@gmail.com
Subject: Re: Ada's ranking of popularity at IEEE Spectrum
Date: Sun, 27 Jul 2014 13:19:40 -0700 (PDT)
Date: 2014-07-27T13:19:40-07:00	[thread overview]
Message-ID: <d105e202-1c7d-4bde-8880-ca8ea8c81cc1@googlegroups.com> (raw)
In-Reply-To: <bsm8t9dp76p0abvppimj73pdrpt99gua08@4ax.com>

On Saturday, July 26, 2014 10:01:17 PM UTC-4, David Thompson wrote:
> 
> Huh? Except for application data, which a general-purpose transport
> 
> can't know about, OpenSSL goes to quite a bit of effort to make its
> 
> API about as strongly typed as can be accomplished in C, with mostly
> 
> opaque structs, access routines, shims for ASN.1 and PEM, etc. It's
> 
> not perfect, and certainly not as easy as in Ada, but it's far from
> 
> the all-too-common-in-C void* madness you suggest.


It all comes down to just how "Ada-like" you want it to be.  OpenSSL doesn't throw exceptions, so does the benefits of using them in a binding outweigh the slight deviation from the spec?  The write function takes a length, which in Ada would be inherent in the array, so do you deviate from the spec again?  It doesn't have reference counting (IIRC), so do you use controlled types?  Or do you even go 'full Ada' and make the client instantiate Integer_SSL or Float_SSL functions instead of sending everything as a string?  Or maybe even model it using Ada.Streams?

My point is that even 'good' APIs (like OpenSSL or OpenGL) inherently stink of untyped C, and it becomes a delicate balancing act of figuring out at what point you've failed to implement the spec everyone knows and instead succeeded at inventing a new (better) API that nobody wants.  Victor Porton's copious posts seem to suggest similar problems.

-sb


  reply	other threads:[~2014-07-27 20:19 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-06 15:19 Ada's ranking of popularity at IEEE Spectrum Dan'l Miller
2014-07-06 16:25 ` gautier_niouzes
2014-07-06 17:18   ` Dan'l Miller
2014-07-06 18:03     ` Ludovic Brenta
2014-07-06 19:03       ` Dan'l Miller
2014-07-06 19:41         ` Ludovic Brenta
2014-07-07  7:03         ` Tero Koskinen
2014-07-06 22:15     ` Brad Moore
2014-07-07 13:14       ` Peter Chapin
2014-07-07 14:27         ` Dan'l Miller
2014-07-09 15:01         ` Brad Moore
2014-07-10  7:42           ` Maciej Sobczak
2014-07-10 13:56             ` Peter Chapin
2014-07-10 18:18             ` Nasser M. Abbasi
2014-07-10 18:30               ` Nasser M. Abbasi
2014-07-11  4:55                 ` theanalogmachine
2014-07-11 11:56                 ` G.B.
2014-07-07  8:37     ` Brian Drummond
2014-07-06 19:41 ` sbelmont700
2014-07-08 17:25   ` Shark8
2014-07-08 23:03     ` sbelmont700
2014-07-08 23:30       ` Jeffrey Carter
2014-07-09  0:29         ` sbelmont700
2014-07-09  2:30       ` Shark8
2014-07-27  2:01       ` David Thompson
2014-07-27 20:19         ` sbelmont700 [this message]
2014-07-28  3:53           ` Dan'l Miller
2014-07-07  0:17 ` Simon Clubley
2014-07-07  1:17   ` Nasser M. Abbasi
2014-07-07  6:11     ` Simon Wright
2014-07-07  6:30     ` Georg Bauhaus
2014-07-07  9:04     ` Brian Drummond
2014-07-07 13:33       ` Simon Wright
2014-07-07 16:11         ` Brian Drummond
2014-07-10 19:49   ` Marius Amado-Alves
2014-07-10 20:19     ` Shark8
2014-07-10 21:39       ` björn lundin
2014-07-10 22:54         ` Shark8
2014-07-11  7:26           ` Dmitry A. Kazakov
2014-07-11  7:37           ` Maciej Sobczak
2014-07-11  9:32           ` björn lundin
2014-07-12 21:43           ` Marius Amado-Alves
2014-07-13  8:52             ` björn lundin
2014-07-11  0:16     ` Simon Clubley
2014-07-11  0:40       ` Jeffrey Carter
2014-07-11  1:15       ` Shark8
2014-07-11  7:03         ` Simon Clubley
2014-07-08 20:10 ` gautier_niouzes
2014-07-10 13:30 ` Gerd
2014-07-10 15:14   ` Shark8
2014-07-10 19:16   ` Jeffrey Carter
2014-07-11  2:17     ` Dennis Lee Bieber
2014-07-11  0:39   ` gvdschoot
replies disabled

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