There is one camp of thought that argues that the first learned language should be C (or even some assembler). The motivation being that
- Doing everything yourself builds discipline to e.g. garbage collect
- Inventing the wheel is good for understanding the roots of more sophisticated "real" programming
- Closer to the actual hardware
- etc.
On the other hand, high level languages. like python, allow one to quickly dive into the programming world, without spending a month to learn what a pointer is.
In my country, most universities teach Java, probably for marketing reasons.
And this is without mentioning functional programming, defensive programming languages (Ada) etc.
Which languages should be learned at school and at first year CS/engineering, to prepare one's mind for a career in programming?