Personally, I think C and C++ are terrible first programming languages. C is a great language for writing compact code that maps directly into machine language, but for teaching programming concepts IMO you're much better off with a less compact language that clarifies the concepts you're trying to teach.
I voted for Pascal. It was designed from the beginning to teach good programming practices like block structuring, declaring variables before using them, and procedure/function calls. Implementations include bounds checking on arrays so you're less likely to stomp on the wrong memory location, something easy to do in C and hard for a newbie to debug. Implementations also tend to have better compiler error messages than C.
After Pascal, I think an assembly language should come next. C is IMO better learned after assembly language, since in many ways C is a portable assembly language that uses high-level notations. IMO you're going to be a better C programmer if you're familiar with ASM, and you'll be in better shape to debug run-time errors that can only be understood at the ASM level.
Alert readers will notice that I didn't say when to add C++.
I haven't studied Python enough to form an opinion.
Personally, I think C and C++ are terrible first programming languages. C is a great language for writing compact code that maps directly into machine language, but for teaching programming concepts IMO you're much better off with a less compact language that clarifies the concepts you're trying to teach.
I voted for Pascal. It was designed from the beginning to teach good programming practices like block structuring, declaring variables before using them, and procedure/function calls. Implementations include bounds checking on arrays so you're less likely to stomp on the wrong memory location, something easy to do in C and hard for a newbie to debug. Implementations also tend to have better compiler error messages than C.
After Pascal, I think an assembly language should come next. C is IMO better learned after assembly language, since in many ways C is a portable assembly language that uses high-level notations. IMO you're going to be a better C programmer if you're familiar with ASM, and you'll be in better shape to debug run-time errors that can only be understood at the ASM level.
Alert readers will notice that I didn't say when to add C++.
I haven't studied Python enough to form an opinion.
Top Comments