Miércoles, Junio 27, 2007

Dar clase, esa experiencia.

“Everything that has a beginning has an end” y con las clases pasa igual, lo que empezó como prácticas ha acabado en examen y trabajos. En general la experiencia de dar clase ha sido realmente buena, aunque algunas cosas merecen ser comentadas ( espero leer esto dentro de unos años y reírme de mis propias opiniones ).

La Holgura del Departamento
También conocido como “Si tenemos becarios para qué vamos a contratar profesores”, la cuestión es que para que yo (un simple becario) pueda dar clase lo normal sería que otro (un profesor) dejara de dar clase y este me supervisara y fuera responsable de corregir exámenes, corregir prácticas y estas cosas por las que cobran. La realidad es que los becarios forman parte del mismo saco en el que meten a todos los demás, con menos derechos claro está, pero tienen que corregir, atender a los alumnos (dudas y tutorías)… en definitiva por el mismo precio asumimos una responsabilidad que a mi entender no nos corresponde.

La otra cara de la moneda es que nos da minipuntos para optar a una posible plaza (aunque asintóticamente esto tienda a menos infinito) y por lo menos la experiencia es curiosa.

Los niños
En realidad no son niños, alumnos de tercero-si-todo-ha-ido-bien-a-curso-por-año no se puede decir que sean niños. Su comportamiento en clase (prácticas) excelente, sus dudas justificadas y la verdad es que me ha gustado esto de verlo desde el otro lado.

Un día en clase estaba explicando con unas cuantas matrices y un vector el proceso de transformación de los puntos de 3D en espacio de objeto a 2D en la ventana final. Después de pintar unos cuantos garabatos tocaba dejar a los niños jugar con este nuevo conocimiento, vamos… probar un poco que pasaba cuando cambias esto y aquello. Al pasearme por el aula mientras los alumnos probaban cambiando valores aquí y allá pude ver reflejado en las libretas de algunos el mismo dibujo que minutos antes pintaba yo en la pizarra. En ese momento me sentí realizado como profesor, el problema es que ese dibujo sólo servía como explicación y el hecho de copiarlo realmente reflejaba que no me habían escuchado (justo lo que yo hacía). En cualquier caso este es uno de los mejores recuerdos que me llevo de este primer año.

Lo que no ha estado tan bien, pero es igualmente comprensible, es el siempre presente hecho de que las prácticas y por extensión la asignatura hay que pasarlas haciendo uso de la ley de mínimo esfuerzo. Eso lleva a que te vengan corriendo alumnos diciendo “esto no me va, no se porqué [ arrglamelo ]“, tu dices venga vamos a ver… y miras el código y sientes como si Kernighan, Ritchie o Stroustrup vinieran corriendo a darte con un bate en la cabeza.

Todo hay que decirlo, la mitad de la culpa ( bueno más bien un cuarto ) es debido a lo que se les da como ejemplo. Sinceramente penoso en muchos aspectos, lo que provoca que el copy-paste de algo malo acabe en algo mucho peor. Pero el resto hay que reconocer que es culpa de quien se sienta detrás del ordenador guiado por la ley de mínimo esfuerzo. Para que quede claro, la universidad no te va a enseñar a programar bien [por desgracia] eso es algo que sólo se aprende con práctica, con esfuerzo, con curiosidad y unas dosis de interés personal y amor propio enormes.

posteado por PpluX @ 8:47 pm tags:Crítica, Personal  

Miércoles, Junio 6, 2007

Editando con el vim, macros.

Grabar macros en vim significa ahorrarnos tener que teclear acciones repetitivas. Por ejemplo (caso ficticio) estamos en C++, tenemos que coger todos los métodos de un objeto y escribir una secuencia de acciones en otro fichero usando ese nombre de método. Más concretamente, estaba yo escribiendo unos bindings de C->lua cuando decidí que esto de las macros había que grabarlo, no os centréis en el código, lo interesante es cómo funcionan las macros en vim:

Get the Flash Player to see this player.


Si no ves bien el vídeo, puedes bajarlo de aquí.

El truco:
Editamos el fichero “test.cpp”, vamos a escribir los wrappers de “osg/Node”… tenemos algo así:

#include <osg/Node>

Movemos el cursor sobre la cabecera y tecleamos control-w f (control == tecla de control, “w” y “f” en minúsculas) con esto vim nos va a dividir la pantalla en dos, como se muestra en el screencast y en la parte de arriba abrirá el fichero “osg/Node”. Cómo no tiene extensión pero yo se que es c++, escribiendo :set syntax=c nos pone el resaltado de sintaxis.

Ya estamos listos, ahora lo que queremos es escribir por cada una de los métodos de la clase osg::Node algo como esto.

.set("nombre-de-metodo", &Node::nombre-de-metodo);

¿cómo lo hacemos? a) forma pesada y aburrida, a manilla. b) forma más entretenida, con macros.
Para hacerlo con macros, seguimos estos pasos (para este ejemplo):

  • Como el cursor aun está en la cabecera (arriba) lo situamos en el primer método y con control-w w nos volvemos a cpp donde quiero escribir código. También sitúo el cursor en este buffer.
  • q q   Sí, dos “q”, la primera es para decir “voy a grabar una macro” la segunda es para decir “la macro se llama q” si sólo vas a trabajar con una macro esporádicamente es muy práctico escribir “qq” y empezar a grabar. Vim se pone en modo grabando
  • control-w w   nos vamos al buffer de la cabecera (arriba)
  • ^ f ( b y t (   Divertido eh? veamos con detalle qué está pasando aquí:
    • ^   Mueve el cursor al principio de la linea
    • f (   busca el primer “(”, lo que nos lleva justo al final del nombre del método
    • b   Desplaza el cursor hacia atrás una palabra, justo al principio del nombre del método
    • y t (   “copia(y) hasta(t) (”
    • ahora ya tenemos copiado el nombre del método
  • control-w w   nos vamos al buffer de codigo (abajo)
  • o .set(”Esc p i “, &Node::Esc p i ) Esc
  •   esto es literalmente lo teclado, o inserta una linea y se pone en modo inserción, Esc vuelve al modo comando, p pega lo copiado, i se pone en modo inserción.

  • control-w w   nos vamos al buffer de cabecera (arriba)
  • 2j q   Desplazamos 2 lineas hacia abajo y con q paramos de grabar.

Una vez tenemos grabada la macro la reproducimos con @q la @ es para reproducir la macro y “q” es el nombre de nuestra macro. Ya se que bien mirado, parece rebuscado, pero al vídeo me remito es más cómodo y rápido de lo que parece cuando uno se acostumbra a usarlo.

posteado por PpluX @ 11:55 am tags:Vim  

Gestionado con WordPress