I started with C, and if you don't dive to deep into it, you can get a pretty good concept of program structure, what a function is, what a pointer is and all sorts of concepts that extrapolate easily in other languages.
I'm grateful to have learned on a strongly typed language first, the thing about students is that sometimes they're easily demotivated, my University switched to python after teaching C first, after learning python there were a lot of student complaints asking why C was so complicated and why did they need to have static typing, and it wasn't natural to them to think about compiling as a normal step in software development.
This sounds like a survivorship bias. I'm willing to bet that if someone such as yourself (who is motivated to learn C) started with a weak/duck typed language, you would have maintained motivation, and later moved onto something like C, feeling grateful to be learning C. i.e. who you fundamentally are is not altered by the language you first start learning.
Now take the reverse. If someone who is not motivated to learn C started out in Python, they're more likely to stay motivated, perhaps never learning strong typing. If you start them on C, they lose interest and the field loses a valuable addition.
Not everybody has to learn C or static typing or pointers. It's okay for people to have a narrow programming/comp sci scope and still enjoy the field.
I learned C as my first language and suggest it as first language. And I think it is relatively small language, (discounting all the different details open to implementation not covered in the spec).
One thing I would miss as a beginner is repl. Because, that is how I later learned bash with constant feedback and constantly tweaking the input code until the computer stops swearing at you. Also, it was really fun way to learn language, one small piece at a time. Other than that, I do not consider C to be a particularly hard language.
But, if your goal is to learn a language with modern OOP design, then you should go for python or ruby IMHO. It is much better than Java, (even to do anything you have to create a class with main with so many modifiers). I think that would the reason to learn python, because structuring the code is archaic or at least different from how other mainstream languages in C and can be a hurdle for newbie who want to scale up their programs.
I think good about python is being simple and also having features that are mainstream that translates various other mainstream languages. But, should I care about that as a newbie is an entirely different thing.
Why would they lose motivation with C? Its really not that difficult. At least not compared to something like haskell or even something like python at times (are dictionary comprehensions actually that easy from a syntax POV? What about how copying a dictionary isn't an element by element copy, but a reference/ptr copy?)
Even with undefined behavior (which a newbie won't really have to care about at the beginning IMO) C is relatively simple from a flow and structural point of view. If you are saying you can do cooler things in python than C at the beginning, that's probably true, but its unclear how many people drop CS because the language they are using doesn't enable easily making cool things.
> Why would they lose motivation with C? Its really not that difficult.
This is the confusion right here. You're underestimating what is difficult to other people.
As a friendly internet stranger with modest leadership experience, I would very gently suggest to be cautious of this pitfall. When we think like this, even if it's just coming from a place of logic, we can very easily send the wrong signal. We can make people feel stupid, and wonder why we're being critical of them.
I think it helps motivate beginners if you pick a stack that allows them to create a modern UI, even if the functionality is something as useless as a vuvuzela app.
No, it isn't. There isn't consensus on what weakly/strongly typed actually means, but C is strongly typed (with some unfortunate loopholes) by most definitions.
I'm grateful to have learned on a strongly typed language first, the thing about students is that sometimes they're easily demotivated, my University switched to python after teaching C first, after learning python there were a lot of student complaints asking why C was so complicated and why did they need to have static typing, and it wasn't natural to them to think about compiling as a normal step in software development.