comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada advocacy
Date: Thu, 29 Aug 2013 11:28:34 -0400
Date: 2013-08-29T11:28:34-04:00	[thread overview]
Message-ID: <wccli3kzfbx.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: op.w2g9br0kule2fv@cardamome

"Yannick Duchêne (Hibou57)" <yannick_duchene@yahoo.fr> writes:

> Why did you said “no big loss” about the rendez‑vous? 

That's too big a topic to discuss in the margin of this message.  ;-)
Just a few comments:

Protected objects can do almost everything rendezvous can do,
and I find protected objects to be more flexible.

The main thing I miss when using protected objects is the 'terminate'
alternative (as pointed out by J-P).  The 'terminate' alt works only
with accept statements, not with entry calls.  Also, you can do
multi-way waits with accept statements but not entry calls.
These things are a loss, but not a "big" loss.  These limitations
of protected objects could be fixed, and then rendezvous would
be truly superfluous.

Suppose I have task A that wants to communicate with task B.
When programming in Ada 83, I usually found myself adding
another "passive" task in between A and B.  Passive tasks
look something like this:

    loop
        select
            accept E (...);
            do stuff;
        or
            ...
        or
            terminate;
        end select;
    end loop;

It just feels wrong to me for that to be a task.  It's not
really doing anything; it's just sitting around waiting
to be told what to do -- like a protected object.
The "do stuff" above is likely some simple action
like putting data in a queue or taking it out.
A protected object seems better for that -- perhaps it's
"lower level", but it's the RIGHT level.  And with a protected
object, you don't need a 'terminate' alternative in this case
-- protected objects just go away like any passive object
(say, an integer).

With rendezvous, one of the tasks must know about the other
(i.e. know its name), which increases coupling.

One ought to be able to split out pieces of code into
separate procedures -- that's an important tool for abstraction.
Any language design that inhibits that is questionable, IMHO.
As has been mentioned, accept statements must be lexically
within the task body, which damages this capability.

Rendezvous is a hugely complicated mechanism, which leads to
bugs, not to mention inefficiencies.

- Bob


  parent reply	other threads:[~2013-08-29 15:28 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-20 12:54 Ada advocacy tonyg
2012-03-20 13:54 ` Ludovic Brenta
2012-03-20 14:39 ` Marc C
2012-03-20 15:13   ` Ludovic Brenta
2012-03-20 16:34     ` Yannick Duchêne (Hibou57)
2012-03-20 16:35       ` Yannick Duchêne (Hibou57)
2012-03-20 20:06   ` Shark8
2012-03-20 15:42 ` Georg Bauhaus
2012-03-20 18:31 ` Jeffrey Carter
2012-03-20 21:42 ` anon
2012-03-20 23:05   ` Shark8
2012-03-21  0:32 ` Shark8
2012-03-21  1:58 ` Robert Love
2012-03-21  5:37   ` Per Sandberg
2012-03-25 11:10     ` Peter C. Chapin
2012-03-21  8:59   ` anon
2013-06-17 23:42     ` johannes falcone
2013-06-18  0:09       ` tmoran
2013-06-18  0:14     ` Leo Brewin
2013-06-18  0:59       ` Jeffrey Carter
2013-06-19 19:22         ` johannes falcone
2013-06-19 19:34           ` Jacob Sparre Andersen
2013-06-19 20:16             ` Shark8
2013-06-19 19:36           ` Ludovic Brenta
2013-08-30  7:36             ` johannes falcone
2013-06-18  1:28       ` Dennis Lee Bieber
2013-06-18  5:55         ` Peter Brooks
2013-06-18 17:15           ` Robert A Duff
2013-06-18 17:43             ` Bill Findlay
2013-06-18 19:22               ` Robert A Duff
2013-06-18 19:30                 ` Bill Findlay
2013-08-27 13:34             ` Yannick Duchêne (Hibou57)
2013-08-27 14:08               ` Bill Findlay
2013-08-27 14:13                 ` Bill Findlay
2013-08-27 21:25               ` J-P. Rosen
2013-08-28  7:45                 ` Dmitry A. Kazakov
2013-08-27 22:42               ` Dennis Lee Bieber
2013-08-28  7:45               ` Maciej Sobczak
2013-08-28  8:58                 ` Georg Bauhaus
2013-08-28  9:42                   ` Dmitry A. Kazakov
2013-08-28 11:42                     ` G.B.
2013-08-28 11:59                       ` Dmitry A. Kazakov
2013-08-28 12:49                         ` G.B.
2013-08-28 14:07                           ` Dmitry A. Kazakov
2013-08-28 15:06                             ` Eryndlia Mavourneen
2013-08-28 17:30                               ` Dmitry A. Kazakov
2013-08-28 16:44                       ` Yannick Duchêne (Hibou57)
2013-08-28 17:25                         ` Dmitry A. Kazakov
2013-08-28 23:33                           ` Dennis Lee Bieber
2013-08-29  7:15                             ` Dmitry A. Kazakov
2013-08-29 14:47                           ` Yannick Duchêne (Hibou57)
2013-08-29 19:15                             ` Dmitry A. Kazakov
2013-08-29 15:28               ` Robert A Duff [this message]
2013-08-29 21:43                 ` Jeffrey R. Carter
2013-08-30 23:52                   ` Yannick Duchêne (Hibou57)
2013-08-31  0:05                     ` Jeffrey R. Carter
2013-08-31  1:42                       ` Shark8
2013-08-31  2:57                       ` Shark8
2013-08-31  9:00                         ` Dirk Craeynest
2013-08-31  1:48                   ` Randy Brukardt
2013-09-02  7:13                   ` Egil H H
2013-09-02  8:41                     ` G.B.
2013-09-02 16:37                       ` Egil H H
2013-08-29 15:46               ` Robert A Duff
2013-08-30  4:47                 ` Jeffrey R. Carter
2013-08-30 16:54                   ` Robert A Duff
2013-08-30 17:49                     ` Jeffrey R. Carter
2013-08-30 22:41                       ` Robert A Duff
2013-08-31  0:02                         ` Jeffrey R. Carter
2013-08-31 14:47                           ` Robert A Duff
2013-06-19  7:29           ` nevillednz
2013-08-27 13:39             ` Yannick Duchêne (Hibou57)
2013-09-02 18:45           ` Martin
2013-06-17 23:39   ` johannes falcone
2012-03-21 10:44 ` tonyg
2013-06-18  0:07   ` johannes falcone
2012-03-23 16:13 ` KK6GM
2013-06-13 15:33 ` david
2013-06-13 15:34 ` david
  -- strict thread matches above, loose matches on Subject: below --
2003-08-26 20:33 Ada Advocacy Stephane Richard
2003-08-26 21:20 ` Luke A. Guest
2003-08-26 22:28   ` Stephane Richard
2003-08-26 23:04     ` Luke A. Guest
2003-08-27 16:15       ` Warren W. Gay VE3WWG
2003-08-27 23:06         ` Luke A. Guest
2003-08-28 10:39           ` Preben Randhol
2003-08-26 23:55   ` Chad R. Meiners
2003-08-27  0:44   ` Anisimkov
2003-08-27  8:26     ` Dmitry A. Kazakov
2003-08-27 20:12       ` Wes Groleau
2003-08-27 23:09         ` Luke A. Guest
2003-08-29 16:13           ` Jon S. Anthony
2003-08-29 18:15             ` Luke A. Guest
2003-08-28  8:34         ` Dmitry A. Kazakov
2003-08-27  8:29     ` Luke A. Guest
2003-08-28  5:29       ` Dmitriy Anisimkov
2003-09-01 21:26   ` Dave Thompson
2003-08-27  6:56 ` David Holm
2003-08-27 16:00 ` Rod Chapman
2003-08-29  6:38 ` Adrian Hoe
2003-08-29  9:34   ` Stephane Richard
2003-09-01  5:45     ` Adrian Hoe
replies disabled

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