NCEG Array Syntax Evaluation
Tom MacDonald
uunet!fig.cray.com!tam
Tue Nov 19 15:09:52 PST 1991
I thought I post the following NCEG document to allow everyone
that is interested a chance to look over the evaluation
criteria that Frank Farance is proposing for the array syntax
subcommittee. You can either send your opinions to Frank
directly (see below) or to ncegacray.com.
Tom MacDonald
==================================================================
From: Frank Farance
Date: 1991-11-18
NCEG Document: 91-057
Title: Evaluation Criteria for Array Syntax Extensions.
As you know, there has been considerable difficulty in con-
verging on a single scheme for extending the array syntax.
Even settling on two strategies is difficult. At the
1991-09 meeting at Apple, there was a discussion of the
"evaluation criteria" we (the Array Syntax Subcommittee)
were using. Although there are some common thoughts I'm
sure we agree on, there are many more I'm sure we differ on
and, most importantly, very few thoughts on the method of
evaluating the proposals exist in a written form. Thus, I
am proposing a starting point for evaluating new features.
I would like to use Monday, 1992-01-06, the day prior to the
next meeting, for a full day working session to review and
evaluate the existing array syntax (ASX) proposals with
respect an evaluation criteria. I'm suggesting the follow-
ing agenda:
09:30 - 10:30
- Review agenda.
- Changes to evaluation criteria.
10:30 - 10:45
- Morning break.
10:45 - 12:00
- Evaluate each proposal based upon the criteria.
12:00 - 13:30
- Lunch break.
Page 1
13:30 - 15:15
- Evaluate each proposal based upon the criteria.
15:15 - 15:30
- Afternoon break.
15:30 - 17:00
- Determine issues that are to be presented to the full
committee.
I will contact the people present at the last subcommittee
meeting to verify this schedule. If there are problems with
this agenda or you'd like to discuss this prior to the meet-
ing, please contact me via telephone (+1 212 486 4700), FAX
(+1 212 759 1605), or E-mail (frankafarance.com or
uunet!farance!frank) with "NCEG" at the beginning of the
subject line.
Page 2
Evaluation Criteria for Array Syntax Extensions
The following proposal addresses the main areas of evalua-
tion for each array syntax extension (ASX) proposal we will
be evaluating. The criteria have been organized under four
main categories.
1. NCEG COMMITTEE ISSUES
1.1 Within Scope
Does this ASX proposal fall within the scope of work for
NCEG?
Does this ASX proposal fall within the scope of work for
this subcommittee?
1.2 Co-Existence With Other NCEG Work
Does this ASX proposal overlap with other NCEG subcommittee
work (e.g., variable dimension arrays, aliasing)?
If yes, does it conflict with other NCEG subcommittee work?
1.3 Co-Existence With Other Standards Committee Work
Does this ASX proposal overlap with X3H5 work in progress?
Does this ASX proposal overlap with X3J16 work in progress?
Does this ASX proposal conflict with X3J11's work?
Does this ASX proposal conflict with WG14's work?
1.4 Generality
Does this ASX proposal support a wide range of numeric
applications or is it specific to a few?
Are there features of this ASX proposal that are orthogonal
(i.e., can be separated into components)?
Are there features of this ASX proposal that can be combined
with other ASX proposals? Which other ones?
Page 3
2. LANGUAGE COMPATIBILITY
2.1 C Compatibility
Will standard C code (C89) run without modification in the
presence of this new ASX feature?
Will there be function call compatibility? Even if this is
not standardized, it must be demonstrated that this is
feasible.
2.2 C++ Compatibility
If X3J16 chooses to adopt this feature, will it be incompa-
tible with their work?
2.3 FORTRAN Compatibility
Is there a function call and/or data type "bridge" between
this ASX proposal and FORTRAN 77 and FORTRAN 90?
How do the concepts and features compare to the array
features of FORTRAN 90?
2.4 Backwards Compatibility
Is it possible to write a preprocessor (or similar) that
translates new ASX code to standard C code?
3. SYNTAX AND SEMANTICS
3.1 New Syntax Description
What new syntax is added?
Does this ASX proposal make use of pragmas?
All descriptions of new features should be described in
terms of standard C concepts. For example, a hypothetical
ASX proposal that implicitly allocated memory for temporary
values might use a description:
Page 4
SYNTAX
c = a MATRIX_MULTIPLY b
PSUEDO-CODE
a1 = dimension 1 of a ;
a2 = dimension 2 of a ;
b1 = dimension 1 of b ;
b2 = dimension 2 of b ;
if ( a2 != b1 )
run_time_error ;
p = malloc( a1 * b2 * sizeof c[0] ) ;
...
In this example, the use of "malloc()" instead of "allocate
a temporary" would help the reader to visualize the ASX
feature. In another example, the description of a vector
multiply might use a C "for" loop to describe the semantics.
3.2 New Data Types
What new data types have been added?
How are temporary values handled? What are their type?
How does argument passing work (both caller and callee)?
Are array slices supported?
Is this ASX proposal compatible with the current "complex"
data type?
3.3 Other
What library (or other) functions have been added?
What are the semantics of the 3-way operator?
What are the semantics of the logical operators?
How is control flow (e.g., "if", "while", etc.) affected?
Are there new control flow mechanisms?
Are the semantics of increment and decrement operators
affected?
How are function calls handled?
Page 5
What are the order of operations (rows first or columns
first)? Can order of operations be specified?
What are the aliasing issues?
4. USABILITY
4.1 Easy to Program
Is the ASX proposal intuitive?
Does the ASX proposal match the programmer conceptual model
for the problem he/she is trying to solve?
The ASX proposal should include existing C code and FORTRAN
code converted to the proposed ASX syntax and the advantages
and disadvantages (read: sales pitch) of porting code to the
proposed syntax.
Sample code should be provided for the following algorithms:
- Vector multiplication.
- Matrix multiplication.
- Quicksort.
- Split radix sort.
- Line of sight.
- **** Please add to this list.
4.2 Supported Architectures
Can the proposed ASX syntax be translated to efficient code
on a wide range of machine architectures?
Does the ASX proposal "favor" (or discourage) a particular
machine architecture?
4.3 Other
Is it in the "Spirit of C" (:-)?
Page 6
More information about the Numeric-interest
mailing list