On 2013-12-17, Wolfgang Keller <felip...@gmx.net> wrote: >> I was also taught C as an undergrad but having already learned Java, C >> and C++ before arriving at University I found the C course very easy >> so my own experience is not representative. Many of the other students >> at that time found the course too hard and just cheated on all the >> assignments (I remember one students offering to fix/finish anyone's >> assignment in exchange for a bottle of cider!). > > The problem with the C class wasn't that it was "hard". I had passed my > Pascal class, which taught nearly exactly the same issues with > "straight A"s before (without ever having writeen any source code ever > before). And by standard cognitive testing standards, I'm not exactly > considered to be an idiot.
I agree that C is a awful pedagogical language. When I was in university, the first language for Computer Science or Computer Engineering students was Pascal. After that, there were classes that surveyed Prolog, SNOBOL, LISP, Modula, APL, FORTRAN, COBOL, etc. If you were an "other" engineering/science major, you learned FORTRAN first (and last). I think there may also have been some business types who were taught BASIC. C wasn't taught at all. When I graduated and started doing real-time embedded firmware, the choices were Generally C or Pascal. The first projects I did were in Pascal, but I learned C because the development host was a PDP-11 running Unix and I needed to write some small (non embedded) utilities. Today, all my embedded work is in C. Python fell out of style for some reason, but (with a few extensions) it was a fine language for embedded work as well. I've always thought C was a great language for low-level, bare-metal, embedded stuff -- but teaching it to first or second year computer science students is just insane. C has a certain minimalist orthogonality that I have always found pleasing. [People who smile wistfully when they think about the PDP-11 instruction word layouts probably know what I mean.] But, exposure to C should wait until you have a firm grasp of basic algorithms and data structures and are proficient in assembly language for a couple different architectures. Ideally, you should also have written at least one functioning compiler before learning C as well. -- Grant Edwards grant.b.edwards Yow! Maybe we could paint at GOLDIE HAWN a rich PRUSSIAN gmail.com BLUE -- -- https://mail.python.org/mailman/listinfo/python-list