Una de las cosas que se necesita para que la humanidad evolucione, es que los conocimientos se distribuyan libre y gratuitamente, para eso tanto el gobierno como las empresas deben asegurar la mejor calidad de educación posible. Pero lamentablemente la mayoría de las empresas no contribuyen en absolutamente nada a la educación, y aún asi pretenden tener empleados completamente capaces sin haber invertido un solo centavo.
Esto no sucede con el software libre. Además de poder leer el código de un programa, modificarlo o contribuir a la causa, en algunos casos podemos recibir las enseñanzas de los mas capacitados para algún dia por llegar al mismo nivel.
¿Como hace un programador junior para ser capas de crear un nuevo algoritmo de compresión multimedia o un driver para algún sistema operativo si no hubiese ningún código de ejemplo ni nadie cerca que sepa hacerlo? Lo normal sería que tendría que viajar a otro país para recibir una costosa capacitación que muy probablemente tenga que pagar de bolsillo.
Ahora bien, hace poco salio una nueva versión del kernel de linux, y con este, los detalles de las nuevas mejoras.
Una de las característias nuevas es un debugger para el kernel (KGDB) en la cual explican lo siguiente:
" For many years Linux has not included a kernel debugger. Linus Torvalds vetoed them for years, for reasons that he explained quite well in a known email: "When things crash and you fsck and you didn't even get a clue about what went wrong, you get frustrated. Tough. There are two kinds of reactions to that: you start being careful, or you start whining about a kernel debugger [...] I happen to believe that not having a kernel debugger forces people to think about their problem on a different level than with a debugger. I think that without a debugger, you don't get into that mindset where you know how it behaves, and then you fix it from there. Without a debugger, you tend to think about problems another way. You want to understand things on a different _level_." "
Lo que dice es lo siguiente:
" Por muchos años no se ha incluido un debugger en el kernel (no significa que no exista ninguno). Linus Torvalds ha estado en contra por muchos años por la siguiente razon que el explica en uno de sus emails:
Cuando tus programas comienzan a bloquearse y no encuentras ni una pista de que puede estar mal, te frustras, y hay dos tipos de reacciones en concecuencia: empiezas a ser cuidadoso o empiezas a desear un debugger [..] Yo creo que el no tener un debugger fuerza a la gente a pensar sobre su problema en un nivel diferente que con un debugger. Pienso que con un debugger no llegas a darte cuenta de como se comporta el problema y corregirlo desde ahi. Sin un debugger tiendes a pensar en problemas en otra forma, intentas y quieres entender las cosas en un __nivel__ diferente. "
Un debugger puede ayudarte a encontrar donde metiste la pata, pero no te ayudará a no volver a cometer ese error, ni te resolverá el problema que puede tener un algoritmo.
Hace tiempo leí que si algo se torna muy complicado, entonces está mal. De hecho, los programadores hacen su trabajo para hacer las cosas mas simples y funcionales, y un debugger no te ayudará en nada a hacerlo.
