How does your school/university teach it? What have been the pros and cons of that choice?
Obviously, teaching students logical and foundational concepts is the most important part, but a student’s first programming language does color their internalization of the concepts and how they approach solving different problems. For example, OOP is really hard to grasp coming from a functional background. Learning how to manage memory efficiently and use appropriate data types is really hard coming from an interpreted language like Python or Javascript. What have you and your peers decided works best for you and your students?
I wish I started with Golang! To me it has the perfect balance of simplicity and power. You need to care about types but only a little bit. Most everything you need is in the standard library. It can be shared very easily as a binary. The concurrency model is quite different than anything else but that could be out of scope for a beginner language. Go also has memory areans (in experimental) and generics so there is enough to chew on for the more advanced students as well.
I went from python and JavaScript to rust and now I’ve settled onto Go. Python really hurt the way I understand programming as a whole and rust mostly corrected that but is overkill for most things I do.
How did Python hurt your understanding of programming?
No types, anything async is a pain, the strong push for OO, no errors as values, std lib is not the most extensive, pip/virtual environments are cumbersome and hardly portable, and I find it’s ability to do everything well hampers its ability to do something specific well. Not that any of these actually regressed my understanding of programming, they merely slowed my development. After some time spent in rust and golang I have a much deeper understanding of programming/cs in general.