Herencia múltiple, constructores, reutilización de código, Swing... Todo muy al nivel de alguien que empieza. Mucha terminología chachi, pero para alguien que empieza, que no sabe lo que es una variable, ¿no creéis que todo eso queda un poco lejos?
Mantengo mi postura -y la de muchos, no estoy loco- de que Python es un lenguaje ideal para aprender. Algunos de los argumentos que ofreceis están sesgados: ¿herencia múltiple para alguien que empieza? ¿No poder hacer un for a la C99 es un drama cuando tienes while que es exactamente igual que en otros lenguajes derivados de C? ¿El tipado débil es un impedimento a la hora de implementar un algoritmo? La respuesta es que... no.
Lo estais reduciendo a un "for con listas vs for C99", "tipado débil vs tipado fuerte"... No va por ahí. El tema es que Python te abstrae de conceptos avanzados para programar -conceptos que puedes usar si quieres, pero no son necesarios-, y permite al programador novel centrarse en aprender lo básico: los fundamentos.
Insistís en lo de resolver problemas, y estoy de acuerdo, pero resolver problemas con clases y objetos es una manera de hacerlo de entre otras (ah, programadores new age, cuando no había objetos...), y que para dominar primero necesitas saber utilizar cosas más básicas, que puedes empezar a enseñar con Python, mientras abstraes justamente de esa complejidad.
Para decir todo esto me estoy basando principalmente en mi experiencia enseñando a gente desde cero o prácticamente cero. Siempre hay líos con el tema clases y objetos, que encima se agravan si no saben ni lo que es un bucle, o que pueden hacer return cuando quieran (parece una tontería, pero no resulta muy evidente para gente que empieza). Para vosotros resulta muy sencillo porque YA SABEIS LOS FUNDAMENTOS. Pero para alguien que no los sepa, Java -y otros muchos lenguajes- añaden complejidad innecesaria. Creo que es un tanto arrogante pretender que todos aprendan por el camino duro del REAL PROGRAMMER.
Me parece que también estais pensando que reniego de OOP, arquitectura, patrones y todo esto. No, en absoluto. Pero eso se lo enseñaría -ya lo hago, de hecho- a gente que ya sabe lo básico.
Si pido implementar un bubble sort, aprenden más fácilmente en Python -y hacen menos preguntas, y las que hacen suelen hacerlas en el momento de que sean respondidas-. Aprender Java es una excelente idea, no me cabe duda y estoy de acuerdo. Pero es poner más cuesta arriba el aprender los fundamentos de programación.