lunes, 30 de julio de 2012

Espejitos de Colores

Vengo a develar el oscuro misterio que envuelve a mi computadora cuando se conecta a un proyector para dar clases. Los más supersticiosos dicen que el código se escribe solo, los escépticos quieren saber por qué. Yo no entiendo nada...

Uno, como desarrollador de un proyecto de software que a su vez consume (que uso para mis otros desarrollos o para mis clases), tiene una posición de privilegio. Porque si uno programa para otro, tiene que hacer ingeniería de software de la que no me gusta hacer. Hay que averiguar que necesita el usuario (averiguar no es preguntarle, normalmente el usuario no sabe ni qué quiere ni qué se puede hacer), hay que entender su posición, imaginar el detalle de los casos de uso, identificar los problemas, proponer las mejoras, etc. Estando a la vez en la posición del desarrollador y del usuario, no hay tanto que adivinar. Generalmente creo que sé que me gustaría ver en mis programas, y sé qué puedo implementar y que no (aunque también suelen sorprenderme gratamente sugerencias de otros usuarios o características de otros entornos que no se me habían ocurrido).

Como sea, el punto es que creo que tengo un panorama suficientemente amplio como para valorar las funcionalidades en estos proyectos. Y con mi visión omnipresente, encuentro potenciales funcionalidades que considero realmente útiles y para nada triviales, y que me dan la satisfacción del trabajo bien hecho cuando las termino (aunque a veces no esté tan bien hecho); el ejemplo icónico podría ser el editor de diagramas de flujo. Por otra parte, hay funcionalidades que implemento porque no me cuestan mucho, porque varios usuarios me lo piden, o porque están en la bolsa de pequeños detalles; como que al apretar F12 alternamos entre un .cpp y un .h cuando los dos existen con el mismo nombre, o que con Control+Enter sobre el nombre de un archivo de texto este se abre en una nueva pestaña, o que Control+T y Ctrl+Shift+T mueven para arriba y para abajo la linea actual o las seleccionadas, por dar unos ejemplos (busquen "Atajos" en la ayuda). Los pequeños detalles hacen una gran diferencia. De a uno no pesan, pero la bolsa completa puede ser muy difícil de levantar. Suelo valorar la madurez de un software y la calidad de los desarrolladores por estos detalles (sobre todo cuando se trata de juegos :). En ZinjaI en particular, suele ocurrir que muy pocos usuarios descubren la real utilidad de muchas de las herramientitas de esa bolsa. Suele ser cuestión de costumbre, y al ser cosas pequeñas no suelen estar muy a la vista. Pero como yo las puse ahí, las conozco perfectamente, así que las exploto. Los que me ven usándolo pueden llegar a pensar que ZinjaI es mágico, pero supongo que si conociera tan a fondo algún otro entorno podría moverme por él con la misma velocidad y causar la misma impresión.

Volviendo al velo de magia que envuelve mis clases, esto viene a cuento porque me pasa que los alumnos dejan pasar sin asombro cosas bastante importantes, pero sí que quedan fascinados con los autocódigos. Si no sabés lo que son los autocódigos en ZinjaI, abrilo ahora mismo, escribí fori(N) y apretá TAB continuación (con el cursor todavía a la derecha del paréntesis) y Enter. Vas a ver que ZinjaI reemplaza esas 7 letras por todo un bucle for, que declara, inicializa, compara e incrementa el contador, con su juego de llaves relucientes, convenientemente desparramado entres renglones, y con el cursor en el del medio, indentado más adentro como esperando a que hagas algo útil con él. Cuando vengo explicando algún ejercicio en clases, y lo voy codificando a medida que lo vamos discutiendo en el pizarrón, y uso este truco, unos cuantos alumnos quedan con los ojos abiertos preguntándose cómo diablos hice eso. Les parece magia, que en un segundo, tocando 4 o 5 teclas, tenga todo mi bucle listo para iterar. Uso muchos atajos y cosas de ese estilo, pero esa en particular les llama más la atención que las otras y más de uno me pregunta después de la clase donde está el secreto, como si el conejo que salió de la galera no tuviese cara de haber estado apretado y sin respirar media hora ahi adentro.

Izquierda, el archivo de autocódigos.
Derecha: el autocompletado con las plantillas (Ctrl+Shift+Espacio).

En este ejemplo el autocódigo se llamaba fori y el argumento era la N, que pueden cambiar por cualquier cosa. Se activan cuando se apreta Tab con el cursor justo después de la palabra clave o del paréntesis. Hay algunos más, pero también cada usuario puede definir los suyos. Para eso hay que ir al menú Archivo, elegir Preferencias, y en la pestaña Asistencia van a encontrar una opción que dice "Archivo de definiciones de plantillas autocódigos". Si hacen click en el botón a la derecha del campo (el de los tres puntos) pueden editar el archivo. La sintaxis está explicada en los comentarios, pero es básicamente la misma que para definir macros de preprocesador. Van a encontrar los ejemplos que trae ZinjaI por defecto para guiarse. Por otra parte, también pueden tener un archivo de autocódigos en un proyecto, y que se cargue siempre que se carga el proyecto. La mecánica es la misma, solo lo tienen que buscar en el item "Configuración del Proyecto" también en el menú Archivo.

Por un lado me pone contento que al menos les llame la atención. Claro tiene que estar que los autocódigos no son el argumento de venta de ZinjaI ni mucho menos, pero quiero creer que las da pie para preguntarse de cuantas cosas más se están perdiendo, y que les despierta ganas de experimentar un poco más. Por otro lado, comparativamente me preguntan más de eso que de lo que realmente les estoy tratando de enseñar, que es programación en general y C++ en particular, y no el uso de tal o cual entorno. Podría querer autoconformarme pensando que las clases son tan claras que nadie tiene dudas, pero se muy bien que no es así, y a las calificaciones me remito. Así que sí, me sorprendió mucho ver como varios se espabilan con útiles pero innecesarios espejitos de colores, y en cambio hay más tímidos y menos preguntones para otras cosas más importantes. No se si es bueno o es malo, solo que me resulta cuanto menos curioso.

3 comentarios:

  1. sos un groso man, me gusta programar por hoby tengo un canal en youtube KeyGen2009, hago "exploits" ,lo pongo entre comillas por que ni en pedo llega a ser eso jajajaja, como no se mucho de C++ es como pegarle patadas al procesador con los codigos que hago, mi hermano me mostro zinjai y me encanto, usaba Dev pero esto de los auto codigos y todas las cosas que tiene me encantaron.
    Se valoran los tutos man, gracias por la ayuda.
    Aguante zinjai!!

    ResponderEliminar
  2. Genial el autocodigo, ayuda bastante en simplificar la escritura, mas por código que solemos repetir una y otra vez. saludos desde Perú

    ResponderEliminar