>>2,3
It looks like C99 mostly concerned numerics, with some convenience changes like looser initializer syntax, designated initializers, compound literals, and flexible array members, also some things you might want to avoid using like variable length arrays and variadic macros. I see what you were saying about the language not changing much as this is considered a major release. I will keep your suggestion in mind going forward, I've acquired this version of the standard as well although truthfully with such small changes it seems almost irrelevant which I choose.
Java 7 was the last straightforward version
How backwards compatible is the Java Platform, would I be trivially able to run an application written in Java 7 on a recent release, or would the expectation be that I link to a recent release of the Java platform without using any of the newer features of the core language? (My current understanding is that the platform is too complex to understand given the time constraints anyway so it doesn't matter too much either way.)
I can't give advice on Python
Perhaps Python is not suited towards understanding.
Unfortunately, it seems likely I'll need to engage all three eventually, but I have some ability to phase them in. Assuming I'm able to reach an acceptable level of proficiency with some more general skills before the period in question I'll likely focus in the order of significance to my course load C initially, Java the year after that, and avoid engaging with Python as much as possible. I'm not particularly interested in learning different languages, especially two large languages, so overall this situation does not appeal to me.
Why would you avoid variadic macros? It's downright mindblowing what these are capable of and that's even before you start combining them with anonymous arrays. Mindblowing i tell you. Variable lengths arrays though... two words: Burn, fire.