A brief interview with Awk creator Dr. Brian Kernighan (2022)
A short interview with Brian Kernighan about Awk prompts a broader look at his role in Unix and programming language history, with many arguing that calling him merely the “Awk creator” undersells his influence. Commenters trace how Awk’s core idea of built‑in associative arrays helped popularize hash table–like data structures and shaped later languages such as Perl, JavaScript, and Python, contrasting this with the deeper but lower‑level impact of C. The thread also revisits the constraints of early Unix systems, compares modern Awk implementations, and points to longer-form interviews and books for those interested in Kernighan’s work.
Reaction to the Interview & Title
- Some were surprised by how short the interview was (only three questions).
- Debate over calling him “Awk creator”: some feel it undersells his broader role in C and Unix; others say it’s appropriate given the article’s Awk focus and that many don’t know he co-created Awk.
Awk vs C and Language Influence
- One view: Awk was as significant an accomplishment as C, citing languages influenced by each (C → C++, Java, C#; Awk → Perl, Tcl, JS, Python, Lua).
- Counter-view: C is more fundamental because many of those languages and operating systems are written in C.
- A nuanced position argues “influence” depends on abstraction layer; saying C is more influential because Awk is written in C is likened to saying transistors are more influential than C.
Associative Arrays and Historical Context
- Long, detailed subthread on associative arrays:
- Awk’s central idea was built-in associative arrays, inspired by SNOBOL4 tables and contemporary research.
- Discussion of earlier or parallel mechanisms: Lisp alists and property lists, database/file systems, and various hashing literature.
- Some argue Lisp’s structures don’t match Awk-style, general-purpose, built-in associative arrays.
- Timeline explored for SETL → ABC → Python, and how maps/tables/dicts evolved, including syntax parallels and implementation (hash tables vs trees).
- Debate on whether associative structures were “newish” when Awk appeared; consensus: data structures weren’t new, but making general-purpose associative arrays a core language feature was.
Unix, Awk Design, and Constraints
- Reading classic Unix texts leads some to see Awk as an early ancestor of modern scripting languages (JS, Lua, Python, Perl, Tcl), especially via associative arrays.
- Others note many Unix design choices (everything as strings, null-terminated strings, shell word-splitting, poor quoting, limited types, various UI limitations) made sense under PDP‑11 constraints but feel dated now.
Awk Implementations and Successors
- Multiple current Awk implementations discussed: “One True Awk” (nawk), mawk, and gawk.
- Historical note on early Awk (“oawk”) lacking user-defined functions.
- Comparisons of executable size and implementation style with early tools like Turbo Pascal.
Tooling, Hash Tables, and Practice
- Mixed recollections: some recall hash tables as standard fare since early CS education; others recall many C programmers in the 1990s still seeing them as advanced or “exotic.”
- Recognition that later languages (Perl, then PHP, Python, JS, etc.) normalized hashes/dicts as everyday tools.
Media & Further Resources
- Multiple longer interviews and books are recommended for deeper context, including broader histories of Unix and Awk.
- Video interviews on various channels are praised; some find the interviewers too uncritical of controversial guests, others appreciate broad, nonjudgmental coverage.
Meta / Miscellaneous Themes
- Commenters note the “01979”-style years as a nod to long-term thinking (Long Now style); some find it clever, others distracting.
- Nostalgia for classic books (C book, Unix books, magazines) as pre-internet “Stack Overflow.”
- Brief, contentious aside claiming many modern GitHub programmers may surpass early legends, prompting pushback and questions about how to measure “better.”