Errors aren't that simple

William Thomas Wolfe, 2847 billwolf%hazel.cs.clemson.edu at hubcap.clemson.edu
Thu Mar 1 07:04:56 AEST 1990


>From marick at m.cs.uiuc.edu:
> There are two assertions in Bill Wolfe's message:
> 1.  The C community releases an unacceptable number of errors.
> 2.  The C language is at least partly the *cause* of those errors.

  3.  Many members of the C community exhibit an unprofessional and
        irresponsible attitude regarding defect control and especially
        defect prevention.   

  4.  Those members of the C community who ARE responsible professionals
        are apparently not taking significant actions to raise the level
        of software engineering professionalism within the C community.  

   The unsafe constructs within C are themselves sufficient evidence to
   conclude that the C community, by choosing to use a language which has
   many highly unsafe constructs and an almost total disregard for error 
   prevention, does not hold error prevention in sufficiently high regard;
   the failure of a password security system because no boundary checks 
   were done on the length of the password (whereupon the intruder purposely
   supplied a double-length password and thereby ensured that the left and
   right sections of the password-validating data structure were compatible),
   and similar cases demonstrate that the C language poses a serious obstacle
   to the development of defect-minimal software.  For the cost of simply
   the recent national AT&T crash, I'd be willing to conjecture that all of 
   AT&T's software developers could have been trained in software engineering
   concepts and the Ada language, and supplied with Ada compilers as well.   

   The comments found in the Unix man pages I cited have been there for 
   at least a decade, apparently going unchallenged by the rest of the 
   C community.  This is despite the fact that the growth of C has been 
   widely attributed to the Unix operating system being given away to 
   so many universities -- if this attribution is correct, then Unix is
   also responsible for helping to create the widespread attitude within 
   the C community that defects are to be treated casually.  

   It is entirely true that other language communities (BASIC, COBOL, etc.)
   have problems along these lines which are arguably worse than those which
   are clearly associated with the C community.  On the other hand, there are
   other language communities which are doing a considerably better job of
   spreading software engineering concepts and providing linguistic support
   for their application (Ada, Eiffel, etc.).  The challenge for the C
   community is to join the language communities which are doing a good
   job in these respects, as opposed to holding its existing reputation
   as a community which contains an extremely high percentage of those who
   regard themselves as hackers, and whose products repeatedly make national 
   headlines with their spectacular failures.  Since C is a language which
   provides little or no support for defect prevention, one would expect
   that the C community would naturally compensate by being extremely 
   careful about always applying the very best software engineering 
   practices.  Unfortunately, I don't think even the most dedicated 
   C-backers would attempt to claim that this is presently the case.


   Bill Wolfe, wtwolfe at hubcap.clemson.edu
 



More information about the Comp.lang.c mailing list