Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Como leer un libro de Programación

–En Computación es mas tardado conocer el camino que recorrerlo–

La vida de un soldado consta de largas horas de aburrimiento y unos breves momentos de terror. De manera similar la vida de un programador consta de largos meses de leer libros y unos cuantos dias de escribir programas. En esta entrada se explica como deben de leerse esos libros sobre computadoras que a muchos resultan incomprensibles.

Una de las actividades mas importantes en la vida de un programador es leer. Un programador debe de pasar la mayor parte de su tiempo leyendo, incluso es bueno que dedique mas tiempo a leer que a teclear source code. El problema es que los libros de computación no son como la mayoriá de los libros que uno lee en linea recta de principio a fin y lo peor de todo es que no todos los libros de computación son iguales. Algunos son libros bastante amistosos que incluyen mucho código que uno puede teclear directamente en un compilador y vienen acompañados de extensas explicaciones y otros libros verdaderamente infames llenos de símbolos extraños, palabras y abreviaturas que si acaso nos ofrecen un poco de pseudo-código mezclado con signos griegos.

Ahora mismo me viene a la mente la primera vez que fui a una libreria a comprar un libro de programación. Regresé con dos, uno era el manual de un compilador y el otro un libro sobre algoritmos. Debo admitir que en ese entonces ambos libros me resultaron bastante inútiles. Pues no tenía el compilador que indicaba el manual y en ese entonces el acceso a internet no habia llegado a mi pueblo y el libro de algoritmos era casi incomprensible. Sin embargo, con el tiempo el libro sobre algoritmos pareció adquirir sentido. Pues las partes con letras explicaban de modo bastante ameno lo que los algoritmos hacían. Dicho sea de paso, esos algoritmos estaban escritos en una mezcla de C++, notación matemática, griego y otras notaciones sin sentido para mi. Lo que noté fue que era mucho mas sencillo entender esa notación críptica una vez que acabé de leer las partes escritas ‘con letra’. Lo que me decepcionaba era que como el código no era directamente ejecutable no tenía manera de ver como los algoritmos funcionaban sin importar si era capaz de entender o no los algoritmos. Al final pude implementar algunos de ellos en un intérprete de QuickBasic que era con lo único que contaba en ese entonces. Con el tiempo noté que los libros de temas serios de computación no se parecían en nada a los que de la noche a la mañana atiborraron las librerias. En lugar de eso los libros de temas como gráficas por computadora, inteligencia artificial, construcción de compiladores y otras tantas cosas que en ese tiempo necesitaba aprender no se parecían en nada a aquellos dos primeros libros que compré. Solo hasta hace poco que hice algunos trabajitos mundanos me topé con algunos de estos libros amistosos y recordé lo sencillo que era copiar y pegar un hola mundo para con un solo click hacerlo funcionar. Pero ahora veamos los diferentes tipos de libros de computación y como leerlos:

Libros de Códigos

Estos son los libros mas sencillos y es muy común verlos en las mesas de los principiantes y algunos ingenieros medio n00bs. Son los libros mas amistosos en el sentido de que contienen muchos ejemplos que pueden ser copiados directamente a la computadora para verlos funcionar y las explicaciones no son demasiado difíciles de entender. Virtualmente es posible colocar el libro junto a la pantalla y teclear los códigos al tiempo que se leen las explicaciones. Lo malo de este tipo de libros es que envejecen demasiado rápido. De hecho para cuando son traducidos y puestos a la venta fuera de sus paises de origen ya están casi obsoletos. Además de que estos libros solo sirven para iniciarse en una determinada y muy específica tecnología. Por lo que si uno quiere profundizar mas en el tema o aplicar estos mismos conocimientos a otras áreas de la computación la única solución es conseguir otro tipo de libros mas avanzados.

Para procesar estos libros lo mas prudente es leer primero todas las partes escritas con palabras y las descripciones sin preocuparse demasiado por entender los ejemplos. Si acaso se puede intentar compilar alguno de los ejemplos mas sencillos tan solo para tener una idea sobre lo que uno está leyendo. En la primera lectura es importante leer con calma todas las descripciones. Y en el caso de los apéndices que incluyen compendios de llamadas a funciones y bibliotecas basta con saber que existen tales funciones y lo que son capaces de hacer, sin importar si uno no entiende como trabajan. Una vez que uno acabó de leer todas esas partes con calma es cuando uno pone el libro junto a la PC, entra en bullet-time y comienza a teclear y compilar todos los ejemplos. Conforme teclea vendrán a su mente todas las cosas que ya leyó y será mucho mas sencillo localizar y reparar los errores o por lo menos tendrá una idea de en que páginas buscar las respuestas. Una vez que uno ya acabó de teclear los códigos y ha jugado con ellos cambiándoles cosas puede considerar que ya obtuvo lo que necesitaba de ese documento.

Libros de Algoritmos

A esta categoría pertenecen todos los libros que hablan sobre técnicas de programación, algoritmos clásicos de ordenamiento y búsqueda. Son muy comunes entre los estudiantes de ingeniería en computación y los programadores independientes de cierto nivel. Por regla general este tipo de libros describen los algoritmos usando pseudo-código pero algunos autores usan la notación de algún lenguaje de programación conocido como por ejemplo C, con lo que muchos confunden estas obras con los libros de códigos. Sin embargo, estos códigos no son directamente ejecutables en el sentido de que no basta solo con teclearlos para poderlos compilar. Por otro lado, estos códigos son muy fáciles de adaptar a cualquier otro lenguaje que el lector domine. Una cosa a favor de este tipo de libros es que tienen una vida util mucho mas larga que los libros de códigos. Pues los algoritmos pueden seguirse programando para diferentes plataformas a lo largo de los años. No tiene nada de raro enterarse que los métodos de búsqueda mas usados en la actualidad ya tienen no pocas décadas de haber sido implementados.

Para leer uno de estos libros es necesario dominar a un nivel mínimo por lo menos un lenguaje de programación, aunque sea alguno de esos lenguajes basados en scripts. A la hora de leerlos uno puede hacerlo de principio a fin, aunque se recomienda primero leer la descripción de los algoritmos y luego concentrarse en el pseudo-código. Un buen consejo en esta clase de libros es hacerse acompañar de papel y lapiz o mejor aún de un pizarrón para poder llevar una cuenta de los símbolos usados en los algoritmos e intentar hacer pruebas para ver como es que estos algoritmos funcionan. Una vez que uno realmente sabe lo que está haciendo tranquilamente puede implementar estos algoritmos en su lenguaje de programación favorito para verlos en acción. Todo este proceso es tardado, pero bien vale la pena hacerlo por lo menos una vez con cada algoritmo que podamos necesitar.

Libros de Ciencias Computacionales

A esta categoría pertenecen los libros mas avanzados como los de gráficas por computadora, inteligencia artificial, simulaciones físicas y la teoría do autómatas y compiladores. Es raro encontrar este tipo de libros fuera de los ambientes académicos especializados y suelen verse en las manos de los estudiantes de maestría en ciencias o catedráticos muy ancianos. Si alguien conoce el mito del Necronomicon, estos libros son lo mas parecido que van a encontrarse. Se trata de textos incomprensibles que para entenderlos hay que haber leido primero libros de matemáticas mas avanzados que los que se ven en la mayoría de las ingenierías, lógica y filosofía y en algunos casos hasta tener algunos conocimientos de lenguas muertas para entender los símbolos griegos y algunas frases antiguas escritas en latin.

Ahora bien, hay que dejar en claro que estos libros son los mas valiosos para los programadores, pues algunos pueden haber sido escritos múchas décadas atrás y aún seguirán siendo útiles décadas mas adelante. Son sumamente difíciles de encontrar y cuando uno tiene la oportunidad de comprarlos suelen ser bastante caros. Pero un programador que sea capaz de leer y entender uno de estos libros, y sobre todo de hacer programas que den buen uso a la información que contienen obtendrá gran poder.

Sabiendo esto, no es de extrañar que estos libros sean los mas difíciles de leer y entender, sobre todo porque la información que contienen no solo requiere de un gran procesamiento para ser util sino por la forma en que están escritos. Lo mas probable es que si uno no tiene los conocimientos necesarios sienta que va a enloquecer al tratar de entender estos libros. Personalmente recuerdo una enorme frustración al haber tenido algunos de estos libros en las manos y no haber sido capaz de entenderlos. Si este es su caso lo mas aconsejable es dar una lectura superficial sin preocuparse por entender nada y luego buscar en OTROS LIBROS, sobre todo de matemáticas y lógica simbólica todo aquello que no haya entendido a primera vista. Yo mismo recuerdo la cara de algunos maestros de la facultad de matemáticas cuando les mostré algunas de las páginas de esta clase de libros y les mostraba que eran idénticas a las de los textos usados en sus materias. Sobre todo en clases como algebra lineal, cálculo vectorial y matemáticas discretas.

En fin, al leer esta última clase de libros es importante no quedarse estancado si uno no entiende algo. Existen intelectuales con no se que trauma personal que son incapaces de darle la vuelta a una hoja si no han entendido a plenitud lo que están leyendo. Estos individuos son los que suelen perder la razón al leer esta clase de textos oscuros. Si uno no entiende lo que está leyendo, lo mejor es buscar en libros de otras materias que nos ayuden a comprender. Pues estos documentos están muy por encima de aquellos que hablan sobre tecnologías particulares o lenguajes de programación; pero al mismo tiempo tienen aplicación en todos esos mundos.

Como leer libros de Ensamblador

Ya para terminar, quisiera comentar que en el mundo de la programación en ensamblador uno encuentra muchos tipos de documentos diferentes, pero todos se pueden agrupar en las tres especies ya descritas. Los manuales de herramientas particulares como los compiladores de ensamblador y la documentación de los diferentes SDK son libros de códigos que podemos leer y aplicar de manera inmediata. Las especificaciones de CPU y documentos que describen tecnologías como por ejemplo los manuales de Intel aunque no son propiamente libros de algoritmos su información no es directamente ejecutable y requiere entenderse primero y aplicarse despues como estos. Algunos podrían considerar los libros que describen las nuevas arquitecturas de hardware como libros de ciencias pero estos están muy por encima de conceptos mundanos como lenguajes y plataformas de hardware. De todos modos el programador de ensamblador que hubiera leido lo suficiente de matemáticas tendrá mayor posibilidad de entender esos libros tan difíciles a diferencia de programadores especializados en otras tecnologías.

Por último no puedo dejar en claro la importancia de leer de manera constante. La lectura es a los programadores lo que el ejercicio es para los atletas. Algo que uno debe de hacer todos los días sin excepción para cuando llegue el breve momento en que debemos de poner a prueba nuestras habilidades estas no nos fallen.

Anuncios

junio 19, 2011 - Posted by | Uncategorized | , ,

4 comentarios »

  1. Buen post, recuerdo también haber leído libros que no entendía nada. Es probable que algunos de esos aún me sean difíciles de entender como los del ray tracing. Uik.

    Comentario por puerco | junio 20, 2011 | Responder

  2. Acabo de encontrar esta página por casualidad y me alegro de haberlo hecho.
    Excelente artículo =)

    Comentario por inigo | septiembre 22, 2011 | Responder

  3. HOLA INTERESANTE LO QUE INDICAS EN COMENTARIOS

    Comentario por FERNANDO | octubre 20, 2011 | Responder

  4. Very interesting, I have to say I am agree with you in ‘Una de las actividades mas importantes en la vida de un programador es leer’. More than likely I am one of those n00bs that learn the how which is easy and not the Why.

    Comentario por Mario Berthely | abril 8, 2013 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: