Published Mar 30, 2022

Wisdom from 50+ years in software

Brian Kernighan reflects on the transformative journey of software and computing over the past 50 years, discussing the unexpected success of the World Wide Web, the enduring impact of Unix, and the evolving landscape of programming languages like Rust and Go that shape the future of technology.
Episode Highlights
The Changelog logo

Popular Clips

Episode Highlights

  • Software Evolution

    Brian Kernighan reflects on the monumental changes in software and hardware since the 1960s. He recalls using punch cards and Fortran in the early days, highlighting the dramatic evolution to today's powerful, interconnected devices 1. "It's astonishing when you think about it," he notes, emphasizing the exponential growth driven by Moore's Law 1. Despite these advancements, Kernighan points out that some challenges remain constant, such as the need for more memory and speed to meet growing aspirations 2.

       

    C's Legacy

    The C programming language, co-authored by Kernighan and Dennis Ritchie, remains a cornerstone of software development due to its efficiency and expressiveness 3. Kernighan attributes its longevity to its adaptability to hardware advancements, from mini-computers to modern embedded systems 3. He acknowledges the challenges posed by C's memory management, noting efforts to replace it with memory-safe languages like Rust 4. "Replacing critical pieces of software with something where that memory corruption...is in effect legislated out of existence, that sounds like a great idea," he says, though he remains cautious about the feasibility of such transitions 4.

       

    Modernizing C

    Kernighan discusses the ongoing efforts to modernize C while maintaining its core strengths. He mentions initiatives like Safe C and industry standards aimed at improving C's safety without sacrificing its utility 5. Despite these efforts, he expresses skepticism about completely solving C's inherent issues, suggesting that even with improvements, "there's always going to be ways in which you can screw up" 5. The conversation touches on the balance between innovation and maintaining the reliability of existing systems, highlighting the complexity of evolving a foundational language like C 4.