#109 – Brian Kernighan: UNIX, C, AWK, AMPL, and Go Programming
Jul 18, 2020
auto_awesome
Brian Kernighan, a renowned professor at Princeton and co-author of 'The C Programming Language,' dives into the fascinating history of Unix and its evolution from proprietary to open-source. He discusses the artistry versus science debate in programming and highlights innovative languages like AWK, AMPL, and Go. Kernighan shares insights on learning new languages, the impact of programming on communication, and reflections on the early days of AI, merging nostalgia with a vision for the future of technology.
Programming languages have evolved over time, with C focusing on expressiveness, efficiency, and portability.
Providing practical examples in programming aids in understanding core concepts and facilitates learning.
Modern languages rely on libraries for enhanced functionality, balancing efficiency with potential code complexity.
Deep dives
The Evolution of Programming Languages
Programming languages have evolved over time, starting with crude assembly languages in the late 1940s and early 1950s, leading to higher-level languages like Fortran, Cobol, and Algol in the late 1950s and 1960s. C emerged in the 1970s, offering a balance of expressiveness and efficiency, with a portable nature due to its association with Unix. System programming languages like C++ followed, emphasizing data structuring and efficiency. Later languages like Go focused on concurrency and offered an easy model for parallel computation.
The Power of Examples in Programming
Examples in programming serve as practical guides for users to understand how to solve real tasks. Brian Kernighan emphasizes the importance of providing examples that are representative of common programming needs and are easy for users to modify to suit their requirements. Examples help users grasp the core concepts and structure of a language, facilitating their learning process.
The Influence of Libraries in Modern Programming
Modern programming languages like Python and JavaScript heavily rely on libraries to enhance functionality and efficiency. Unlike earlier days when programmers built everything from scratch, leveraging libraries enables developers to access pre-written code segments for specific functionalities, saving time and effort. However, the proliferation of libraries may lead to uncertainty about the code's quality and origin, adding complexity to the development process.
Programming Languages Diversity and Evolution
The discussion highlights the importance of variety in programming languages and the value they bring in exploring new ideas. The episode mentions that while there are numerous programming languages in use, only a few account for the majority of programming. However, the introduction of new languages, like functional languages, often leads to innovative ideas that eventually influence mainstream languages.
Ample Language and Mathematical Programming
The episode delves into the creation and functionality of the Ample language designed for mathematical programming and optimization. It explains how Ample allows users to set up linear equations and constraints for optimization problems, providing a formal and effective way to solve complex optimization challenges. The conversation emphasizes the importance of separating the model, constraints, and data in mathematical programming for efficient problem-solving.
Brian Kernighan is a professor of computer science at Princeton University. He co-authored the C Programming Language with Dennis Ritchie (creator of C) and has written a lot of books on programming, computers, and life including the Practice of Programming, the Go Programming Language, his latest UNIX: A History and a Memoir. He co-created AWK, the text processing language used by Linux folks like myself. He co-designed AMPL, an algebraic modeling language for large-scale optimization.
Here’s the outline of the episode. On some podcast players you should be able to click the timestamp to jump to that time.
OUTLINE:
00:00 – Introduction
04:24 – UNIX early days
22:09 – Unix philosophy
31:54 – Is programming art or science?
35:18 – AWK
42:03 – Programming setup
46:39 – History of programming languages
52:48 – C programming language
58:44 – Go language
1:01:57 – Learning new programming languages
1:04:57 – Javascript
1:08:16 – Variety of programming languages
1:10:30 – AMPL
1:18:01 – Graph theory
1:22:20 – AI in 1964
1:27:50 – Future of AI
1:29:47 – Moore’s law
1:32:54 – Computers in our world
1:40:37 – Life
Get the Snipd podcast app
Unlock the knowledge in podcasts with the podcast player of the future.
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode
Save any moment
Hear something you like? Tap your headphones to save it with AI-generated key takeaways
Share & Export
Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode