<$BlogRSDUrl$>

Esos aparatos del demonio

Mis notas sobre lo que voy leyendo de ordenadores y periféricos

lunes, enero 09, 2006

Los peligros de las malas escuelas de C/C++ 


Tras el artículo de Joel Spolsky sobre los peligros de las escuelas solo Java del que ya he hablado, ahora uno sobre los peligros de las malas escuelas de C/C++. Cortito y bueno.

Dice que mucha gente en la universidad consigue hacer las prácticas -es decir, que el programa pase las pruebas que le hace sin core dumped- a base de probar y sin entender de verdad los punteros. Pone un ejemplo muy bueno de lo que hay que saber:


here's a certain subset of pointer skills that students just need to know cold. Consider this code:


int buf1[10];
int *buf2 = new int[10];

for (int i = 0; i < 10; i++)
{
buf1[i] = i;
buf2[i] = i;
}


What's the difference between these two buffers? Where is each allocated? Why could you safely return buf2 from a function but not buf1? Any CS student should be able to answer these offhand.


Sobre la recursión, también una pregunta muy clara cuya respuesta hay que saber: «why can't you use recursion on a data set of arbitrarily large (or unknown) size?».

Discute otras cosas que deben enseñar las escuelas. Me ha gustado especialmente que resalte tres cosas que a mí no me enseñaron y que ahora también estoy de acuerdo en que son fundamentales: a utilizar un depurador, un estilo de programación consistente (dice que habría que poner nota al código igual que se pone a los trabajos de lengua) y el manejo de un programa de control de versiones. La verdad es que, ahora que lo pienso, de todas vi un poco en la carrera, incluso de control de versiones, pero no se les daba la importancia que tienen.

(Por cierto, los comentarios sobre la recursión y la pila son interesantes, pero ha salido la clásica disputa entre Computer Science y Computer Engineering que es la versión estadounidense de la pelea entre programadores e ingenieros que se da por aquí. Si al final estamos en todos los sitios igual.)

Comentarios:

Publicar un comentario

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

Blogroll
Enlaces
Archivos

Licencia Creative Commons
Este trabajo tiene licencia Creative Commons License.