

The State of C (1988) - StephenFalken
http://www.drdobbs.com/cpp/the-state-of-c/223000089

======
kazinator
> _To complete the list of things that C might provide but doesn 't: It has no
> storage management, like Pascal's new function_

Pascal is essentially just the abandoned prototype for more grown-up designs
like Modula-2.

The Modula-2 language an allocation mechanism more similar to malloc and free.
And, actually, early versions of that were broken: there was a way to ask how
much memory remains before trying the memory allocation request, with no way
to know whether it succeeded.

Guess what? This was fixed in the ISO standard.

See here, the ISO function reference on modula2.org:

[http://modula2.org/reference/isomodules/isomodule.php?file=S...](http://modula2.org/reference/isomodules/isomodule.php?file=STORAGE.DEF)

    
    
      PROCEDURE ALLOCATE (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL);
        (* Allocates storage for a variable of size amount and assigns the address of this
           variable to addr. If there is insufficient unallocated storage to do this, the
           value NIL is assigned to addr.
        *)
    

So ISO Modula 2 has an allocator that pretty much exactly like malloc and
free. (It's worse: DEALLOCATE needs to know the size!)

If Pascal's way was better, it would have survived into Modula-2.

Also, Modula-2 has I/O functions that you try first, and then check the
result. Streams are called "channels":

    
    
      PROCEDURE ReadRestLine (cid: IOChan.ChanId; VAR s: ARRAY OF CHAR);
        (* Removes any remaining characters from the input stream cid before the next line mark,
           copying to s as many as can be accommodated as a string value. The read result is set
           to the value allRight, outOfRange, endOfLine, or endOfInput.
        *)
    

More like C, again. None of this business of knowing whether we are at end-of-
file or end-of-line without trying any input.

------
Maken
> C also provides a goto statement, but it's infrequently used.

Whoever wrote this was a bit naïve.

~~~
dragonwriter
No, they were quite correct in context. Note that this was written in the
1980s, and the context was comparisons to contemporary versions of Fortran and
BASIC, by which standard "goto" was -- and is -- infrequently used in C.

------
AdmiralAsshat
_> C is a general-purpose programming language that was originally designed
and implemented around 1972 by Dennis Rithie at Bell Labs. Its early growth
was closely associated ith the Unix system where it was developed, since both
the tern and most of the programs that run on it are written in C._

Three typos in the first two sentences. Was this transcribed? I'm a little
suspicious now of the attributed authorship, since I somehow doubt that Dennis
Ritchie would misspell his own name.

EDIT: There's this snippet as well at the end: > _In the meantime, C wears
well as your experience with it grows. With 15 years of C experience, we still
feel that way._

So I'd put it the article's original publication date sometime between 1988
and 1990?

------
expr-
I doubt very much that the bulk of the text was written in (or near) 2005.
Thus it tells very little of the state of C in 2005, but might otherwise prove
to be mildly interesting read on the 80s.

~~~
dang
Good catch. At the end:

 _Editor 's note: Adapted with permission from Potentials. December 1983,
pages 26-30. Copyright 1983 IEEE._

Edit: something's not right there. That's way too early. According to
[https://www.cs.princeton.edu/~bwk/bwkbib.html](https://www.cs.princeton.edu/~bwk/bwkbib.html),
it's 1988 and from BYTE.

