Estoy totalmente de acuerdo contigo, el tema de aprender a programar de manera autodidacta es determinante en esta situación, y así mismo, si te tocan malos profesores que te enseñen a programar utilizando Python, se genera el mismo problema...
El tema fundamental para mí pasa por el hecho de que si bien programar puede ser una tarea sencilla, sólo en el caso de que logre pensar en términos de programación, y se logre razonar con el nivel de abstracción requerido, o se logre organizar la información de la manera correcta (esto es, entrenar la mente para esta tarea) se logrará ser un buen programador, y disfrutar de esta actividad, que en realidad tiene mucho de arte.
Entonces vuelvo a lo dicho: por mi experiencia personal, en caso de utilizar un buen libro como el que mencioné al principio, y un lenguaje como Pascal o JAVA, considero (y tengo muchos casos de ejemplo en que esto se cumplió a la perfección) que se puede aprender de manera auto-didacta, dirigida por el libro y por nuestro deseo de aprender, y nuestra curiosidad, y desarrollar la mente en el sentido en que se necesita hacerlo, y a su vez dejarla preparada para continuar aprendiendo toda la vida.
Considero que Python no es un buen lenguaje para quién recién comienza, pues es un lenguaje de programación que pretende reducir y simplificar las cosas, muchas veces utilizando atajos que no quedan claros para quién recién arranca, que necesita que todo sea lo más explícito posible, lo más claro posible... Caso de ejemplo puntual con Python es cuando se pretende enseñar a recorrer listas utilizando contadores y variables de control de ciclos, puedo hacerlo de la siguiente manera:
for elemento in lista:
print(elemento + "\n")
Estamos de acuerdo que esto es super sencillo, tal vez hasta facil de entender con la simple lectura, pero aquí lo que hay es un ciclo "foreach" camuflado... Para quién recién comienza no es una idea natural, además, en la gran mayoría de los lenguajes de programación que se utilizan hoy en día possen estructuras de control extremadamente parecidas, por lo tanto, creo que siempre es mejor aprender un estandar y luego aprender lo demás (análogo a aprender inglés Británico para luego aprender cualquier otra variante del mismo idioma, lo importante es saber lo básico y crear sólidas bases a partir de las cuales podamos pensar).
Personalmente creo que códigos como los siguientes:
// Java.
for(i=0; i<lista.length; i++){
System.out.println(lista[i]);
}
// PHP.
for($i=0; $i<$lista.length; $i++){
echo $lista[$i];
}
// Javascript.
for(i=0; i<lista.length; i++){
console.log(lista[i];
}
Son mucho más sencillos de entender, a pesar de ser más complicado de ver a simple vista que es lo que hacen, existe un procedimiento estandar para recorrer una lista según el índice de la misma, que es similar en los 3 lenguajes ejemplificados y en muchos lenguajes más. Obviamente en caso de Python también se puede recorrer una lista mediante una variable de control que vaya tomando los valores de los índices... de esta forma:
// Python.
for i in range(0, len(lista)):
print(lista[i])
Otra vez vemos que aparece un foreach camuflado, que va almacenando en la variable i cada uno de los valores de la lista temporal generada por la instrucción range en cada uno de las vueltas del ciclo... Considero que cuando recién se comienza esto puede ser tremendamente dificil de entender, y provoca que se vean las listas y los ciclos como algo mucho más complejo de lo que realmente son.
Ejemplos como estos tengo muchos, no quiero escribir en exceso para que no resulte pesado, pero podríamos hablar incluso de lo dificil que es buscar errores de cualquier índole en un código escrito en un lenguaje que no utiliza llaves ni paréntesis para marcar los comienzos y finales de los bloques, o entender algunos comportamientos extraños que ocurren cuando algo no queda bien indentado y no genera error fatal, y al mismo tiempo los problemas que se pueden generar con un lenguaje que no es tipado pero que muchas de sus operaciones requieren que los datos sean convertidos a un tipo determinado para poder llevarse a cabo (cosa que no ocurre con PHP por ejemplo, donde no debo preocuparme de este detalle de manera directa en la mayoría de los casos) y bueno... En fin, hay muchísimos motivos más.
Espero todas las críticas y opiniones que les surgan.
El libro se llama "Programación con Pascal" es de John Konvalina. Está para fotocopiar en la fotocopiadora del CEI (FING)me intereso todo lo que dijiste. Como se llama el libro de pascal?
salu2
¡Saludos a todos!