ii
Chapter: Contents
Some examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Command line arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Executing commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
A Colophon 100
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
License and copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
B Index 102
C Bibliography 104
List of Exercises
1 (1) Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 (0) For-loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 (0) FizzBuzz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 (1) Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5 (1) Average . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6 (0) Average . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7 (0) Integer ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8 (1) Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
9 (1) Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10 (1) Var args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
11 (1) Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
12 (1) Map function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
13 (0) Minimum and maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
14 (1) Bubble sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
15 (1) Functions that return functions . . . . . . . . . . . . . . . . . . . . . . . . . . 32
16 (0) Stack as package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
17 (2) Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
18 (1) Pointer arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
19 (2) Map function with interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
20 (1) Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
21 (1) Linked List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
22 (1) Cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
23 (2) Method calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
24 (1) Interfaces and compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
25 (1) Pointers and reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
26 (2) Interfaces and max() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
27 (1) Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
28 (2) Fibonacci II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
29 (2) Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
30 (0) Word and letter count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
31 (0) Uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
32 (2) Quine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
33 (1) Echo server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
34 (2) Number cruncher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
35 (1) Finger daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91