247: He's Not Going to Cut That, Is He?

Embedded.fm · 1 Jun 2018 · 1h 10m · Episode 247

What this episode covers

Jason Turner, host of CPPCast and C++ Weekly, discusses modern C++ (C++11 through C++17) for embedded systems, arguing that the language's 'zero overhead abstractions' allow high-level code to compile to efficient assembly. He explains how features like lambdas, `std::array`, and `constexpr` enable compile-time computation and optimization, often using Matt Godbolt's Compiler Explorer to demonstrate that the compiler generates optimal code without dynamic allocation. Turner advises embedded developers to trust the compiler, avoid dynamic memory and exceptions, and learn C++17 to leverage these efficiencies while managing template bloat.

Most relevant to

makers and hobbyists

Topics

Mentioned

Chips
AVR, ARM
Tools
Compiler Explorer, GCC, Clang
Also
CPPCast, C++ Weekly, Matt Godbolt, Odin Holmes, Embo++, Meeting C++, cppreference.com, Commodore 64, Arduino, Bjarne Stroustrup

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.

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

  • The Pragmatic Embedded Podcast · 49m

    Buzzword Bingo (or: which modern technologies make sense for embedded?)

    Hosts Jeff Gable and Luca Ingianni evaluate modern development buzzwords for embedded systems, discussing the applicability of web technologies like Kubernetes and Docker, the nuances of CI/CD pipelines, and the practical adoption of Rust and modern C++. They highlight specific tools such as Memfault, Mender, and Renode for observability and simulation, and analyze the role of AI in both device-side machine learning and developer productivity.

  • The Pragmatic Embedded Podcast · 35m

    Rust with Milica Kostic

    Milica Kostic, an embedded software architect with a background in electrical engineering and safety-critical industries like medical devices, discusses her journey from C/C++ to adopting Rust in production. She explains that the most successful adoption occurred in a greenfield embedded Linux project using a microservice architecture, which allowed for clean isolation of Rust code and minimized complex C/C++ interoperability challenges. Kostic highlights the benefits of Rust's tooling, such as Cargo and built-in static analysis, while noting current limitations in microcontroller support, IDE tooling, and certified stacks like BLE.

  • Oxide and Friends · 1h 39m

    Settling Beef

    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.

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