comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Generic Formal Parameter for a Task Type
Date: 12 Mar 2001 10:33:10 -0500
Date: 2001-03-12T15:47:15+00:00	[thread overview]
Message-ID: <ubsr7dmtl.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: 3AA99F09.5A2C39DB@worldnet.att.net

James Rogers <jimmaureenrogers@worldnet.att.net> writes:

> Yes, each of these is a possible way to create a system for monitoring
> and controlling a set of tasks. 
> 
> I like your idea of the abstract limited tagged type containing a
> "Task_ID" function. Unfortunately, this still adds a lot of 
> overhead when all I want to do is monitor and control the creation
> of tasks.

By "overhead" here I guess you mean "code I have to write". The
implementation of the Java task hierarchy (which you are trying to get
in Ada) must have about the same amount of run-time "overhead", since
it does the same things. It's just that Java has already done the
implementation.

This is a _feature_ of Ada, since it lets you get exactly the
structure and semantics _you_ want, rather than the particular one the
Java language implementers decided to give you. Once someone has done
it and published it, you are free to reuse that, or do something
different. Java gives you no choice.

> Note that the problem I am trying to solve does not require much
> knowledge about the task, only the ability to create an instance,
> and the ability to query a task attribute.

Java gives you more than that, but you don't complain about "overhead"
there. 

> I fully realize the problem can be solved by building an elaborate
> scaffold of data and code structure. 

Similar to the one Java gives you.

> I was hoping to achieve the results simply and cleanly. 

Look at the Java code implementing the task hierarchy; is it simple
and clean?

> I was hoping to avoid the additional overhead of code bloat
> resulting from building tagged types and associated subprograms.

Be sure you are comparing the same things.

> 
> 
> Jim Rogers Colorado Springs, Colorado USA
> 
> Tucker Taft wrote:
> > 
> > Why not have a formal function that returns the Task_ID, rather
> > than 'Terminated?  That way, you can use the Ada.Task_Identification
> > and Ada.Task_Attributes packages to get whatever else you need from the
> > task, including task attributes...
> > 
> > If you wanted to avoid generics, you could define an abstract limited
> > tagged type (say "Has_Task") which had various (abstract) primitive
> > operations, including  at least a "Task_ID" function.  You would then
> > extend from this type by adding a component of the task type of interest
> > (and of course override the abstract primitives as appropriate).
> > You could then manipulate objects of type Has_Task'Class, or references
> > there-to, in a "Java"-like way ;-).  You could also pass in any
> > extension of Has_Task to a generic with a formal tagged derived type
> > of "type My_Task is new Has_Task with private;".
> > 
> > The possibilities are endless...

-- 
-- Stephe



  reply	other threads:[~2001-03-12 15:33 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-09  4:20 Generic Formal Parameter for a Task Type Beard, Frank
2001-03-09  5:24 ` James Rogers
2001-03-09 21:50   ` Tucker Taft
2001-03-10  0:14     ` Robert C. Leif, Ph.D.
2001-03-12 16:14       ` Tucker Taft
2001-03-10  3:25     ` James Rogers
2001-03-12 15:33       ` Stephen Leake [this message]
2001-03-12 16:11       ` Tucker Taft
  -- strict thread matches above, loose matches on Subject: below --
2001-03-09 22:53 Beard, Frank
2001-03-08 22:38 James Rogers
2001-03-08 23:27 ` Marin David Condic
2001-03-09  0:00 ` Robert A Duff
2001-03-09  0:16 ` Pat Rogers
2001-03-09  3:34   ` James Rogers
2001-03-09  4:26     ` Pat Rogers
2001-03-09  4:58       ` James Rogers
2001-03-09 15:50     ` Stephen Leake
2001-03-10  3:15       ` James Rogers
replies disabled

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