a library of generic algorithms in ada

14
A Library of Generic Algorithms in Ada David R. Musser GE Corporate R&D Schenectady, NY 12301 Alexander A. Stepanov AT&T Bell Laboratories Liberty Corner, NJ 07060

Upload: others

Post on 03-Feb-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

A Library of Generic Algorithms in Ada

David R. Musser GE Corporate R&D

Schenectady, NY 12301

Alexander A. Stepanov AT&T Bell Laboratories

Liberty Corner, NJ 07060

How a Generic Library Differs from a Repository

a Reposit ory-t ake existing software components, classify them, put them in as is

- main effort toward reusability is in proper classification for ease of retrieval

a Generic Library-commission the creation of software components that are highly reusable

- main effort is in design for high quality and high degree of reusability

OFF-THE-SHELF SOFTWAKE COMPONENTS (Generic Algorithms Approach)

COMPUTATION MODULES

REPRESENTATION MODULES

PARTIALLY-ASSEMBLED MODULES

Key Ideas of Generic Library

Use generic algorithms and data types to express general capabilities

- A generic algorithm is a template for generating an algorithm by plugging in

a set of types and basic operations

0 Generate components for specific applications by instantiation

- Small amount of source code yields large number of useful instances

- Library users can easily generate new components

0 Ensure component quality to much higher standard than by usual means

- Get it right once at generic level; to show correctness of an instance just show

actual parameters meet their requirements

e Provide highly detailed and cross-referenced documentation

- New kinds of classifications for generic components (based on abstraction

mechanisms used)

How Instantiation Works and How It Uses Ada Capabilities

Define components generically with templates

- Parameterized by data type and by basic data operations

- Ada generic units are such a template mechanism

0 Obtain specific components (Ada packages and subprograms) by plugging in specific types and operations

- Supported in Ada by generic instance declarations

- Ada compiler expands instance declaration into regular package or subprogram

6.5.12 Delete

Speciflcat ion Example from Current Library

generic with function Test (X, Y : - Element) return Boolean; function Delete(1tem : Element; S : Sequence)

return Sequence;

Description Returns a sequence consisting of a l l the elements E of S except those for which Test(Item,E) is true. S is destroyed.

Time order nm

Space 0

where n = length(S,) and m = average(time for Test)

Destructive? Yes

Shares? No

See also DeleteJf, DeleteJf-Not

Examples

declare function Delete-When-Divides

is new Lists .Delete(Test => Divides) ; begin - - - - --

~how-~ist (~elete,When,~ivides (3, 1&a(15)) ) ; -- 1 2 4 5 7 8 10 11 13 14 end ;

Implementation

function Test-Aux is new Make,Test(Item, Test); procedure Part it ion,Aur

is new Algorithms.Invert,Partition(Test,Aux); Temp-1, Temp-2: Sequence := Nil;

begin ~artition,Aux(S, Temp-1, Temp-2) ; Free-Sequence(Temp-1); return Invert (Temp-2) ; I

end Delete; I

Implications of Generic Library Approach

For software design:

- Buiding library components is soft ware design activity

- But compilable, executable designs are result

For library maintenance:

- Extensive use of standard Ada compiler environment tools

- Need special library maintenance t 001s for keeping package specs and bod)-s,

documentation, test suites consistent with each other

Current Status of Ada Generic Library

0 Generic algorithms approach developed and refined

Volume 1 of Linear Data Structures Packages

- Overview of generic library approach

- Overview of Linear data structures

- Five packages of linked-list algorithms and data structures (1 14 s u bprograms)

- Instructions for use of the packages

0 Volume 2 of Linear Data Structures Packages

- Three packages (dou ble-ended lists, stacks, outpu t-restricted deques; 62 sub-

programs)

- Preliminary examples of generic vector operations

~ Current Status of Ada Generic Library (continued)

Preliminary version of library maintenance system

- Aids maintenance of source code, test suites, and documentation

I

- Originally in Scheme on IBM PC, recently converted into Ada

Unified Documentation 1 Code Approach

Package b S p e c .

lqJ-~-;'1-rJ~ Preparation

System s Screen 1 we-

defined on them Algorithmic Abstract ions

Families of data abstractions

Intersections of

V V

{Instantiations of representational abstractions) Sequence-Algorithms -

LinkedList Alaorithrns with common algorit hrns

Structural Abstractions

v - -

Vector Algorithms SinglyJIinkedLists

Mappings from one structural I Stacks

algorithmic abstractions Representational Abstractions

Vectors DoubleEndedLists

abstraction to another

Table 1:

Data Abstract ions Data types with operations

Output RestrictedBeques

Classification of Abstractions and Example Ada Packages

Syst em-AllocatedSingly Linked User-Allocated-SingIyLinked

-

-

i

Diagram of Classification of Abstractions

Related Work

e G. Booch, Software Components with Ada, Benjamin/Cumrnings, -

Inc., 1987.

e D. Kapur, D.R. Musser, and A.A. Stepanov, "Operators and Al- gebraic Structures," Proceedings of Conference on Functional Pro- gramming Languages and Computer Architecture, Portsmouth, New Hampshire, October 1981.

D.R. Musser and A.A. Stepanov, "On Generic Programming," in preparation.

Press, et. al. Numerical Recipes, Cambridge U. Press, 1987.

A.A. Stepanov, A. Kershenbaum, and D.R. Musser, "Higher Order Programming," in preparation.

Future Directions

Extend - the library to other data structures and combinatorial algo- rithms

- rectangular data structures, tree and graph processing, string processing,

em b edded-syst em control algorithms

Explore relation to design stage of software development 1

- train software designers as well as programmers in generic algorithms approach

Explore relation to formal software specification and verification

- carry out formal proofs for significant library components