Página original: http://pine.fm/LearnToProgram/
Un lugar para que inicien los futuros programadores
Todo inició en 2002. Estaba pensando en enseñar programación, y en lo bueno que sería el lenguaje Ruby para aprender a programar. Todos estabamos emocionados porque Ruby era poderoso, elegante, y sencillamente divertido, pero pero también me parecía una gran forma de iniciar en la programación.
Desafortunadamente, no había mucha documentación de Ruby para principiantes en aquellos tiempos. Algunos en la comunidad deciamos que un tutorial de “Ruby para principiantes” era necesario, pero mas que eso, un tutorial para aprender a programar. Mientras mas lo pensaba, mas opinaba al respecto (lo cual me sorprendió). Finalmente, alguien dijo “¿Chris, porque no escribes un tutorial en lugar de solo hablarlo?” Así que lo hice.
No era muy bueno. Tenía muchas ideas que eran buenas en teoría, pero la tarea de hacer un buen tutorial para los no programadores era mucho mas dificil de lo que imaginé. (Yo lo veía bien, pero yo ya sabía como programar.)
Lo que me ayudo fue el hecho de que hice que la gente pudiera contactarme facilmente, y siempre trate de ayudar a la gente cuando se atoraban con algo. Cuando vi a mucha gente atorada en el mismo lugar, entonces lo volvía a escribir. Fue mucho trabajo, pero poco a poco fue mejorando.
Despues de unos años, mejoro bastante. :-) Tan bueno, que ya estaba listo por darlo como finalizado y dedicarme a otra cosa. Y en ese momento se me presentó la oportunidad de convertir el tutorial en un libro. Como basicamente ya estaba hecho, me imaginé que no sería problema. Solo pulí algunos puntos, agregué mas ejercicios, mas ejemplos, mas capitulos, lo revisaron mas de 50 personas…
Me tomó otro año, pero ahora creo que es realmente bueno, mas que nada por los cientos de personas que me ayudaron a escribirlo.
Lo que está en este sitio es el tutorial original, no ha cambiado desde el 2004. Para la ultima (y mejor) version, tal vez sea mejor que compres el libro.
Para los maestros
Hay algunos principios en los cuales intenté mantenerme. Creo que estos principios hacen el proceso de aprendizaje mas sencillo; de por si aprender a programar ya es dificil. Si estas enseñando o guiando a alguien al camino de la programación, estas ideas te pueden ayudar.
Primero, trate de separar los conceptos lo mas posible, asi los estudiantes solo tienen que aprender un concepto a la vez. Esto fue dificil al principio, pero con la practica se hizo mas facil. Algunas cosas tienen que ser enseñadas antes que otras, pero me impresionó la poca jerarquía de precedencia existe. Con el tiempo solo elegí un orden y traté de acomodar las cosas para que cada sección nueva tuviera continuidad con las anteriores.
Otro principio que tuve en mente fue enseñar solo una manera de hacer algo. Es un beneficio obvio en un tutorial para personas que nunca han programado antes. Para una cosa, una manera de hacer las cosas es mejor que aprender dos. Tal vez el beneficio mas importante es que, cuando le enseñas menos cosas a un programador nuevo, tienen que ser mas creativos e ingeniosos para programar. Ya que la programación involucra mucha resolución de problemas es necesario alentarlos lo mas posible en cada paso.
He intentado sentar las bases de los conceptos de programación en los conceptos que los programadores nuevos ya tienen, para presentar las ideas en una manera que su intuicion los guíe. La Programación Orientada a Objetos nos ayuda bastante en esto. Fui capaz de referirme a “objetos” y diferentes “tipos de objetos” al principio del tutorial de la manera mas inocentemente posible. No decía nada como “todo en Ruby es un objeto,” o “los numeros y cadenas son tipos de objetos,” porque estas frases no significan nada para un programador nuevo. En cambio, hablaba de cadenas (no “tipo de objeto cadena”), y algunas veces me refería a “objetos”, refiriendome a “las cosas en estos programas.” El hecho de que todas estas cosas en Ruby sean objetos facilitaron que pudiera introducir todos estos conceptos sin que se notara mucho.
Aunque quise evitar la jerga de Orientacion a Objetos, quise asegurarme que, si necesitaban aprender una palabra, aprendieran la palabra correcta. (No quiero que tengan que aprenderlo dos veces, o si?) Así que los llame “cadenas” y no “texto”. Los Metodos tambien necesitaban ser llamados de alguna manera, asi que los llamé “metodos.”
Respecto a los ejercicios, creo que puse algunos muy buenos, pero nunca pueden ser suficientes. Estoy casi seguro que dedique la mitad de mi tiempo imaginando ejercicios divertidos e interesantes. Los ejercicios aburridos quitan las ganas y deseos de programar, mientras que los ejercicios perfectos hacen que den ganas de resolverlos. Aunque no siempre se puede usar mucho tiempo para crear buenos ejercicios.
Acerca del tutorial original
Las páginas del tutorial original (en ingles) fueron generadas usando un programa en Ruby. Y por lo tanto tienen unas funciones interesantes. Por ejemplo, todos los codigos de ejemplo se ejecutan cada vez que ves la página, y el resultado mostrado es el resultado que generan. Creo que esta es la mejor manera de estar seguro que el codigo mostrado funciona exactamente como debe de funcionar. No tienes que preocuparte de que haya copiado mal el resultado de los ejemplos, o de que haya olvidado probar algun codigo; todo es probado cada vez que lo ves. Así que en la sección de numeros aleatorios, si actualizas la página, veras los numeros cambiar cada vez.
Agradecimientos
Finalmente, quisiera agradecer a la lista de correo ruby-talk por su apoyo, a todas las personas que revisaron mi trabajo y que me ayudaron a hacer el libro mejor de lo que hubiera podido hacer solo, a mi querida esposa especialmente por ser mi principal tester/musa/crítica, Matz por crear este fabuloso lenguaje y a Pragmatic Programmers por ofrecerme, y por supuesto, publicar mi libro!
Si ves algun error, o tienes una sugerencia o comentario o algun buen ejercicio que deba incluir, por favor escribeme un correo.
Etiquetas: Programación, Ruby, Tutorial







