Pascal was often used as a teaching language specifically because C was too low-level for many beginners. Python is often used now days. I think it's important to give beginners an easy start where they pick up the mental process of solving problems with code and libraries with steadily increasing rewards & difficulty. C is the wrong start for that.
What I'm uncertain about now is if they should start with dynamic or static language. Starting with something like Python gets them results and basic skills quickly. Might even maintain interest by being a break from the hard stuff in lower-level languages. After Python, something like Oberon or Go that's statically-typed, closer to the metal, and still easy to work with. I'd have said Oberon in past due to simplicity but a Go subset might be better today due to all Python to Go articles. They can do some work in Go to see benefits of static types, do algorithm optimization, whatever. Only then do they learn C with early intro on its pitfalls, undefined behavior, and efficiency advantages. They need to see how each thing helps, hurts, and is properly used. Then maybe a standard library re-implementation starting with a simpler one.
That's how I'm seeing the process in my head. Side-benefit is you get usable, job skills if you make it through any stage. Just don't drop out before done with Python. :)
Comments
Pascal was often used as a teaching language specifically because C was too low-level for many beginners. Python is often used now days. I think it's important to give beginners an easy start where they pick up the mental process of solving problems with code and libraries with steadily increasing rewards & difficulty. C is the wrong start for that.
What I'm uncertain about now is if they should start with dynamic or static language. Starting with something like Python gets them results and basic skills quickly. Might even maintain interest by being a break from the hard stuff in lower-level languages. After Python, something like Oberon or Go that's statically-typed, closer to the metal, and still easy to work with. I'd have said Oberon in past due to simplicity but a Go subset might be better today due to all Python to Go articles. They can do some work in Go to see benefits of static types, do algorithm optimization, whatever. Only then do they learn C with early intro on its pitfalls, undefined behavior, and efficiency advantages. They need to see how each thing helps, hurts, and is properly used. Then maybe a standard library re-implementation starting with a simpler one.
That's how I'm seeing the process in my head. Side-benefit is you get usable, job skills if you make it through any stage. Just don't drop out before done with Python. :)