Alan A.A. Donovan Brian W. Kernighan