Title: Theory / Unimportant / CS / Programming / C Harbison Steele{ / 01 intro;+14
Tags: hasSeenConjDef

Name: The C Programming language, Brian Kernighan and Dennis Ritchie
Page: 4
Chapter: 1
Section: 1.1
Abbreviation: K&R

Name: Traditional C
Definition: The version of C described in K&R
Page: 4
Chapter: 1
Section: 1.1

Name: Standard C
Definition: Some version of the C language as described by some ISO norm
Page: 4
Chapter: 1
Section: 1.2

Name: C89 with Amendment 1
Definition: Almost C89, adding an amendment and two technical corrigenda
Page: 4
Chapter: 1
Section: 1.3
Notation: C95

Name: Clean C
Definition: avoid using C++ reserved name
Page: 5
Chapter: 1
Section: 1.5
Definition2: uses function prototypes
Intuition: The portion of C valid in C++
DefType: C code

Definition: First C standardization, by ANSI and then ISO
Page: 4
Chapter: 1
Section: 1.2
Notation: C89

Definition: The ISO standard decided in 1999
Page: 5
Chapter: 1
Section: 1.4
Notation: C99

Question: How to deal with code which should be compatible with different version of C ?
Answer: Use preprocessors to adapt the code.
Page: 6
Chapter: 1
Section: 2

Name: A C Program
Definition: one or more source files, or translation units, each of which contains some part of the entire C program-typically some number of external functions.
Page: 7
Chapter: 1
Section: 3

Name: main
Definition: The function in which the program start
Page: 7
Chapter: 1
Section: 3

Name: A C compiler
Definition: A program which independently processes each source file and translates the C program text into instructions understood by the computer.
Page: 7
Chapter: 1
Section: 3

Name: Object code
Definition: The output of the compiler, assuming no error in the code.
Page: 7
Chapter: 1
Section: 3
Name2: Object module

Name: A linker
Definition: A program which resolves references between the modules, adds functions from the standard run-time library, and detects some programming errors such as the failure to define a needed function.
Page: 7
Chapter: 1
Section: 3

Name: An executable program
Definition: A program which can be directly executed by the computer.
Page: 7
Chapter: 1
Section: 3

Name: A program which strictly conform to Standard C
Definition: A program which uses only the features of the language and library described in standard C
Page: 8
Chapter: 1
Section: 4

Name: A conforming hosted implementation
Definition: An implementation of C which accepts any strictly conforming program
Page: 8
Chapter: 1
Section: 4

Name: A conforming freestanding implementation
Definition: An implementation of C which accepts any strictly conforming program that uses no library facilities other than those provided in the header files:
-float,
-iso646,
-limits
-stdarg
-stdbool
-stddef
-stdint
Page: 8
Chapter: 1
Section: 4

Question: Why using conforming freestanding implementation ?
Answer: Such a program can run on small embedded system with limited library, no file system, etc...
Page: 8
Chapter: 1
Section: 4

Name: A conforming program
Definition: A program accepted by some conforming implementation.
Page: 8
Chapter: 1
Section: 4

Question: Difference between a conforming program and a strictly conforming program ?
Answer: The first one can depends on some non portable, implementation-defined features of a confonning implementation.
Page: 8
Chapter: 1
Section: 4

Definition: Introduce a syntactic definition, of an object called foo, with potential value bar_i
Page: 9
Chapter: 1
Section: 5
Notation: foo:
  bar_1
  bar_2

Definition: Signale that foo is optional in the current definition
Page: 9
Chapter: 1
Section: 5
Notation: foo_opt