comp.lang.ada
 help / color / mirror / Atom feed
From: Cyrille <comar@eu.adacore.com>
Subject: Re: Preventing type extensions
Date: Fri, 8 Oct 2010 06:58:14 -0700 (PDT)
Date: 2010-10-08T06:58:14-07:00	[thread overview]
Message-ID: <170a6a4f-d441-4f86-8fbf-8f15da34a094@26g2000yqv.googlegroups.com> (raw)
In-Reply-To: i8fln0$5gv$1@news.eternal-september.org

On Oct 5, 7:02 pm, "J-P. Rosen" <ro...@adalog.fr> wrote:

> Not that fast. You gave convincing examples of that position. I gave (in
> my tutorial) convincing examples where redispatching is definitely not
> what you want.

Well, "not what you want" is not a criteria for me. The issue is
clearly identified vulnerabilities. Vulnerabilities related to using
method overriding and static dispatch are known and discussed in the
literature.

> My position here is that when redispatching is desired, in most cases,
> there is a natural class-wide operation that could handle it. Often
> enough to make it a general rule.

Let me have some doubts... class-wide operations exist in all OO
languages I'm aware of and if there was such a method, it would be
peculiar that nobody had developed it in the standard OO literature in
the last 30 or 40 years...
Note that you use the term redispatching which I'm not too sure what
it means. I'm talking more generally about static dispatch vs dynamic
dispatch in the context of a class hierarchy with method overriding.

> Since DO-178C is not currently publicly available, I'd be delighted to
> have pointers about those "new ways" (if they are different from the
> other approaches of OOTiA). Or better, come to the workshop!

There will be  (parts of) presentations on that topic at the
"certification together" conference
(http://www.certification-together.com/index.php?
option=com_content&view=article&id=73&Itemid=80)

> > but all this line of reasoning has been overtaken by events. Once
> > again, "pessimistic" testing is not the preferred way to address the
> > new objective. So trying to make "pessimistic" testing less painful is
> > just not that interesting anymore.
>
> Hmmm... pessimistic testing is certainly impractical for C++, but I
> wonder if it applies to Ada as well.

I don't see any reason to see a difference between Ada and C++ in that
respect.

> >> To conclude about differentiating T and T'Class, the trick you suggest
> >>> here is easily implementable in other OO languages. There is nothing
> >>> magic in creating a wrapper around a given dispatching call and use
> >>> this wrapper at each dispatch point.
>
> Not at all, in other languages either a subprogram is a method (part of
> the dispatch table), or it applies to a single type. Class-wide
> operations are not dispatched, but still can be applied to a whole
> hierarchy. OK, I dismiss "void *" parameters...

Looks to me this is the other way around. for instance, in C++ either
a subprogram is a method or it is what you call a class-wide
operation. That is to say, when your subprogram has a (ref) parameter
of class C, you can pass it an object of any subclass of C and natural
calls to method of that object will dispatch to the appropriate one.
Note also that C++ offers a choice between static dispatch and dynamic
dispatch. My C++ is a bit rusty but here is an example of that. In
this program "subp" is your classwide operation. Here is the output of
the program:

dispatching to m 1
not dispatching to C1::m 1
dispatching to m 3
not dispatching to C1::m 2
-----------
#include <iostream>
using namespace std;
class C1 {
public:
  virtual int m() {return a;}
  C1 () { a = 1; }
  int a;
};

class C2: public C1 {
public:
  virtual int m() {return b;}
  C2 () { a = 2; b = 3;}
  int b;
};

void Subp (C1 &c) {
  cout << "dispatching to m " << c.m() << endl;
  cout << "not dispatching to C1::m "  <<  c.C1::m () << endl;

}

int  main () {

    C1 c1;
    C2 c2;
    Subp (c1);
    Subp (c2);
}



  parent reply	other threads:[~2010-10-08 13:58 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-12 10:18 Preventing type extensions Florian Weimer
2010-09-12 11:59 ` Ludovic Brenta
2010-09-12 12:53   ` Florian Weimer
2010-09-12 21:23     ` Maciej Sobczak
2010-09-13  5:32       ` Florian Weimer
2010-09-13  7:13         ` Dmitry A. Kazakov
2010-09-13  9:19           ` Georg Bauhaus
2010-09-13  9:42             ` Dmitry A. Kazakov
2010-09-13 10:23               ` Niklas Holsti
2010-09-13 12:55                 ` Cyrille
2010-09-13 13:55                   ` Dmitry A. Kazakov
2010-09-13 21:13                   ` J-P. Rosen
2010-09-21 13:57                     ` Cyrille
2010-09-21 14:19                       ` Dmitry A. Kazakov
2010-09-21 14:44                         ` Cyrille
2010-09-21 16:25                           ` Dmitry A. Kazakov
2010-09-21 17:11                             ` Georg Bauhaus
2010-09-21 18:11                               ` Dmitry A. Kazakov
2010-09-23 20:00                                 ` Simon Wright
2010-09-23 20:49                                   ` Dmitry A. Kazakov
2010-09-24  9:10                                     ` Georg Bauhaus
2010-09-24 10:24                                       ` Dmitry A. Kazakov
2010-09-24 13:30                                 ` Niklas Holsti
2010-09-24 16:27                                   ` Dmitry A. Kazakov
2010-09-24 17:47                                     ` Niklas Holsti
2010-09-24 19:42                                       ` Dmitry A. Kazakov
2010-09-21 14:32                       ` J-P. Rosen
2010-09-21 15:02                         ` Cyrille
2010-09-21 15:26                           ` J-P. Rosen
2010-09-21 16:18                             ` Cyrille
2010-09-22  8:01                               ` J-P. Rosen
2010-09-22 17:28                                 ` Cyrille
2010-09-22 19:30                                   ` Ludovic Brenta
2010-09-22 19:51                                     ` Florian Weimer
2010-09-22 20:14                                       ` Dmitry A. Kazakov
2010-09-22 20:25                                         ` Florian Weimer
2010-09-22 20:38                                           ` Dmitry A. Kazakov
2010-09-22 21:25                                             ` Vinzent Hoefler
2010-09-22 21:20                                           ` Georg Bauhaus
2010-09-22 20:16                                       ` Ludovic Brenta
2010-09-22 20:34                                         ` Florian Weimer
2010-09-22 22:45                                           ` Britt Snodgrass
2010-09-23  8:02                                           ` Ludovic Brenta
2010-09-23 16:51                                     ` Pascal Obry
2010-09-23 18:37                                       ` Florian Weimer
2010-09-23 18:55                                         ` Pascal Obry
2010-09-23 20:28                                       ` Ludovic Brenta
2010-09-24  9:20                                         ` Ludovic Brenta
2010-09-24 14:49                                           ` Simon Wright
2010-09-24 15:09                                             ` Ludovic Brenta
2010-09-24 16:21                                           ` Robert A Duff
2010-09-25  7:10                                         ` Pascal Obry
2010-09-25 12:03                                           ` Brian Drummond
2010-09-24  8:16                                   ` J-P. Rosen
2010-09-24  8:39                                     ` Cyrille
2010-09-24  9:27                                       ` Cyrille
2010-09-29 16:47                                         ` J-P. Rosen
2010-09-30 10:08                                           ` Cyrille
2010-10-05 17:02                                             ` J-P. Rosen
2010-10-08  7:50                                               ` Cyrille
2010-10-08 13:58                                               ` Cyrille [this message]
2010-10-08 20:12                                                 ` Dmitry A. Kazakov
2010-10-11  7:57                                                   ` Cyrille
2010-10-11  8:24                                                     ` Dmitry A. Kazakov
2010-10-12  5:23                                                   ` Shark8
2010-10-13  9:06                                                 ` J-P. Rosen
2010-10-13 17:37                                                   ` Cyrille
2010-10-13 18:50                                                     ` Dmitry A. Kazakov
2010-09-21 14:50                       ` (see below)
2010-09-21 17:37                         ` Cyrille
2010-09-21 19:07                           ` (see below)
2010-09-13 13:05                 ` Dmitry A. Kazakov
2010-09-13 20:21                   ` Niklas Holsti
2010-09-13 21:00                     ` Dmitry A. Kazakov
2010-09-13 21:10                 ` J-P. Rosen
2010-09-14 12:16                   ` Niklas Holsti
2010-09-14 16:46                     ` Dmitry A. Kazakov
2010-09-14 18:08                       ` Niklas Holsti
2010-09-14 18:32                         ` Niklas Holsti
2010-09-15  8:18                         ` Dmitry A. Kazakov
2010-09-14 17:04                     ` J-P. Rosen
2010-09-13 15:12               ` Securing type extensions (was: Preventing type extensions) Georg Bauhaus
2010-09-13 15:29                 ` Securing type extensions Dmitry A. Kazakov
2010-09-13 17:23                 ` Simon Wright
2010-09-13 20:22                   ` Georg Bauhaus
2010-09-13 20:41                     ` Dmitry A. Kazakov
2010-09-14 10:02                       ` Georg Bauhaus
2010-09-14 12:22                         ` Dmitry A. Kazakov
2010-09-14 21:18                           ` Georg Bauhaus
2010-09-15  8:15                             ` Dmitry A. Kazakov
2010-09-15 20:47                               ` Georg Bauhaus
2010-09-16  7:47                                 ` Dmitry A. Kazakov
2010-09-16 11:52                                   ` Georg Bauhaus
2010-09-16 12:45                                     ` Dmitry A. Kazakov
2010-09-16 20:53                                       ` Georg Bauhaus
2010-09-16 21:37                                         ` Dmitry A. Kazakov
2010-09-17  8:45                                           ` Georg Bauhaus
2010-09-17  9:39                                             ` Dmitry A. Kazakov
2010-10-05  5:59                     ` Randy Brukardt
2010-09-13 18:32           ` Preventing " Florian Weimer
2010-09-13 20:30             ` Dmitry A. Kazakov
2010-09-22 19:41               ` Florian Weimer
2010-09-22 20:34                 ` Dmitry A. Kazakov
2010-09-22 21:10                   ` Georg Bauhaus
2010-09-17  0:16           ` Shark8
2010-09-17  7:04             ` AdaMagica
2010-09-17 21:05               ` Shark8
replies disabled

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