Comment on: I want to learn C
Plus once you know C, you can write your own lightning fast extension modules for Python using the Python C API. It's so satisfying to be able to use your heavily optimized C routines in a scripting language.
Comment on: I want to learn C
C is not difficult to learn, so don't sweat it. Especially if it's not your first programming language (even if it's your first type-safe language). Get good at the simple stuff like fast arithmetic, memory bookkeeping and debugging, then dive into either the Python C API or C++14 (why not both?).
Comment on: What do you guys think of NASA's programming guidelines? Are they too strict or do they make sense when code correctness is life-or-death?
No direct or indirect recursion? Not even compile-time? Just shoot me. And fixed upper-bound requirement for loops, restriction on dynamic memory allocation and no function pointers... well that certainly reduces the complexity of the programs you'll be able to write. I suppose that's the intention.
More critically, I see sensible requirements for checking validity of parameters and return values of non-void functions. No mention of exception handling apart from assertions though. I would definitely like to see sections on load balancing, threading, resource management, feedback loop control and recovery from critical and non-critical failures.
Yeah ctypes are neat, although I prefer numpy arrays and binary structs, but the real boon is the ability to expose OOP interfaces by defining new type objects. Coupled with C++14 templates and a reasonably thought-out code convention (such as abstract class interfaces with anonymous nanespace impls), writing Python extensions is so much fun.