Hawkeye22 :
I'm required to write a lot of programs in Delphi which is basicly an object oriented Pascal. Some languages are just better for writing certain types of applications. Use the best tool for the job.
Yeah, Pascal still lives through Delphi, and theres a LOT of legacy FORTRAN/Algol68 code lying around.
My main issues with starting new users out with C programming:
1: int main(int)
Before you teach a single line of code, you are introducing functions and parameter passing. Not a hard concept, but learning basic algorithms and program structure should come first. It is NOT acceptable in my mind to say "don't worry, we'll get to it later". [Could be worse though; Java has 'public static void main(string[] args)', which introduces static functions, void functions, and arrays!]
2: Header file hell
C has expanded a lot since it was introduced, mainly though header files which contain extensions to the base C language. Some are depreciated, some obsolete, some best never used. I generally see people new to C simply add specific headers to EVERY project file as a result of never knowing which ones they need [which is a very bad practice].
3: C debugging
C is NOT fun to debug. Seriously, no automatic bounds checking leads to halarity when you assign an 8 character string into a character array, forgetting the '/0' character counts. Woops, array overflow. Based on years of experience, I see people spending more time learning to debug the language then actually doing productive work.
4: C/C++ mismatch
Most C compilers support both C/C++. And because C++ was designed to be 99% comparable with C, you get a LOT of mix-matching between the two. I've seen pure C++ apps using 'printf(x)' statements instead of 'cout << x'. Again, this is due to the distinction between the two never being properly defined. [Could be worse: I've seen 'malloc(x)' paired with 'delete(x)'...]
5: Pointers/Addressing/Memory Management
C/C++ exposes a LOT of advanced features, like pointers, addressing, and memory management, and I've found in almost all cases these concepts are taught FAR too early on, leading to programmers who don't properly understand them.
Again, I'm not saying become an expert in the Algol68 syntax, I'm saying to use a basic programming language to learn the basics, then move up the evolutionary chain. Going from one programming language to another should be TRIVIAL to a programmer; the logic is exactly the same, regardless of language, the only thing that changes is how that logic is represented.