Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Thursday, January 26, 2006

 

Regreso al pasado: TurboC

Resulta que un amigo mío me ha pedido que le echara un pequeño cable a su novia con una práctica de Bioinformática. Lo que hacen en esta asignatura básicamente es impartir una introducción a la programación, y en concreto usan el lenguaje C. No me parece mal que usen este lenguaje pero sí me parece mal que lo usen para lo que lo usan. De hecho, esta chica me ha enseñado prácticas de otros grupos de años anteriores y, vale, son simples y tal, pero intentan ser presentables y curiosas.

Quiero decir que no parece que la asignatura se centre al estudio de algoritmia, complejidad y demás cosas teóricas sobre la programación, sino que enseña lo que se puede llegar a hacer con la programación en general. Para eso, si yo fuera profesor, no habría escogido un lenguaje de hace siglos como C, y menos en el entorno en el que lo usan: TurboC para MS-DOS.

Intenté compilar el par de prácticas que me trajo con Linux, y descubrí que en estas prácticas existía una dependencia importante: librerías de gráficos (si les podemos llamar así) del propio entorno TurboC. Encontré un port para Linux y GCC dejó de quejarse de algunas cosas, pero no todas: seguían faltándole sin definir algunos símbolos que parecían constantes, como WHITE, BLACK, SANS_SERIF, etc. Vamos, que al final me dejé de rollos, arranqué en Windows, descargué el TurboC y me puse a programar en una consola de MS-DOS. Como el editor dejaba mucho que desear, intenté usar otro editor e invocar algún comando de TurboC que compilara automáticamente, pero no hubo manera, no encontré la herramienta adecuada o los modificadores adecuados. Pero bueno, me resigné y seguí con lo que tenía.

El problema real de Ana no era que se le diera mal la programación (que tampoco era una experta) sino que no se le ocurría nada que hacer para la práctica (era un tema libre a escoger por el alumno). Después de unos minutos de inspiración, se nos ocurrieron un par de cosas y nos pusimos manos a la obra.

Empezaron a surgir historias que me recordaban mucho a mi asignatura de Fundamentos de Programación para Sistemas Operativos, como los típicos problemas inherentes a la implementación de scanf, que deja de funcionar para posteriores invocaciones si existe algún error en la recogida de datos (en concreto a la hora de hacer casts a tipos de dato entero), lo que en ocasiones puede dar lugar a bucles infinitos. Después de decidir usar gets() en lugar de scanf() empezaron a surgir problemas con el atoi() y derivados. Al final decidí hacerme mis típicas funcioncitas que convierten de caracter a número (sabiendo que un tipo char es en realidad un entero con el valor del código ASCII del caracter, es muy fácil definir esta función).

Es por esto por lo que no estoy muy de acuerdo en usar estas técnicas de programación hoy en día, y más en el ámbito que ya he comentado. Se ve la madurez de cosas actuales como C# o Java, en el que las funciones no son globales y están englobadas cada una en su namespace o package correspondiente, en las que averiguar la longitud de un vector o cadena es algo trivial (gracias a la no necesidad de la aritmética de punteros), etc. Son soluciones mucho más amigables, potentes y productivas; ahora, que si querían evitar con esto el posible intrusismo que pudiera generar esta asignatura del plan de estudios de biología sobre el mercado laboral informático, lo han conseguido.

Labels: , ,


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?

Categories

RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:
aaragonesNOSPAMes@gnNOSPAMome.org

Archive
My Photo
Name:
Location: Hong Kong, Hong Kong
Follow me on Twitter