Published Nov 7, 2019

Bjarne Stroustrup: C++ | Lex Fridman Podcast #48

Bjarne Stroustrup, creator of C++, delves into the fascinating journey of the language's standardization, its evolution alongside modern software systems, and the philosophical underpinnings of programming design. He highlights C++'s pivotal role in balancing efficiency and abstraction, impacting the technological landscape significantly.
Episode Highlights
Lex Fridman Podcast logo

Popular Clips

Episode Highlights

  • Evolution

    Bjarne Stroustrup shares the evolution of programming languages, highlighting the groundbreaking impact of Fortran. Before Fortran, coding was machine-specific, but it introduced a language that allowed engineers and physicists to write in human terms, leading to portability and efficiency 1. This marked a significant shift towards human-centric programming languages. Bjarne recalls his journey through various languages, finding beauty in low-level languages like Assembler and Microcode, before discovering the power of Simula, which introduced object-oriented programming 2.

       

    OOP Emergence

    The emergence of object-oriented programming (OOP) was a transformative leap in software development. Bjarne explains how Simula's introduction of classes and inheritance allowed programmers to manage complexity by relating types, such as vehicles, through commonalities and differences 3. This abstraction enabled more efficient and flexible code, a concept that was not immediately obvious but became foundational in languages like C++ 4. He emphasizes the importance of creating types that align with specific problems and constraints, which was a key takeaway from Simula's influence.

       

    Abstraction

    Abstraction in programming allows for efficient and high-performance code without sacrificing clarity. Bjarne discusses the concept of abstraction, emphasizing that it should not incur additional costs compared to lower-level coding 5. He highlights the role of concepts in C++, which enable programmers to define and enforce type properties, ensuring code efficiency and flexibility 6. This approach allows for the creation of clean, maintainable code that can outperform hand-optimized lower-level code, demonstrating the power of modern programming abstractions.

Related Episodes