Presented by:

57dd5a908597ae54003f5a888dcd97f2

Stephen MacKenzie

from MLibs

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

Happening at the same time:

  1. The Complete History of Linux (abridged)
  2. Start Time:
    2018 April 28 07:15

    Room:
    HC-108

  3. Documentation is Teaching, and Teaching is Everything
  4. Start Time:
    2018 April 28 07:15

    Room:
    CC-201 TUT1

  5. Building Your own Cloud on a Pi
  6. Start Time:
    2018 April 28 07:15

    Room:
    CC-202 TUT2

  7. Proxmox Hypervisor - Open Source LXC and KVM management
  8. Start Time:
    2018 April 28 07:15

    Room:
    CC-235

  9. Moving Forward with Firewalld
  10. Start Time:
    2018 April 28 07:15

    Room:
    CC-200

  11. digiKam Ninja Tricks
  12. Start Time:
    2018 April 28 07:15

    Room:
    CC-208

  13. Why C? Refuting C++ Pretentiousness
  14. Start Time:
    2018 April 28 07:15

    Room:
    CC-236

  15. IndieWeb 101: owning your content and identity
  16. Start Time:
    2018 April 28 07:15

    Room:
    CC-115

  17. Do Licenses Drive Communities or Do Communities Drive Licenses?
  18. Start Time:
    2018 April 28 07:15

    Room:
    G-103

  19. Linux Jargon
  20. Start Time:
    2018 April 28 07:15

    Room:
    CC-114

  21. Make a date with Postgres
  22. Start Time:
    2018 April 28 07:15

    Room:
    HC-103 Postgres

  23. Linux Professional Institute: LPIC-1 Cram Session
  24. Start Time:
    2018 April 28 07:30

    Room:
    HC-112 LPI