🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #3576

Re: ANSI C Mission Statement

#3576
From: FFarance
Date: Mon, 31 Jul 1995 15:26
265 lines
11568 bytes
> From: jim.fleming@bytes.com (Jim Fleming)
> 
> Has anyone written a mission statement for ANSI C to cover the next 5
> years...???
> 
> Before everyone starts tossing in "// comments", new types like "bool",
> classes, and extensive integer declaration proposals, maybe there ought
> to be some sort of mission statement or a set of goals.
> 
> There are many directions that C can go...here are a few...while it
> might be difficult to capture all of the goals in a mission statement,
> it might be good to get a consensus about the general plan for the
> future...

Yes, they have.  In about a week (I'll post it) you can take a look
on the WG14 and X3J11 FTP site:

	ftp://ftp.dmk.com/DMK/sc22wg14/c9x/Revision*

for the document ``Project Proposal: Revision of C Language Standard
ISO/IEC 9899:1990''.  I've summarized the main points of the revision
charter below.  BTW, this document has been widely distributed and
summarized in the trade journals.

This charter wasn't just ``published'', but was developed, reviewed,
and refined over the past 2 years.  I seem to remember the 1993-12
meeting where everyone came up with a laundry list of everything they
might want.  That list was straw-voted (unofficial vote -- just to get
the sense of the committee) on about 50-ish items.  Here was the results
*then*:

In Favor   Against    Concept

18         0          Longer external names
18         0          Defect reports
17         2          C++ compatibility
15         1          Remove default int
14         0          Mandate float/lang double functions
14         1          Compound literals/designated int
14         1          Extended int range
14         2          Boole data types
14         3          // comments
14         3          Remove obsolete features
13         2          Strong enums
12         0          International identifiers
12         2          Type-safe linking
12         3          ALO's (Array-Like Objects)
12         3          In-line
12         5          Arbitrary declarations (decl's anywhere)
10         1          Library clean up
10         5          Overloading
10         6          Complex
9          1          Char set improvements
9          2          IEEE FP (floating point)
9          3          Distributed (discontiguous) objects
9          3          Range types
9          4          Classes in C
9          4          Enum - extra commas
9          4          Restrict
9          5          True modules (packages)
9          6          References
8          3          VLA (Variable length arrays)
8          1          Better stdio (Chris Torek)
7          3          Bit length
7          4          Constructors/destrutors
6          3          Data parallel (DPCE)
6          6          X3H5 directives - control parallelism
6          7          Statement functions
5          3          Parallel I/O
5          3          Zero size object
5          4          LIA/CLID (WG11)
5          9          New operators
4          0          POSIX locale definition
4          1          Iterators
4          6          Remove float/lang double functions
4          6          Sets
3          3          ISO 10646
3          3          Namespaces
3          6          Debugging support
3          8          Exception handling
3          11         Nested functions
2          4          Auto mangement of dynamic structures - alloca
2          6          Fixed point arithmetic
1          6          Label as a data type
1          9          Logarithmic data types
1          11         Dynamic casts
1          15         Templates
0          9          Garbage collection
0          17         Multiple inheritances

I think this information has been published already (several times)
in trade journals.  BTW, this list isn't what we are *required* to
include, only a sense of what people are interested in.  Of course,
adding any feature requires a lot of work, so you need to have at
least one focal point, i.e., a person that is interested and has
the long-term commitment (several years), for each topic.

You'll find the much of the work falls into the following categories:

	- X3J11.1 NCEG (Numeric C Extensions Group) that spent 5 years
	(1989-1994) developing numeric (and related) features.  They
	issued this as a Technical Report recently.  A TR doesn't carry
	the weight of a Standard, but it is a recommendation for certain
	practices (in this case, numeric practices in C).  The reason
	NCEG was started was that there were features we wanted to add
	into C89, but couldn't get them into ANSI C because we were
	running out of time OR the feature was still being developed
	within the industry.  Of the list above, the following were
	part of the NCEG work (X3J11 members: pardon me if I got
	one or two wrong here):

		ALO's (Array-Like Objects)
		Bit length
		Boole data types
		Complex
		Compound literals/designated int
		Data parallel (DPCE)
		Distributed (discontiguous) objects
		Extended int range
		Fixed point arithmetic
		IEEE FP (floating point)
		Iterators
		LIA/CLID (WG11)
		Library clean up
		Mandate float/lang double functions
		Overloading
		Parallel I/O
		Remove float/lang double functions
		Restrict
		VLA (Variable length arrays)
		X3H5 directives - control parallelism

	About 12 of these made it into the technical report
	in some form or another.

	- Language independent features (e.g., arithmetic,
	data types, internationlization, etc.) that we are
	required to investigate at the ISO level (SC22
	requires this).

	- C++ compatibility features.  This ranges from the
	simple (e.g., choosing a common syntax for a Boolean
	data type) to the complex (e.g., classes).  C9X does
	not plan on incorporating C++.  The line between
	C and C++ is ``as close as possible, but no closer''.
	C9X may choose to incorporate the ``well-defined,
	efficient subset'' of C++.  SC22 (and ANSI, I think)
	requires C and C++ not to diverge on common issues.
	For example, features with the same functionality,
	conceptual model, and semantics, should have the
	same syntax.  However, features with different conceptual
	models (and, certainly, semantics) would likely have
	different syntax just to avoid ambiguous syntax.
	A good example of this is designated initializers and
	compound literals (see the FTP site for the proposal),
	a concept borrowed from Fortran and BLISS, versus
	C++ constructors.

Again, much of this has already been published in trade
publications (DDJ, C/C++ Users Journal, etc.).

> Sample Partial Mission Directions
> 
> 1. C grows up to be like C++
> ...
> 
> 2. C settles down as a great high-level assembly language
> ...
> 
> 3. C becomes ideal companion language for other high-level languages
> ...
> 
> 4. C requires very little change and just needs a few tweaks
> ...

The committee uses the following old (the first 6 are from ANSI C)
and new guiding principles.

	1.  Existing code is important, existing implementations
	are not.
	2.  C code can be portable.
	3.  C code can be non-portable.
	4.  Avoid ``quiet changes''.
	5.  A standard is a treaty between implementor and programmer.
	6.  Keep the spirit of C.
	7.  Support international programming.
	8.  Codify existing practice to address evident deficiencies.
	9.  Minimize incompatibilities with C90.
	10.  Minimize incompatibilities with C++.
	11.  Maintain conceptual simplicity.

The following are highlights from the recommended scope of the
proposed standard:

	Areas to which we intend to look when revising C include
	(in *no* particular order):

	1.  Incorporate Amendment 1.
	2.  All tehnical corrigenda and records of response.
	3.  Future directions in curent standard.
	4.  Features current labeled obsolescent.
	5.  Cross-language standards groups work.
	6.  The evolution of C++.
	7.  The evolution of other languages particularly with
	regard to interlanguage communication issues.
	8.  Other papers and proposals from member delegations,
	such as the numerical extensions Technical Report being
	proposed by X3J11.
	9.  Other comments from the public at large.
	10.  Other prior art.

> The four missions or approaches thumb-nailed above are not necessarily
> mutually exclusive. Maybe a poll needs to be taken to determine where
> people feel the ANSI C committee should "steer" the language. As a
result
> of this poll, maybe a single mission statement can be developed to
> allow people working on the ANSI committee to have some sense for what
> the general population thinks.

C has several groups that ``steer'' it: ISO JTC1 (ISO joint technical
committee - information technology), ISO JTC1/SC22 (programming
languages, their environments, and system software interfaces),
ANSI X3 (information technology), and the parent bodies of from other
countries (I don't know their organizations names), it addition to
comments from the public.

While we have many liaisons that inform us of other activies
(including people that monitor Usenet), it is not up to ANSI to
poll people -- in fact it is the other way around.  If you care about
what is going on, you should contribute technically to ANSI or
other national bodies via comments, papers, proposals, and/or
meeting attendance.  For example, several papers were submitted
by Richard Stallman, yet he didn't attend meetings nor was he
a member.  In fact, almost all the submissions of C9X revision
proposals (see FTP site for more into) that come from the public
at large are from people that aren't able to attend or become
a member, but are able to write a proposal -- the proposal for
the "__FUNC__" feature is from the public.  My guess is that it
has a good chance of being included because: (1) it was within
the guidelines above, (2) it was submitted according to the
C9X submission guidelines (see FTP site), (3) it included a
coherent paper describing the feature, (4) the author followed
up on the proposal, i.e., he revised the proposal based upon
comments received from the committee and others.

Your simple solution here is to read the information on the
FTP site concerning submission guidelines, the revision charter,
and the existing work in the area you have interest.  After that,
you can compose your comments and/or proposal and submit them
according to the submission guidelines.  After that you should
be prepared to respond to comments/criticism and revise your
proposal.

> Before everything but the kitchen sink is dropped into ANSI C, maybe
> we should discuss where C fits in the coming years...

It's an ongoing discussion.  You are welcome to participate via
comments, papers, and/or attendance.

-FF
-------------------------------------------------------------------
(``I only use AOL for reading netnews.'')
Frank Farance, Farance Inc.
E-mail: frank@farance.com, Telephone: +1 212 486 4700
ISO JTC1/SC22/WG14 & ANSI X3J11 (C Programming Language) Project Editor
Technical Details
Message-ID: <3visn0$pl1@newsbf02.news.aol.com>
Path: arc1-ca.pugleaf.net!newsbf02.news.aol.com!not-for-mail
References: <3vhhgh$km0@News1.mcs.net>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!newsbf02.news.aol.com!not-for-mail
From: ffarance@aol.com (FFarance)
Newsgroups: comp.std.c
Subject: Re: ANSI C Mission Statement
Date: 31 Jul 1995 11:26:24 -0400
Organization: America Online, Inc. (1-800-827-6364)
Sender: root@newsbf02.news.aol.com
Message-ID: <3visn0$pl1@newsbf02.news.aol.com>
References: <3vhhgh$km0@News1.mcs.net>
Reply-To: ffarance@aol.com (FFarance)
NNTP-Posting-Host: newsbf02.mail.aol.com