The C Hierarchy
novice
puts "#include <stdio.h>" in his code, but is not sure why
has heard of pointers, but has never seen one
user
uses the following macros:
#define BEGIN { #define END ;}
has had a bad experience with pointers
knows the difference between ' and "
knowledgeable user
uses:
if(a==b) c = 1; else c = 0;
uses pointers, but only in place of arrays
loves writing code on VMS
expert
uses:
c = (a==b) ? 1 : 0;
uses pointers comfortably
are jazzed when they find a compiler bug because they found it
has figured out what && and || are for
refuses to write C code on VMS
hacker
uses:
c = a==b;
writes code which use pointers to functions
writes macros instead of simple functions
uses bitwise operators because they are like assembler
writes simple code with "cat >" and compiles it with "!cc".
uses argv and argc
guru
avoids bitwise operators due to portability
are annoyed with compiler bugs
writes code portable enough to port from VMS but doesn't relish the thought
writes libraries that his fellow workmates use
can answer most C questions after a little thought
wizard
writes compilers with "cat >" (and they work!)
reads device driver source with breakfast
can tell what question you are about to ask, and answer it
is on a first-name basis with Dennis, Bill, and Ken