CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++”

CppCon2 HN recommenders · 2017–2025
175K views · talk · evergreen · Uploaded 2016-09-24

Dan Saks's CppCon 2016 talk on why C programmers resist C++ and how to talk to them about it. He argues that persuasion rarely works by arguing and examines the culture gap between the two communities.

Recommended in C versus C++ and embedded threads as the expert view on adoption and persuasion.

Watch on YouTube

11 comments from Hacker News

@rjzzleep2017 · in “Comparing C and C++ usage and performance with a real world project”

according to dan saks, who apparently to some people is famous c++ is faster than c (well in the test setup he describes below) [LINK] Language Design Implementation Relative Performance either any inline 1 (fastest) C++ polystate non-inline 1.56 x fastest C++ bundled non-inline 1.65 x fastest C polystate non-inline 1.70 x fastest C bundled non-inline 1.79 x fastest C++ unbundled non-inline 1.82 x fastest C unbundled non-inline 1.95 x fastest He furthermore argued that the biggest mistakes C++ developers did to kill the adoption of C++ for C programmers was to diverge from the previous line of "C++ is a better C" to "if you're using C++ as a better C you're doing it wrong" [VIDEO] (I have no skin in the game, I was just curious to see if it's worth looking at rust for embedded when I came across that talk)

@pjmlp2018 · in “C++ and the Culture of Complexity (2013)”

I mean the embedded systems where Assembly and C89 still rule, and there is very hard to change, because the problem of adopting anything else is cultural. Basically, while there are projects being done in C++, and many companies are finally migrating from C to C++, the large majority is sticking with C. If you prefer to listen to someone actually relevant in the C++ embedded community, here is what Dan Saks has to say about it. [VIDEO] [LINK]

RecommendsView on HN
@Inityx2018 · in “Should you Rust in embedded yet?”

C is king because the industry is currently dominated by people who have been doing this since before C++ was a thing. Additionally, most of these people are primarily electrical engineers, and don't have as strong of a background in computer science. They've been using C for decades and it does everything they want, why would they take the time to learn the boundless complexity introduced by a language that offers them (what they perceive to be) very little? Talking to long-time C programmers about C++ is actually surprisingly difficult: [VIDEO]

@pjmlp2018 · in “Should you Rust in embedded yet?”

So, I will let one of the renowned experts speak instead. CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++” [VIDEO] Embedded Development with Dan Saks [LINK] Regarding Java vs C++, yes the enterprise world has adopted Java, however as someone doing consulting across Java, .NET and C++, I am really seeing it coming back since ANSI C++ has picked up steam again. I see it in projects related to IoT, AI, VR, big data,.... They are all polyglot projects with C++ plus something else, not C plus something else.

RecommendsView on HN
@pjmlp2018 · in “What can C++ do for embedded systems developers? [video]”

You can ask Dan Saks about it. CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++” [VIDEO] Embedded Development with Dan Saks [LINK] When I started coding in C++ (Turbo C++), 640 KB were just fine, I could even make use of a full TUI framework (Turbo Vision). Hence my point of view about PIC class processors with single digit KB, being eventually the only target not possible to use with C++, unless one wants to suffer a bit with linker scripts.

@pjmlp2018 · in “Rust can be difficult to learn and frustrating, but it's also very exciting”

Sure it is for political reasons when even C99 is seen as too modern, and many are unwilling to let go of C89 and Assembly even if the OEM toolchain supports modern C. And for another point of view of someone more relevant than my insignificant self, CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++” [VIDEO] "Embedded Development with Dan Saks" [LINK] Thankfully there are industry certification standards like AUTOSAR, which now require C++, so those devs can choose to keep grasping to C and switch industry or learn more modern languages.

@drummer2020 · in “Modern C++ gamedev: thoughts and misconceptions”

The mentioned cppcon presentation by Dan Saks is awesome. Highly recommend watching even if you are not interested in C or C++ : [VIDEO]

Strongly recommendsView on HN
@pjmlp2021 · in “Improve type generic programming”

Because it is a culture pretty much anti-C++, to the point that it is a common theme in C++ conferences how to succeed selling C++ to those communities, for example, "CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++” [VIDEO]

@pjmlp2021 · in “Modern C and What We Can Learn from It [video]”

It is a culture problem, something that only will change with mentality reboot. "CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++”" [VIDEO] "Writing better embedded Software - Dan Saks - Keynote Meeting Embedded 2018" [LINK] "Embedded & C++ - Meeting 2017 Keynote" [LINK] In a way, the same kind of subculture in C++ that jumps in cries of horror if you happen to use std::vector/array/string with bounds checking enabled.

@phendrenad22022 · in “The Problem with C (2020)”

I wonder if the reason for there being no C language conference is: It's generally accepted that C is "dead" or should become dead. In fact at C++ conferences you will see many anti-C talks: * [LINK] And also talks promoting proselytizing to C programmers and bringing them to C++: * [VIDEO] And of course, now, Rust is supposed to supplant C.

@pjmlp2025 · in “Defer: Resource cleanup in C with GCCs magic”

> But C++ still can't be used in many places that C is Unless we are speaking about PICs or similar old school 8 and 16 bit CPUs, with compilers like those from MIKROE, there is hardly a platform left were the vendor compiler isn't C and C++ (even if it doesn't go beyond C++11). And if it must be deployed as freestanding, there are still enough improvements to take advantage of. In the end it boils down to human factor in most cases, however as Dan Saks puts "If you're arguing, you're losing.", taken from CppCon 2016: “extern c: Talking to C Programmers about C++” [VIDEO]