5 ms·
Until not too long ago, De Anza College still taught C as an introductory programming language (I think because some recently retired instructors wrote a textbo
by ZanyProgrammer 11y ago
Until not too long ago, De Anza College still taught C as an introductory programming language (I think because some recently retired instructors wrote a textbook on it). Even now, from what I've seen of the syllabi online, their C++ course that replaced it is still mostly C with some sprinkling of classes added on.
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.
- ldjb 11y agoI 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.
- distances 11y agoMy 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.
- gjulianm 11y agoMy 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.
- ldjb 11y agoI 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.
- ctdonath 11y agoIf 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.
- bxh 11y agoI 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.
- robotresearcher 11y ago> 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.