Eu acho que o Python é uma linguagem completamente errada para ensinar programação, a não ser para não-informáticos.

É uma linguagem demasiado alto-nível, com demasiados automatismos e simplificações. Quem começa por este tipo de linguagens nunca vai tolerar linguagens low-level como o C ou o C++, nem nunca vai conseguir interiorizar a relação dos mecanismos que as linguagens de programação fornecem com a forma como o hardware os trata (essencial para desenvolver software performante).

É como ensinar a conduzir com caixa-automática. Nem percebem como o carro funciona, nem nunca mais querem conduzir um carro com caixa manual.

Também não digo que o C seja a melhor linguagem, porque não é (demasiado low-level). Nem sequer o Java (impossível fugir à orientação por objectos).

Eu ainda acho que o Pascal standard é a melhor linguagem para ensinar os conceitos básicos de programação. É uma linguagem verbosa, simples e bem definida (os erros dos compiladores são normalmente claros e directos). E ainda por cima é uma linguagem quase irrelevante no mundo real o que faz com que os alunos se preocupem em aprender, em vez de criarem vícios.