ere is the first part of the pdf document. I think it is easier if I
post the document here in several messages.
More will follow.
New directions in C
1.1: The current situation
The development of the C++ language has had an adverse effect in
the development of C. Since C++ was designed as the better C, C was
(and is) presented as the example of how not to do things, even
if both languages retained a large common base.
All development of C as an independent language has
been neglected and C has been relegated to the past.
The need for a simple and efficient language persists however,
and C is the language of choice for many systems running today
and many new ones. However, programming in C is made more difficult
than it should be because of some glaring deficiencies like its buggy
string library, the lack of a common library for the most used
containers like lists, stacks, and other popular data structures.
Since C++ went out to be "the better C", it is important to avoid
reintroducing the whole complexities of C++ into C and keep the
language as simple as it should be, but not simpler than the
minimum necessary to use it without much pain.
Of course the idea of improving C is doomed according to the C++
people, that obviously will say that the solution is not to
improve C but to come over to C++.
This same failure forecast is found by some C people, that see
any change to their baby as the beginning of the end of the spirit of C.
This situation is exacerbated by the C standards comitee, that
after the bad reception of the new C99 standard has gone into
deep sleep, making any changes or improvements to the standard
language impossible since the earliest date for any standard
publication is setup at 2020.
C is now effectively frozen.
1.2:The most important changes needed.
This proposal seeks to address the following problems as
they appear in our day to day programming.
o The lack of a counted string data structure, that would
give programmers an alternative to the inefficient and
extremely error prone zero terminated strings.
o The need to add new numerical types to the language.
o The need for an abstract containers library that would
allow to improve the developing of portable programs by
providing simple data structures like lists, flexible
arrays, stacks, and others, without any of the
complexity of the STL of C++.
Lets see this points in more detail.
A counted string data structure
C has traditionally defined the string data type as a
sequence of bytes ending with a binary zero byte. This
is an extremely inefficient way of storing strings since
the length of the string, one of the most used
information about the string, must be recalculated at
each access. This implies in most cases a function call
to strlen(), or a loop. In case of long strings this
makes C less efficient than a BASIC interpreter written in C#.
This will be recognized by most C programmers, and the
existence of countless string libraries testifies to this fact.
The problem of those libraries is that they are not
standard and must be ported from one application to the
next, and from one operating system to the next.
What is needed is language support for counted strings.
Another requirement is that the syntax for accessing strings
and the whole library should be as similar to the traditio