My experience is the reverse. I think that beginning with C gives you the necessary knowledge of the inner workings of programs and systems that is required if you want to end up with a degree in CS/CE/similar. I've seen too many programmers that started with Java or Python and then didn't know what exactly is memory, what is "allocation" or similar concepts that are required if you want to understand what's going on with your programs.
I do think C is a very useful programming language to learn. Certainly, concepts like memory and pointers can be crucial knowledge. But I disagree that C needs to be a programmer's first language. I've seen plenty of programmers who started out with Python or Java, then later went on to learn C and were none the worse. I myself started out with Visual Basic. Just because you didn't start out with C doesn't mean you can't subsequently learn it and low-level concepts.
If you're going for a full-stack CS or CE degree, yes: start with a low-level near-bare-metal language and work up from there. One may need Java et al to initiate interest in such details, but once the path is started get down to basics ASAP and build up from there.
I agree. Furthermore, I think pointers in C is a simple concept that becomes incredibly powerful, and also gives a lot of insight into how memory works and the different data structures.
I agree. When starting out with programming, the most important aspect to learn about is the program logic. Syntax and implementation details that are not strictly necessary just get in the way and are likely to confuse students. Once you're comfortable writing algorithms, then you can move onto languages with more complex syntax and features.
That said, you could do a lot worse than C for an introductory programming language.
My university used Scheme (a Lisp derivative) as the first programming course language, and these were some of the reasons why I found that an excellent choice.
Some other points being that most people start on the same level, and functional languages allowing the construction of many concepts that are not part of the language itself.
Re:Why Learn to Program in C?
by robotresearcher on Monday February 01, 2016 @12:40PM
(#11013439)
> not get bogged down in pointer hell
No one should get bogged down in pointer hell. I program C for real work all the time, and I teach it to undergrads, and we use pointers carefully and with awareness. We don't do arithmetic or other 'clever' stuff. And we don't get bogged down in pointer hell.
Why do we teach it to undergrads? Among other reasons, because trying to teach OS or compilers to students who don't get pointers or any other low-level stuff is miserable.
I thought it was a horrible idea, and I had a pretty miserable experience at De Anza. If you're just starting out programming, you should simply get used to writing code, and not fighting low level details of the language. C is the kind of thing that is useful, perhaps only as an advanced undergraduate course. Most beginning programmers need to start writing code, not get bogged down in pointer hell. And obviously most beginning programmers aren't going to be hacking away at *nix kernels or anything advanced like that.