Why C? Refuting C++ Pretentiousness
Exposing the Monopolistic Propaganda Coming From the C++ Camp
Presented by:
Stephen MacKenzie
I am a former 20 year member of the Microsoft Visual C++ Team. As a member of that team, I identified more with the C/C++ community that with the Microsoft Coporation. Now having been on my own for some years now, I am passionate about free software, hardware, firmware, and telecommunications infrastructure that respect citizens privacy and freedom.
I have developed MLibs, an open source (GPL2) suite of C and C++ Libraries and Tests that mirror standard C++ functionality for embedded and real-time environments. https://github.com/stevemac321/MLibs
My C/C++ Blog: https://stevemac123.wordpress.com/
My linked profile:https://www.linkedin.com/in/stephen-mackenzie-3a388aa0/
Overview: C++ "gurus" are anathematizing Straight C Programming. With this as a backdrop, and as a former 20 year member of the Microsoft Visual C++ Team, I provide informed and reasoned arguments backed by data and real life industry anecdotal evidence on why C Programming is still a very compelling programming language.
Full slide deck and code in the works at https://github.com/stevemac321/whyc
Page 1 Talk is NOT about C/C++ vs. Rust, Go, Python, Java, etc. It specifically refutes imperatives coming out of the C++ camp
Page 2: C++ Trying to Marginalize C++ like Andy Tannenbaum: Linux is Obsolete.
Page 3: C is NOT Obsolete; Keep Teaching C
Page 4: Its Propaganda, Dogma C++ Gurus are “preaching.”
Page 5: C Strengths C Respects You (The Spirit of C) -C Has a Small Feature Set C is a Great Language for Electrical Engineers -C Has a Stable ABI C++ breaks ABI by design every major release -C is the language of Unix-style Kernels (see man 2) -C Helps You Think Like a Computer - C++ paradigm: all about the code, real world modeling C paradigm: about the data
Page 6: C Strengths continued -Popular in the Microcontroller realm -Approved by Mission Critical Standards -Modern C++ is not allowed by MISRA etc. -IAR Embedded Workbench C++98/03 -C is able to implement C++ features Pimpl idiom (interfaces) Generics, polymorphism
Page 7: The Spirit of C (X3J11 C89 Commitee) -TRUST THE PROGRAMMER. -Don’t prevent the programmer from doing what needs to be done. -KEEP THE LANGUAGE SMALL AND SIMPLE Provide only one way to do an operation
Page 8: A Proposed Spirit of C++ -The programmer is NOT to be trusted -Don’t use pointers, use uniqueptr or sharedptr -Don’t’ use const char *, use strings -Don’t use stdio.h, use iostream -Make the language large and complex, constantly churning. -Library doubled in size 2008 TR1 -Suffers from terminal feature creep Ignore data, the code will simplify your problem. -The compiler will do it for you -Don’t try to help the compiler -Don’t engineer your own data structures and algorithms Use our library
Page 9: C Respects You; C++ Suspects You -C: Respects and empowers you. -C++: Suspects you.
Page 10: The Inconvenient Truth about Header Libraries Header based Libraries
Page 11: Serviceability -ATL Security Bug: https://msdn.microsoft.com/en-us/vstudio/ee309358.aspx?f=255&MSPPError=-2147217396
Page 12: Graphic of the ATL Bug Flowchart to determine vulnerability
Page 13: Well known critics of C++ -RMS -Mike Acton, Engine Lead, Insomnia Games @ 2014 CPPCON
Page 14: Linus on C++ Page 15: Linus on C++ continued
Page 16: Ken Thompson on C++ Page 17: Recap Recap:
- Date:
- 2018 April 28 - 07:15
- Duration:
- 45 min
- Room:
- CC-236
- Conference:
- LinuxFest Northwest 2018
- Language:
- Track:
- Code
- Difficulty:
- Medium
- The Complete History of Linux (abridged)
- Start Time:
- 2018 April 28 07:15
- Room:
- HC-108
- Documentation is Teaching, and Teaching is Everything
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-201 TUT1
- Building Your own Cloud on a Pi
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-202 TUT2
- Proxmox Hypervisor - Open Source LXC and KVM management
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-235
- Moving Forward with Firewalld
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-200
- digiKam Ninja Tricks
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-208
- Why C? Refuting C++ Pretentiousness
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-236
- IndieWeb 101: owning your content and identity
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-115
- Do Licenses Drive Communities or Do Communities Drive Licenses?
- Start Time:
- 2018 April 28 07:15
- Room:
- G-103
- Linux Jargon
- Start Time:
- 2018 April 28 07:15
- Room:
- CC-114
- Make a date with Postgres
- Start Time:
- 2018 April 28 07:15
- Room:
- HC-103 Postgres
- Linux Professional Institute: LPIC-1 Cram Session
- Start Time:
- 2018 April 28 07:30
- Room:
- HC-112 LPI