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.”