A brief interview with Awk creator Dr. Brian Kernighan (2022)
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.”