Settling Beef

Oxide and Friends · 17 Oct 2023 · 1h 39m · Episode 28

What this episode covers

Bryan Cantrill and Adam Leventhal of Oxide Computer Company, joined by Conor Hoekstra of the ADSP podcast and Oxide colleague Cliff Biffle, discuss the cultural and technical friction between the C++ and Rust communities. They analyze how C++'s strict backward compatibility creates a 'legacy tax' that stifles innovation, leading to the creation of successor languages like Carbon and C++2. The group explores the emotional resistance engineers feel when switching languages, arguing that fear of devaluing past expertise often blocks rational technical evaluation. They conclude that learning multiple paradigms, such as Haskell or 4th, makes programmers better regardless of their primary language, and that the industry should focus on mutual learning rather than tribalism.

Other shows on the same ground, closest first.

  • The Pragmatic Embedded Podcast · 58m

    Modern C++ for Embedded with Niall Cooling

    Niall Cooling, director at Feabhas, explains how modern C++ (C++11 through C++23) enables safer, more agile embedded development by replacing C-style practices with compiler-enforced safety and modern tooling. He highlights 'quick wins' like `auto`, `constexpr`, and guaranteed copy elision, which improve code readability and performance without sacrificing the efficiency of C. Cooling argues that the true value of C++ lies in its ecosystem of header-only testing frameworks (like Doctest and Catch2), static analysis tools (Clang-tidy), and CI/CD integration, which allow teams to adopt Agile practices like Test-Driven Development (TDD) even in deeply embedded, safety-critical contexts. He contrasts this with the steep learning curve of Rust and emphasizes that successful adoption requires significant investment in training and process improvement rather than just language syntax changes.

  • Embedded.fm · 1h 19m

    137: Pausing to Think (Repeat)

    Dan Saks, founder of Saks & Associates and former secretary of the ANSI/ISO C++ standards committee, explains how C++ can be adopted in embedded systems without the overhead of the Standard Template Library (STL). He advocates for an incremental migration strategy, starting by recompiling C code as C++ and utilizing features like strict type checking, classes with access control, and function overloading to improve safety and maintainability. The discussion addresses common objections regarding dynamic memory, runtime type information, and debugging complexity, arguing that C++'s stronger type system reduces runtime errors and that modern compilers allow disabling expensive features like exceptions. Saks emphasizes separating technical language merits from social management issues, suggesting that C++ is often easier for new graduates to learn and maintain in large codebases due to its encapsulation capabilities.

  • Embedded.fm · 59m

    127: Chicken Equals Duck Plus One

    Hosts Elecia White and Christopher White discuss the future of programming languages in embedded systems, arguing that C's dominance is due to compiler optimization capabilities and industry inertia rather than technical superiority. They explore specific C features like the ISO 646.h header, review listener emails regarding career advice and tooling frustrations with OpenOCD, and examine hardware examples like the VoCore Linux board and the ESP8266 Wi-Fi chip.

  • The Pragmatic Embedded Podcast · 50m

    Exploring Rust for Embedded Systems with Philip Markgraf

    Philip Markgraf, an experienced software developer and technical leader, discusses his recent experience building an embedded device for Kelvin, a green energy company, using the Rust programming language. He contrasts Rust's memory safety, sophisticated type system, and excellent tooling with the complexities and legacy constraints of C and C++. Markgraf highlights how Rust's borrow checker and standardized libraries simplify development, improve reliability, and attract motivated engineers, while noting that adoption is still in the early stages for embedded systems compared to cloud computing.

  • Embedded.fm · 1h 10m

    248: I'm Not in Charge!

    Hosts Christopher White and Elecia White answer listener emails covering career transitions, tool selection, and embedded systems design. They discuss the value of generalist software experience for embedded roles, the importance of using established C++ safety standards like those from NASA and the F-35, and the practical benefits of tools like Beyond Compare and the Teensy Audio Library. The conversation also addresses the STEM vs. STEAM debate, the choice between bare-metal and RTOS for power efficiency, and the use of Tracery for generative art bots.

The summary, chapters and topics are generated from the episode’s audio by this directory, not written by Oxide and Friends. The episode itself belongs to its publisher.