[comp.lang.ada] Ada tasking

mudd-j@bear.cis.ohio-state.edu (John R. Mudd) (12/02/88)

I am looking for information concerning Ada tasking and how it may not 
be the best way to express concurrency.  I would like to see papers 
dedicated to the topic from proceedings or tech reports, not simply sections 
from papers on concurrency, unless the paper has a good discussion of the 
Ada tasking model and its drawbacks.

Unfortunately, there's an extra twist.  Ohio State doesn't have proceedings
from *any* Ada conference--it does get SIGada--so if you suggest a paper
and your description matches what I'm looking for, I may have to ask you
to send me a copy.  I'm sorry about that, but this library is in a pretty
sad shape.

I also be interested in talking to people who have interfaced C routines
into their Ada programs.  

    John

-------------------------------------------------------------------------------
  John R. Mudd                                     mudd-j@cis.ohio-state.edu
  Department of Computer and Information Science,  The Ohio State University
  2036 Neil Avenue, Columbus, Ohio, USA   43210-1277
 

ted@grebyn.com (Ted Holden) (05/25/90)

 
 
I must have been really tired the other night to have written the little
formula for saving Ada and not mentioned tasking;  sorry.
 
From: Jeffrey M. Schweiger, Naval Postgraduate School, Monterey CA
 
>In his book, Hoare does not seem to be very upset with Ada, either, just viewing
>it as unnecessarily complicated for his purposes.  Closing out a three page
>section on Ada, he writes (page 234):
>
>"Apart from the complexities listed in the preceding paragraph, tasking in Ada
>seems to be quite well designed for implementation and use on a multiprocessor
>with shared storage."
 
>Jeff Schweiger
 
Probably the DOD got to him somehow or other;  maybe put a horses head
in bed with him like in Godfather I ...  who knows;  made him promise to
say SOMETHING nice about Ada and the statement about semetrically
parallel machines (like the Sequent) was probably all he could think of.
Ada DOES run reasonably well on the Sequent, but I should mention the
following:
 
   1.  Neither I nor any of my friends OWNS a Sequent (they cost upwards
   of $50,000 and the top-end models go for around $800,000).
 
   2.  The problems mentioned by Ms. Edwards and others concerrning
   priorities of tasks are not solved by parallelism.
 
   3.  The Sequent is a bit on the HEAVY side of it for an embedded
   system, which is the original mandate of Ada;  kind of hard to fit
   one on an F16.
 
There are numerous other reasons why the notion of Ada tasking on
multiprocessors probably won't help YOU today or tommorrow.
 
 
From: Markku Sakkinen, University of Jyvaskyla, Finland
 
>Why _should_ Hoare have mentioned a baroque language that is not
>the least bit concerned about parallelism?
 
Why should any language BE concerned with parallelism?
 
Tasking is naturally an operating system feature;  the idea of tasking
as a part of a language is one of the dumber ideas since communism.
There's no right way to do it, as a careful reading of the 750 little
"problems" should make obvious to anybody.  In all truth, I can't really
believe that any of the serious people in this group who have read
through any of that would argue this point with me.  Probably what you
want to do is to define a standard set of features to be provided by
operating systems/real-time kernals for uses which involve tasking, a
standard set of function calls, and have libraries to provide these
functions to applications which need them.
 
 
Ted Holden
HTE
 
 

vladimir@prosper (Vladimir G. Ivanovic) (05/25/90)

In article <20075@grebyn.com>, ted@grebyn (Ted Holden) writes:

>Tasking is naturally an operating system feature;  the idea of tasking
>as a part of a language is one of the dumber ideas since communism.

Here are a few reasons for making tasking a language feature:

(1) The compiler can be used to check the semantics of tasking as well as its
syntax. 

(2) The same model is used by all implementations.

(3) A tasking library is limited to a procedure call interface.  One can't have
the nicely readable syntax of Ada's tasking constructs.

Cheers,

-- Vladimir
--

Vladimir G. Ivanovic			vladimir@sun.com
M/S 12-33				vladimir@prosper.ebb.eng.sun.com
Sun Microsystems, Inc.			vivanovic@sun.com

progers@ajpo.sei.cmu.edu (Pat Rogers) (05/26/90)

In article <20075@grebyn.com>, ted@grebyn.com (Ted Holden) writes:
> 
> From: Jeffrey M. Schweiger, Naval Postgraduate School, Monterey CA
>  
> >In his book, Hoare does not seem to be very upset with Ada, either, ...
> >   ......
>  
> Probably the DOD got to him somehow or other;  maybe put a horses head
> in bed with him like in Godfather I ...  who knows;  made him promise to
> say SOMETHING nice about Ada and the statement about semetrically
> parallel machines (like the Sequent) was probably all he could think of.
>

Well, now that Hoare has been removed from the list of supposed supporters
for this noise, with his usefulness thus lost Mr. Holden trashes his integrity.
Sheesh! 

I hope (for any of a number of reasons) that I am never considered 
a peer too. (Not likely, I know, gratefully.)

P Rogers
Software Arts and Sciences
progers@ajpo.sei.cmu.edu

sampson@cod.NOSC.MIL (Charles H. Sampson) (05/26/90)

In article <20075@grebyn.com> ted@grebyn.com (Ted Holden) writes:
 
>Tasking is naturally an operating system feature; ...

An interesting, unequivocal, statement.  No "IMHO ...", no "Many people
think ..."  A good illustration of the depth of the author's understanding
of the issues.

IMHO, many people think that the purpose of a programming language is to
express programs.  If a program is implemented using tasking, it seems
ideal to be able to express the tasking part of the program in the same
language that expresses its loops and procedure calls.  Those who de-
veloped the Ada requirements (Ironman, Steelman) had the radical idea
that it should be possible to understand a program by reading its source
code, rather than getting out the operating system services manual.

>                                                ...  Probably what you
>want to do is to define a standard set of features to be provided by
>operating systems/real-time kernals for uses which involve tasking, a
>standard set of function calls, and have libraries to provide these
>functions to applications which need them.

Maybe I missed something here, but this sounds like an argument in favor
of putting tasking into the language.  The only quibble seems to be the
syntax to be used (and presumably the semantics).  Should it be done
with constructs that look like declarations and statements, or should
it be done with "a standard set of function calls?"

None of this is intended to cover up the fact that there are problems
in this area.  I can't believe that there is anyone who believes that
Ada's tasking is just wonderful and should not be touched.  My guess is
that if anything is certain to be modified in 9X, it's tasking.  Of
course, that version 1 of Ada is imperfect is considered proof of its
worthlessness by Mr. Holden.  Does anyone remember what version 1 of
C looked like?

Charlie Sampson, CSC

kary@hp-lsd.COS.HP.COM (Dan Kary) (05/26/90)

> Why should any language BE concerned with parallelism?
> Ted Holden
> HTE
 
From the first time I read the ARM I've felt that the Ada tasking
model is quite useless for solving real time problems.  However, the 
value of a programming language that is concerned with parallelism
was (and is) immediately obvious.

As computing machinery has become faster and faster, the possibilities
of what can be done with that machinery have grown.  It is becoming
increasingly obvious that physical realities (the speed of electricity,
the length of wires, etc.) will place a bound on what a single machine
may ultimately do.  An equally obvious solution to this limitation is
to use more than one machine to accomplish the desired task.

The problem with using more than one machine to accomplish a single task
is that virtually all problem solving techniques currently used involve
algorithms that presume a single thread of execution.  This is a most
unsurprising state of affairs, given that most machines and programming
languages concern themselves with a single thread of execution.

In order to make the leap to a future where multiple machines work
cooperatively to solve a single problem, the people who program those
machines will have to begin to think about parallel solutions to problems.
A language which presents a model of parallel execution that is free of
machine and operating system dependencies seems to be a useful first step.

Dan Kary

ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe) (05/26/90)

In article <1921@cod.NOSC.MIL>, sampson@cod.NOSC.MIL (Charles H. Sampson) writes:
: In article <20075@grebyn.com> ted@grebyn.com (Ted Holden) writes:
: >Tasking is naturally an operating system feature; ...
: An interesting, unequivocal, statement.  No "IMHO ...", no "Many people
: think ..."

Given that Ted Holden cited Hoare, I don't think it irrelevant to remind
people who invented the CSP notation (which underlies occam, for example).
That's right.  Hoare.

The last time I heard an argument like that, it was the Algol 60
committee saying that input/output was naturally an operating system feature.
Algol 68 not only specified I/O, Algol 68 had a tasking model!

It doesn't matter whether tasking is done with special syntax or by
calling built-in procedures.  If I can use it in a portable program,
the effect of the tasking operations has to be defined _somewhere_.
The fact that fork() and signal() and semop() and the rest are library
functions in UNIX/C just means that (a) when I write a C program that
needs IPC I have to look in a language manual _and_ a library manual
and (b) my programs aren't portable.  This is a help?

The advantage of a separate tasking library is that several languages can
use the same library.  There's a lot to be said for that.  But the point
of Ada was to _reduce_ the need for using several languages.
-- 
"A 7th class of programs, correct in every way, is believed to exist by a
few computer scientists.  However, no example could be found to include here."

mph@lion.inmos.co.uk (Mike Harrison) (05/29/90)

In article <20075@grebyn.com> ted@grebyn.com (Ted Holden) writes:
>
> 
> 
>I must have been really tired the other night to have written the little
>formula for saving Ada and not mentioned tasking;  sorry.
> 
>From: Jeffrey M. Schweiger, Naval Postgraduate School, Monterey CA
> ... 
> 
>Probably the DOD got to him somehow or other;  maybe put a horses head
>in bed with him like in Godfather I ...  who knows;  made him promise to
>say SOMETHING nice about Ada and the statement about semetrically
>parallel machines (like the Sequent) was probably all he could think of.
>Ada DOES run reasonably well on the Sequent, but I should mention the
>following:

I have tried quite hard recently to avoid responding directly to this 
gentleman's postings but I regret that I cannot ingore this one.

Firstly, I cannot imagine how Mr. Holden hopes to make a case against Ada by
libelling a highly respected member of the international scientific community
(particularly one who he was recently quoting in support of his tendentious
arguments).

Secondly, and on a more technical point, he writes:

>Tasking is naturally an operating system feature;  the idea of tasking
>as a part of a language is one of the dumber ideas since communism.
>There's no right way to do it, as a careful reading of the 750 little
>"problems" should make obvious to anybody.  In all truth, I can't really
>believe that any of the serious people in this group who have read
>through any of that would argue this point with me.  Probably what you
>want to do is to define a standard set of features to be provided by
>operating systems/real-time kernals for uses which involve tasking, a
>standard set of function calls, and have libraries to provide these
>functions to applications which need them.


Thus dismissing in one breath, all the work being done on parallel and
comcurrent processing. No qualification, no justification -- no sign of
understanding!

'Tasking' is merely a name for methods of expressing the notions of concurrent
or co-lateral execution. Such notions, if given a suitable medium of expression,
can be as powerful a form of abstraction for controlling the complexity of some
kinds of application as procedures and structured data types are for others.

The ability to choose an appropriate level of granularity for such co-lateral
threads of computation is just as important as the ability to use procedures
and functions whose bodies may be quite trivial, but which improve the clarity
of expression. (Perhaps Mr. Holden never uses macros in any of his C programs).

'Fine grain' parallelism clearly cannot be achieved by relying on the services
offered by operating systems or 'run-time kernels', (at least for the general
run of machines to which Mr. Holden would have us restrict ourselves). [ the
Sequent is too expensive, etc.].

It follows that to the full range of expression which programmers and engineers
now require can only be met by integrating the mechanisms of parallelism into
the language.
This Ada has done.

I am puzzled by Mr. Holden's motives in continuing to post his poisonous libels
in this group. I am sure that no-one objects to intelligent criticism of Ada,
even if it is primarily destructive in nature, so long as it is expressed in a
civil manner, but Mr. Holden acts in a way more befitting a fractious 4 year
old child.

More in sorrow than in anger,

Mike,



Michael P. Harrison - Software Group - Inmos Ltd. UK.
-----------------------------------------------------------
UK : mph@inmos.co.uk             with STANDARD_DISCLAIMERS;
US : mph@inmos.com               use  STANDARD_DISCLAIMERS;