Advanced C Programming
Brief history of C •
•
1970’s –
Unix
–
C, from BCPL (Thompson and Ritchie)
C programming Language –
Widely used like the others: Fortran, Pascal
–
Main form of language for system programming
–
Available on any machine with C compiler and library
•
Popular language
Why C?
–
Operating systems (Win, Linux, FreeBSD)
–
Web servers (Apache)
–
Web browsers (Fox)
–
Mail servers (sendmail, postfix)
–
DNS servers (bind)
–
Graphics card programming (OpenCL)
•
Programming language rankings
•
Why? –
Performance
–
Portability
–
Familiar to programmers
Why C? •
Compared to assembly language –
–
•
Abstracts the hardware view (registers, memory, call stacks), making code portable and easier Provides variables, functions, arrays, complex arithmetic, Boolean expressions
Compared to other high-level languages –
–
–
Maps almost directly into hardware instructions, making optimization easier Provides a minimal set of abstractions compared to other HLLs Like other HLLs, makes complex programming simpler (at the expense of efficiency)
C characteristics •
"C" because many features came from earlier language “B“ –
•
Block structured –
•
•
Reduced form of Basic Combined Programming Language, 1966 Blocks are denoted { }
Many utility functions provided in libraries –
Libc, libpthread, libm
–
Nowhere near the functionality of other runtime environments
Some major C features –
Functions, Structures, Types
–
Pointers – direct access to memory space
C vs. Java
•
Speed
•
Portability
•
Object orientation
C vs. Java •
•
•
•
Pointers to memory Platform dependent types Programmer allocated memory Declare variables at start of block
•
•
•
•
References to objects Types have well defined sizes Automatic garbage collection Declare variable anywhere
Hello World – code /* Hello World! */ #include <stdio.h> int main() { printf(“Hello World!\n”); return 0; }
C compilation model
Hello World – walkthrough •
•
C program: hello.c –
emacs, vi, vim, pico, joe …
–
Plaintext only
Preprocessing: hello.s, assembly code –
•
Compilation: hello.o, a binary file –
•
cc -S hello.c cc -c hello.s
Linking: a.out or hello, an executable file
Hello World – content breakdown •
Comment
•
Preprocessor directive
•
Function definition
•
Output statement
•
Return clause
#include <stdio.h>
Second Example
int main() { int first, second, add; float divide; printf("Enter two integers\n"); scanf("%d%d", &first, &second);
Second example – content breakdown
•
Variables
•
Function calls –
Input
–
Output
•
Operators
•
Typecasting