Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Háblame al Chile

–La Verdad sobre CASI Todas las Escuelas de Programación de Videojuegos–

La expresión “Háblame al Chile” se usa en México para pedirle a alguien que nos hable con la verdad , de manera directa y sin rodeos. Y de esa manera voy a hablar esta vez sobre uno de los temas que mas se prestan para hacer chistes crueles en este blog: Las “carreras profesionales” en las que te enseñan a hacer videojuegos.
lo que le espera a los egresados
Y si escribí CASI en el subtítulo fue porque aún no he acabado de investigar a TODAS las escuelas de programación de videojuegos a nivel mundial. Esto es únicamente lo que he encontrado en TODAS las escuelas que he investigado mas o menos de cerca.

Hace unas horas estaba hurgando otros post dedicados a la programación y los juegos de video cuando me encontré con una joyita. Se trata de un blog de ¡Una escuela de programación de Videojuegos! Específicamente de un cierto instituto cuyo nombre incluye la frase “Desarrollo de Videojuegos” Esta escuela es originaria de ese peculiar pais enclavado en el cono sur: ¡Chile! De ahí el peculiar nombre de esta entrada.

Como todos sabemos, los blogs que los maestros hacen para apoyar sus materias no son lo que se dice muy elaborados. No pasan de ser mas que un trozo de texto con fechas de exámenes, entrega de tareas y algunos enlaces a trabajos descargables (que en este caso van a ser objeto de mis burlas). Aunque pensándolo bien creo que no tendré que esforzarme demasiado, pues hay situaciones en que las burlas están de mas y lo único que hace falta es hacer que la gente voltee a ver a la víctima.

Al estar escribiendo esta entrada no puedo dejar de pensar en una de las notas mas divertidas de este blog titulada “El Circo de Pulgas” en la que unos autodenomidandos “programadores profesionales” quisieron hacer un clon de un juego y no pasaron de hacerse mierda entre ellos. De hecho la última vez que quise leer su foro de discusión ya no pude encontrarlo. Lo último que alcancé a leer fue de alguien que intentó deshonrar otra leyenda de los videojuegos de los ochentas usando las mismas técnicas de aficionados. Bueno, ahora que investigué un poco mas sobre esta escuela y di con el plan de estudios no pude aguantarme la risa. Pero solo para que se den una idea de la calidad de los profesionales de la industria, aquí va una comparativa entre el grupo mencionado en El Circo de Pulgas y este curso llamado “Programación Gráfica I”:

                        Circo de Pulgas		        Domadores de Pulgas

Lenguaje usado	        C++				C#

API			SDL				XNA

Hecho por:		Ingenieros titulados		Institución de educación superior

Acabó en:               Pelea entre ellos		Todavia falta lo mejor

Hay algo que no alcanzo a entender de estas carreras profesionales donde te enseñan a hacer videojuegos. Por un lado los 10 semestres que toma una de estas carreras me parecen demasiado tiempo y al mismo tiempo al ver el plan de estudios me parece que este es insuficiente. Si lo comparamos con los 3 años de confinamiento solitario como lo que en sus buenos tiempos se hacía en Digipen (una instalación en donde Nintendo entrenaba a una buena parte de sus ingenieros) una de estas carreras no es lo que se dice muy eficiente a la hora de entrenar ‘profesionales de la industria de los videojuegos’. Sin embargo, desde lo acontecido en la entrada “Esto no tiene nombre” me he encontrado con un sinfin de esta clase de cursos en escuelas de todos los niveles. Desde simples diplomados del tipo “Aprende el lenguaje X programando videojuegos” hasta carreras universitarias del tipo “Ingeniería en diseño y desarrollo de videojuegos, multimedia, artes digitales y animación” aunque a veces pienso que esto no es algo nuevo, pues desde hace ya algunos años había rumores de una escuela llamada “Full Sail”(aunque creo que mas bien debería de llamarse Full Sale) que tenía la mala reputación de cobrar cantidades estratosféricas a cambio de una preparación tan mala que muchas desarrolladoras serias como Electronic Arts simplemente rechazaban las solicitudes de empleo de sus egresados. Creo que este tema amerita un análisis mas serio; pero hasta ahora he notado cierto patrón en los planes de estudios de esta clase de “Carreras Profesionales”:

1.- Ninguna lleva tan siquiera una sola materia de matemáticas (vital para entender algoritmos gráficos)

2.- Solo hay uno o dos semestres de programación y apenas se alcanza a estudiar la sintaxis de algún lenguaje de moda

3.- La mayor parte de las herramientas tanto de programación como de diseño son propietarias.

4.- Hay una serie de materias con nombres tan ambiguos como “videojuegos 1, 2 y 3” o “arte” (aunque yo creo que es mas bien “Harte” con H) que no dejan claro que es lo que se estudia

5.- En las materias de programación mas avanzadas lo único que parecen hacer es aprender a hacer llamadas a bibliotecas (APIs, engines, frameworks o como quiera que les llamen) desde el lenguaje de moda.

6.- Las tareas son cosas tan ridículas como “investiga que motor gráfico” fue usado en la creación de X juego o alguna idiotez por el estilo. Las mejores tareas parecen mas notas de una revista de videojuegos que un trabajo de un auténtico desarrollador

7.- Los proyectos mas avanzados no superan ni en lo técnico ni en lo artístico a los juegos de mediados de los ochentas; pero necesitan una computadora de última genaración con una configuración especial para correr, eso en el caso de que funcionen.

8.- La única carrera de estas donde se menciona algo sobre la programación en Ensamblador ya saben cual es y el nivel que tiene.

Bueno, ya eché mucha agresión para una sola nota. Nada mas para rematar quiero mostrar una captura de pantalla de uno de los videojuegos hechos por el maestro que imparte la materia de Programación Gráfica I, en este demo se destacan sus sorprendentes gráficos pero mas que nada su jugabilidad:

pantallazo

Por cierto, si quien lee esta entrada es el mismo maestro que escribió el blog (o algún otro que se sienta aludido al leer esta entrada) le pido por favor que no se la jale y aprenda a programar de verdad. O por lo menos que descargue el SDK oficial de DirectX (pero el que es para C++ que es el bueno, no el de managed code) si no es capaz de programar una computadora como se debe que es en lenguaje de máquina.

Ahora que lo pienso, a lo mas que podrían aspirar los egresados de este tipo de carreras sería de redactores en alguna revista especializada en juegos de video o como empleados de una tienda de estos. Pues al menos estudian quien hizo tal o cual juego y que elementos contiene. La parte que no soporto es que existan escuelas que cobren cantidades estratosféricas por dar una “preparación” que en el fondo saben que no les va a servir para desarrollar un verdadero juego de última generación y que por otro lado existan empresas “Desarrolladoras” que no sean capaces de desarrollar su propia tecnología para sus juegos. A veces pienso que este tipo de empresas tienen mas que ver con una maquiladora o una franquiciataria del grupo que les licenció la tecnología para crear sus juegos. Y pensar que cuando me decidí a ser programador fue porque programar era una actividad muy barata; aunque parece que lo mas caro de pagar para las empresas actuales son precisamente los programadores.

De acuerdo, aquí se termina la nota. Y sin rencores, si algún maestro de alguna de esas carreras de desarrollo de videojuegos lee esto y quiere cambiar con gusto puede acercarse a este blog y aquí hablamos. Excepto si son de la Universidad de la que me expulsaron porque según mis cálculos no podré poner un pie ahí hasta bien entrado el año 2024. Es mejor que hagan algo con esos planes de estudio porque si no, al salir a “la industria” a sus egresados les van a dar puro Chile.

Noviembre 8, 2009 Publicado por asm86 | Uncategorized | , , | Aún no hay comentarios

Regreso a la Tierra

–Y a eso que llaman “vida normal”–

Esta nota habla de lo ocurrido entre el final de la conferencia de Gráficas por Computadora en el Tecnológico de Zitácuaro y mi no tan feliz regreso a la ciudad de Monterrey Nuevo León.

cerro
Luego de dar por terminada la conferencia y escuchar casi un minuto ininterrumpido de aplausos (se que esto a nadie le importa pero solo quería mencionarlo para fastidiar) tuve una interesante charla con algunos académicos de la propia institución, y mientras se hacían los preparativos para mi viaje de regreso a Monterrey se discutieron un par de temas muy interesantes que intentaré resumir a continuación:

Cursos especiales de Ensamblador

Mas de una vez he hablado de la dificultad de aprender a programar en Ensamblador radica en la dificultad de encontrar información que sea completa y a la vez lo suficientemente actualizada; y lo segundo mas dificil de su enseñanza es que como no se parece a ningún otro lenguaje de programación orientado a humanos (detesto los términos como “lenguajes de alto o bajo nivel”) la gente con experiencia previa se pierde por completo al intentar aprenderlo. Por estas y otras razones que seguido se comentan en este blog, así como por la incapacidad de la mayoría de los estudiantes para leer libros de mas de 200 páginas es que se piensa hacer una especie de capacitación para maestros interesados en impartir la materia de Lenguaje Ensamblador. Aunque este asunto sería, si sale todo bien hasta febrero del 2010.

Pero por ahora, si quien lee este blog pertenece al reducidísimo número de maestros que quieren (o tienen que) impartir la clase de Lenguaje Ensamblador pero nada mas no logran que sus alumnos distingan la diferencia entre el acumulador del CPU y el acumulador de un volkswagen o si aún no salen del 8088 con la misma copia pirata de TASM de inicios de los 90’s que ya no corre en las nuevas computadoras mas que por emulación, lo invito a unirse a este esfuerzo. Basta con que comenten en este blog y yo me encargo del resto. Esta invitación va especialmente dedicada a las escuelas pertenecientes a la Dirección General de Educación Superior Tecnológica (DGEST) a la que pertenece el Tecnológico de Zitácuaro, pues si se logra que este plan sea aceptado por todas las escuelas de este grupo puede que se obtengan importante$ apoyo$ para llevar a cabo este plan. Sin embargo, si pertenecen a alguna otra universidad o instituto público o privado también están invitados a unirse.

Desarrollo de Videojuegos

Puede que la cosa que mas me sorprendió en la visita al Tec de Zitácuaro fue la cantidad de gente (¡casi 5!) verdaderamente interesada en el desarrollo de videojuegos, eso sin contar a los maestros y autoridades que parecen tomar el tema en serio. Entre los que destacan por supuesto el Profesor Mauricio Delgado Pichardo. Si las cosas salen como espero, puede que se abra un “chapter” de la IGDA en ese lugar. Para quienes esta es la primera vez que escuchan este término, la IGDA es la International Game Developers Association y agrupa a las mas importantes (y muchas otras mas o menos desconocidas) empresas de videojuegos a nivel mundial. Desde hace ya años que he intentado entrar a esta asociación pero para empezar el lider del “chapter” mexicano no es lo que se dice el mejor lider y ya dejó morir a la IGDA de México en 2 ocasiones. Además de que para abrir una orgarnización estudiantil necesito de la colaboración de director y maestros. No creo que esto sea demasiado dificil, pues según el sitio de la IGDA de México hay por lo menos ¡22 universidades que cuentan con uno de estos! Mas otras mas que he encontrado investigando y que no aparecen registradas en este sitio. De hecho ya hay una escuela de este grupo que cuenta con un grupo estudiantil registrado ante la IGDA: El Instituto Tecnológico de La Piedad.

hijos de la InGaDA
Sin embargo la situación de la IGDA en México no es lo que se dice muy buena, pues hasta ahora los grupos que he encontrado o no son mas que grupos ya muertos en el mejor de los casos o peor aún, asociados con gente con la que no me llevo muy bien. Creo que si esto se hace habrá de crearse un nuevo “chapter” independiente del de la ciudad de México. Afortunadamente puede haber mas de un grupo por país, o eso creo. Esto necesita mas investigación, aunque no creo que haga falta estar asociados con la IGDA para comenzar a programar. Al final lo que vale es hacer buenos juegos y esos van a hacerse con o sin el apoyo de grupos externos.

De acuerdo, cuando todos esos planes terminaron y el festejo acabó, me preparé para abandonar la ciudad y recorrer el largo camino al aeropuerto. El viaje fue rápido y mas o menos frío. La parte mas triste es que sabía que al pisar suelo regiomontano volvería a ser el mismo perdedor de siempre. De nuevo a levantarme cada mañana y escuchar los reclamos de que deje de programar en ensamblador y obtenga un ‘empleo seguro’ administrando bases de datos, a escuchar como otros hacen felices sus vidas mientras yo me pudro en ese limbo entre el desempleo, el rechazo humano, la ansiedad perpetua y las peleas en los foros de Internet.

En verdad que estoy muy agradecido con todos aquellos que colaboraron para que este evento fuera posible, para mi fue como una de esas historias fantásticas en las que el protagonista encuentra un portal que lo conduce a una dimensión llena de magia y aventuras. Por unas pocas horas fui el personaje que toda mi vida (de programador) quise ser y voy a guardar el reconocimiento que me dieron como uno de mis tesoros, pues este me recordará al verlo en la pared que eso que viví en realidad ocurrió y no fue solo un sueño o una alucinación mía. Supongo que mañana que despierte volveré al mismo horror diario de todos los días pero no me voy a rendir pues dentro de mi sabré que en algún lugar del mundo realmente hay gente que aprecia mis investigaciones sobre la Programación en Lenguaje Ensamblador.

Noviembre 8, 2009 Publicado por asm86 | Uncategorized | , , | Aún no hay comentarios

Conferencia de Gráficas por Computadora

–Tecnológico de Zitácuaro, Michoacán–

sala de computo itz
Zitácuaro Michoacán, 6:00 am. A esa hora desperté y como de costumbre dejé la presentación para último momento. Afortunadamente el buscador de imágenes del Google me ayudó a poner imágenes bonitas en esas diapositivas. Por suerte la presentación se retrasó hasta las doce del día y eso me dio tiempo para acabar esas diapositivas y de paso preparar el equipaje para el regreso. Luego de tomar por asalto el buffet y acabar de ponerme bonito para salir en público me llevaron al lugar del evento. Sin embargo, cuando me preparaba para iniciar el show este se retrasó una hora mas, de modo que la función comenzó pasadas la una de la tarde en una de las salas audiovisuales del centro de cómputo.

No se si ya lo había mencionado; pero la conferencia al final no fue enteramente sobre lenguaje ensamblador; sino de gráficas por computadora (específicamente aquellas generadas en Tiempo-Real en computadoras caseras). Debo de confesar que me sorprendió ver a tanta gente reunida en la sala para escucharme hablar; no sabría precisar un número pero seguro había “al menos 100” personas entre maestros, alumnos y hasta un par de empleados de mantenimiento que observaron por una ventana al fondo de la sala. Luego de la presentación comencé a hablar, aunque algo confundido no me di cuenta que dije algunas cosas muy raras y otras que son imperdonables. De entre lo gracioso, en lugar de “Gráficas por computadora y programación en Ensamblador” dije “Gráficas en Ensamblador y programación por computadora” pero la imperdonable fue la de que Ivan Sutherland no solo había sido el padre de las Gráficas por Computadora sino de la computadora en general. Ahora que reviso detenidamente la grabación que hice de la conferencia en formato MP3; que por cierte pienso subir en formato de Podcast veo otras imprecisiones no tan graciosas que creo que es mejor editar para la versión final. Por cierto, eso de confundir al ‘padre de tal arte o ciencia’ es un chiste bastante malo que de seguro entenderán por ahí un par de otakus.

La presentación se dividió en estas partes:

1.- Presentación de lo que eran las gráficas por computadora

2.- Poder matemático involucrado en la creación de las mismas

3.- Diferencia entre imágenes Pre-rendereadas y las generadas en Tiempo-Real

4.- Estructura general de los sistemas gráficos en una computadora

5.- Funcionamiento de un sistema capaz de generar gráficas en Tiempo-Real

6.- Comparación entre las gráficas generadas por GPU contra el CPU solo.

7.- Técnicas para optimizar la programación gráfica en Tiempo-Real (aquí es donde entra el ASM)

8.- Explicación de la generación de imágenes por polígonos y trazado de rayos

9.- Desarrollo de las Gráficas por Computadora en Ensamblador en México (esta fue la mejor de las diapositivas)

10.- Presentación del demo DEBRIS hecho por un grupo de hackers del norte de europa y que genera una animación 3D con música y que mide tan solo 177 kilobytes

11.- Sección de preguntas y respuestas

12.- Despedida

La verdad no hay mucho que pueda decir sobre la conferencia que no pueda encontarse con detalle en el podcast; pero cabe mencionar que entre los presentes había un reducido grupo de Geeks que hicieron unas preguntas muy buenas. La verdad es que no imaginé que encontraría a estudiantes tan preparados en una escuela tan apartada como el Tecnológico de Zitácuaro. Espero que si se hace el proyecto que voy a mencionar en la entrada siguiente, cuente con su activa participación. Por cierto, uno de ellos me hizo la única pregunta que me costó mucho trabajo contestar: ¿Y yo que era lo que había hecho y que aplicación tenía mi trabajo en ‘la industria’? Ahí fue donde me salió la gota gigante de sudor en la cara. Pero dije la verdad, que a pesar de llevar mas de 10 años de investigación independiente hasta el día de hoy no había logrado producir nada digno de ser vendido en el mercado internacional. Espero que la próxima vez que alguien me pregunte eso ya tenga algo hecho por mi que pueda mostrarles. Pues un cuestionamiento como este fue lo que desencadenó mi “vendetta” contra cierto grupo de autodenominados desarrolladores (que para mi no son mas que un montón de lamers con dinero) que opera en Guadalajara.

industria en mexico
Y hablando de guerras y vendettas, aquí les muestro la que fue la mejor de todas las diapositivas mostradas en la presentación donde, como todos pueden ver, se aprecia al detalle el crecimiento y desarrollo de ‘la industria’ de las gráficas por computadora y la programación en Ensamblador en México, así como las reputadas mentes que han hecho investigaciónes serias en este campo entre las que destacan la creación de engines gráficos en tiempo-real altamente optimizados hechos por nuestros talentosos programadores mexicanos en instituciones educativas supercaras de prestigio internacional. Por cierto, a mi regreso a Monterrey filtré esta diapositiva en el foro de discusión de cierta comunidad dedicada al desarrollo de videojuegos en México como respuesta a una discusión sobre el (muy precario) desarrollo de videojuegos en América Latina. Y mientras todos discutían como típicos intelectuales de café diciendo que si la falta de dinero o la ‘indiosincracia’ del latino eran las culpables yo saqué a relucir esa imagen. Como por arte de magia apareció alguien que decía estar desarrollando gráficas por computadora en una sucursal del reputado CALMECAC en el centro del país. Y otro, que aunque mas mexicano que los lancheros que mueven la panza por unas monedas me mentó la madre en sueco y me dijo que con esa diapositiva solo demostraba mi ignorancia sobre los grandes avances en gráficas por computadora hechos por los mundialmente reconocidos desarrolladores mexicanos. Y eso que no escucharon la parte de la conferencia cuyo fondo fue esa imagen. Creo que a la hora de editarla le voy a poner BEEPS a los nombres de empresas e instituciones mencionadas. Aunque estoy bien seguro de que mas de uno de ellos va a reconocer al amigo de un amigo al escuchar los logros ahí mencionados.

Por ahora hago una pausa, en la siguiente entrada hablaré no solo de mi mundano regreso a la ciudad de Monterrey sino de un par de planes que, si todo va bien, podrían convertirse en un grupo dedicado al desarrollo de videojuegos con reconocimiento internacional y el inicio de lo que podría ser la enseñanza de la verdadera programación en Ensamblador en una institución de educación superior. Eso si no se me ocure tomar unas vacaciones en guadalajara o playa del carmen antes de que esto suceda.

Noviembre 3, 2009 Publicado por asm86 | Uncategorized | , , | 6 comentarios

¡Hoy si vamos a comer!

–Llegada a Zitácuaro Michoacán–

Esta nota es la segunda parte del viaje al Tecnológico de Zitácuaro Michoacán, en México. En la última nota se habló de la llegada al aeropuerto. Ahora que ya estoy de regreso lamento de verdad no haber llevado una cámara digital conmigo. Pues vi tantas cosas que merecían ser exhibidas en este blog. Como por ejemplo la falla en uno de esos pizarrones electrónicos que anuncian las llegadas y las salidas, durante casi media hora la pantalla mostró el escritorio de Windows con un mensaje de error hasta que la tuvieron que reiniciar. El vuelo salió a las siete de la mañana sin muchos contratiempos y no pasó nada especial durante el mismo. Una vez en el aeropuerto de Toluca restaba llegar hasta Zitácuaro. Al bajar del taxi del aeropuerto se me acercó un señor con cara de “igual se trata de trata” a ofrecerme un taxi ‘barato’. De todos modo no me hacía falta y me seguí de largo. Bueno, total luego de un viaje de mas o menos 2 horas entre bosque y montañas al fin llegué a la terminal de autobuses de Zitácuaro donde me habría de encontrar con el Profesor Mauricio Delgado del Tecnológico de Zitácuaro. Este personaje, cuyo peinado y estilo de anteojos lo hacían parecer una versión joven de Jacobo Zabludovsky, arribó minutos después y no le costó mucho reconocerme. Luego de eso ocurrió quizas uno de los eventos mas importantes en mi ‘carrera’ como programador de Ensamblador que les narro a continuación:

comida
Lo primero que hice inmediatamente después de arreglar los detalles del hospedaje fue ¡Comer!. Si, puede parecer algo insignificante pero esa fue la primera vez en mi vida en que comí gracias a la programación el Lenguaje Ensamblador. Dicen que la primer comida que uno compra con su propio dinero es la que mejor sabe (o al menos eso dicen los mártires del capitalismo de los que tanto me burlo) pero estoy seguro que no se compara si tomamos en cuenta de que la mayoría de esos mártires trabajan en algo que no les gusta solo para sobrevivir. Si a esto le agregamos que fue la propia institución la que pagó todos estos gastos (es decir que ni siquiera usé mi propio dinero) y que además la programación en ASM es algo que realmente me gusta hacen a este sencillo hecho una victoria total.

De hecho, la frase de –¡Ahora si vamos a comer!– era original de Remi, el niño huerfano y vagabundo de una animación japonesa popular a principios de los años ochenta. Esta frase la dice en cierto momento en que logra conseguir unas cuantas monedas para comprar un pan que habría de compartir con sus únicos amigos, un perro y un changuito que le ayudaban a dar un show callejero. La verdad es que una de las mas grandes humillaciones que recibo casi a diario viene por parte de aquellos que ’se ganan la vida honradamente’ haciendo cosas como administrar bases de datos y cosas similares. Incluso me ofende profundamente que me digan cosas como “el hijo de tal o cual persona ya trabaja y se gana la vida honradamente y no como tu que te la pasas de huevón todo el día con la computadora”. De ahora en adelante ya no me podrán decir que programar en Ensamblador no da de comer porque ya comí gracias a este, al menos por 2 días. Ahora sigamos con la narración del primer día en Zitácuaro Michoacán.

Tec de Zitacuaro
Luego de ese evento trascendental, me llevaron a conocer las instalaciones del Tecnológico de Zitácuaro. Una institución de educación superior instalada en lo que ‘al menos 100′ años atrás había sido una hacienda enorme. De hecho aún se conservaba buena parte de su estructura original casi intacta, incluido un edificio al que llamaban ‘el casco’ y al que se tenía prohibido el acceso debido a su debil estructura. Se decía que en esa estructura había fantasmas porque ya entrada la noche se escuchaban gemidos y aparecían niños (algunos meses después por supuesto). Luego de ver desde afuera este peligroso lugar pasamos a la biblioteca, que aunque grande tenía muy pocos libros. Al menos tenían una versión no demasiado antigua de “Los Microprocesadores Intel” de Barry Brey y algunos otros libros ya viejos. Ahí discutimos un rato sobre como usar la tecnología actual para impartir mejor la clase de Ensamblador. Al parecer todo estaba listo para la conferencia del siguiente día.

Luego de eso y una pequeña convivencia familiar terminé en el lugar de hospedaje donde no hice gran cosa mas que dormir, pues no lo había hecho en mas de 33 horas y ya comenzaba a fallarme el juicio. Se suponía que la conferencia sería el día siguiente a las diez de la mañana.

Aquí termina la crónica de mi llegada a Zitácuaro y el previo a la conferencia. Pero no dejo de sentirme como uno está luchando contra un jefe que parece invencible en un juego de video y luego de interminables minutos uno de nuestros disparos parece haber surtido efecto; ese ruido que le dice a uno que aunque la victoria se encuentre aún muy lejos es alcanzable. Solo falta concentrar el fuego en ese punto y evitar ser vencido en el proceso. En la siguiente nota contaré por fin los detalles de la conferencia en el Tec de Zitácuaro.

Noviembre 3, 2009 Publicado por asm86 | Uncategorized | , | 1 comentario

¿Hasta donde quieres llegar hoy?

–Ahora si me dieron el avión–

Heme aquí, en una terminal de aeropuerto a escasos minutos de las cero horas del día 28 de octubre del 2009. La batería de mi computadora está en fase terminal y aunque hay red inalámbrica no encuentro una maldita toma de corriente por ninguna parte. Se supone que mi vuelo sale a las 7:00am pero debo de documentar equipaje desde las 4 de la mañana.

Engañado por un contacto eléctrico que no funciona acabé sentado en una mesa de un negocio de comidas ya cerrado. Y desde una de esas mesas es que estoy escribiendo esta entrada. Solo me queda poco mas de una hora en el modo economizador. ¿Pero como demonios llegué aquí?

Resulta que a principios de mes, alguien que resultó ser un maestro de una institución de educación superior dijo en los comentarios que quería que yo fuera a su escuela a darle una plática a los niños. Alguna cosa para que los motivara en esto de la programación. Luego de una pequeña investigación que me reveló que en realidad existía tal escuela, que quien me invitaba a la conferencia en realidad era quien decía ser “ y que no se trataba de trata” acepté la invitación. ¿Como iba a rechazar 3 dias de vacaciones con (casi) todos los gastos pagados?

monte goatse

Comencemos con algo de información nada mas para fastidiar: La escuela en cuestión es el “Instituto Tecnológico de Zitácuaro” enclavada por supuesto en la Heróica Zitácuaro, Michoacán en México. Para mayor referencia se encuentra justo en las faldas de una montaña que algunos llaman “Montaña del cacique” y otros el “Monte pelón”(como la canción de A Night in the Bald Mountain). A mi este accidente orográfico me parece mas bien un Goatse. Tal y como puede apreciarse en esta toma del Google Earth. Por cierto, creo que voy a tener que conseguir una cámara digital para tomar fotos para el blog, pero quiero una que sea facil de ocultar y que no haga ruido, la gente se comporta de manera mas natural cuando no saben que uno les está retratando, en especial las autoridades. Así dejaría los dibujos en paint para explicar conceptos de programación mas abstactos.

El tema de la conferencia es otro asunto espinoso. Pues se suponía al principio que se trataría sobre programación en lenguaje ensamblador; sin embargo tal tema no parecía lo suficientemente interesante y mejor se decidió que se hablara de la Generación de Gráficas por Computadora en Tiempo-Real. Por fortuna para mi llevo ya algunos años investigando sobre este tema, y como la generación de gráficas en Tiempo-Real fue una de mis principales motivaciones para aprender a programar en Ensamblador, lo único que tendré que cambiar de la presentación serán algunas fotos, demos y videos. Pero la idea a comunicar será basicamente la misma.

¿Cual es el plan? Primero escribir lo mas que pueda con la hora de poder restante que me queda, al terminarse buscar otro enchufe que si funcione y luego subir al avión. Y aunque mi mente está aún despierta el cuerpo comienza a actuar de forma rara. Espero no hacer alguna estupidez porque cuando no duermo suficiente mi juicio se adormece y hago cosas de las que (en privado) suelo arrepentirme después. Probablemente esta entrada del blog sea una de ellas. Ahora sigamos con este asunto del viaje.

Antes de continuar, tengo que admitir que la gente que presume de cosas como la que estoy a punto de hacer normalmente se ganan mi desprecio. No voy a mencionar a gente de los años mas recientes porque me huele que algunos de ellos leen este blog pero si de otros que les gustaba presumir que les habían pagado capacitaciones (de esas que se mencionan en “Expo-Lamers 2009” y “La Conmovedora Historia de los 6,000 pesos”) en el extranjero o sus viajes a otros congresos y no precisamente como expositores. Por lo que es una ironía que yo que siempre he estado en guerra con la forma como las escuelas manejan el tema de la programación acabe dando una plática en una. Solo falta que el próximo año me inviten a dar una plática en alguna de esas reuniones de “desarrolladores de videojuegos” de los que tanto suelo burlarme en este blog. De hecho hace poco llegó a mis manos un ejemplar de una cierta revista que hablaba sobre el desarrollo de “Los primeros videojuegos mexicanos”, haciendo énfasis de uno en especial. Sin embargo, ese juego es tan mexicano como el Taco Bell o los sombreros con cascabeles. (O debería decir “tan mexicano como las cumbias y el café Juan Valdez”) pero ese ya es tema para otra nota.

Bueno, se supone que este vuelo me llevará al aeropuerto de Toluca y que de ahí deberé de tomar un autobus hasta la terminal de Zitácuaro. Espero que mis alrededor de 100 kilos de masa corporal y mi atuendo cyberpunk post-matrixero mantengan a raya a posibles ladrones. Se supone que llegado a la terminal habrá alguien esperándome para conducirme al Tec de Zitácuaro. Durante esa tarde y si no me roban la computadora en el camino, se harán los preparativos del show y de ahí iré a parar al lugar donde habré de pasar la noche. De hecho mi contacto hace bromas sobre ‘conseguirme unas edecanes’ para pasar la noche; aunque dados los presupuestos, me conformaría con una o dos alumnas de la carrera de la Licenciatura en Administración. ¡Que va! Con la vida que he llevado me conformo con pasar la noche en un lugar donde pueda dormir boca abajo o de lado sin peligro a que “me metan un susto” o por lo menos de no tener que atrancar la puerta del cuarto con una silla.

Bueno, por ahora aquí le dejo porque me quedan 40 minutos de batería y quiero comenzar a escribir la siguiente nota.

Noviembre 2, 2009 Publicado por asm86 | Uncategorized | , | Aún no hay comentarios

Previo de Zitacuaro

Acabo de regresar del viaje al Tecnologico de Zitacuaro, con todo lo que vi por alla salio material para al menos 4 entradas. Esten pendientes porque voy a publicarlas en las proximas horas (escribo esto sin acentos por la prisa)

Octubre 30, 2009 Publicado por asm86 | Uncategorized | | 1 comentario

La Escuela y la Cantina

–En Tiempos de Paz no Hacen Falta Pistolas–

 

Durante la colonización de los Estados Unidos, dos estructuras fueron imprescindibles en todo pueblito del viejo oeste: La escuela y la cantina. La cantina era el lugar perfecto para recultar pistoleros que tuvieran el suficiente valor (o que estuvieran lo suficientemente borrachos) para ir a pelear contra los salvajes pieles rojas. Una vez que los antiguos nativos habían sido vencidos y los colonizadores se habían hecho de sus tierras, la escuela se encargaba de ‘producir hombres de bien’ que pudieran sacar adelante al pueblo, y de explotar tanto las tierras como el comercio del nuevo territorio hasta que este dejara de ser redituable. De modo que mientras que en el extremo mas occidental los crueles enfrentamientos a balazos eran cosa de todos los días, en los territorios mas viejos y cercanos a las primeras colonias gozaban de una relativa paz y prosperidad. Un balance muy parecido a este es el que puede apreciarse en la industria del desarrollo de software.

Si hacemos un simil entre una tecnología nueva y desconocida con los territorios a colonizar y a los programadores con los colonizadores, los parecidos son evidentes. Cuando una tecnología recién aparece y nadie sabe como explotarla aparecen grupos de valientes carentes de todas preparación formal que se encargan de abrir paso a los demás en tierras desconocidas; una vez que se ha demostrado que ese campo de la tencnología es seguro y redituable comienza fase de ‘educar’ a la población. Y es aquí donde comienzan a verse participación de organismos ’serios’ tales como las escuelas, empresas consolidadas, gobiernos e inversionistas de bajo riesgo. Los procesos comienzan a formalizarse y estandarizarse para que todos puedan comprenderlos; y es cuando aparecen las famosas ‘metodologías’. Este proceso puede verse en todos los campos de la industria; pero en el ámbito tecnológico esto es especialmente notable.

Por ejemplo, muchos de los mas fieles lectores de este blog sabrán bien de mi interés por el desarrollo de videojuegos. Pues en esta ‘industria’ (como le llaman varios de mis conocidos) durante los casi 3 primeras décadas de existencia quienes se dedicaban a eso eran por lo regular gente sin mas preparación que algunos conocimientos aficionados de electrónica y computación; poco después algunas empresas de ramas afines comenzaron a participar de manera bastante reservada haciendo juegos; de estas, fueron muy contadas las que sobrevivieron a esa primera época sin grandes pérdidas. Ahora que han pasado esas 3 décadas comienzan a verse no solo grandes inversiones de capital, sino la participación de instituciones ’serias’ como universidades. Y pensar que hace apenas 15 años la idea de una “escuela de programación de videojuegos” sonaba a poco menos que una ingenua fantasía. Hoy en día me ha tocado ver la aplicación de ‘procesos’ que en otra época solo había visto en los mas aburridas y acartonadas ‘empresas’ desarrolladoras de software de negocios. Y mas de uno defiende estas prácticas argumentando que se trata de un signo de ‘madurez’ de la industria. Por fortuna hasta ahora todas esas empresas desarrolladoras (si es que merecen ser llamadas con ese nombre) dependen demasiado del Outsourcing al grado de no desarrollar su propia tecnología…

Bueno, supongo que ya han de estar cansados de que cuente la misma historia una y otra vez; pero esta vez estoy mas o menos peocupado. Pues bien se sabe cual era el destino de aquellos rudos pistoleros que se quedaban demasiado tiempo en las áreas civilizadas. Una buena parte, al ver que no tenían ninguna preparación para obtener un trabajo honesto terminaban convirtiéndose en bandidos y casi todos acababan en la carcel o muertos. La única esperanza para esta gente era continuar viajando al oeste en busca de aventuras y esperar juntar una fortuna lo suficientemente grande para no acabar mendigando al llegar a viejos.

La pregunta es: ¿En que parte de este Western entra la programación en Ensamblador?

Pues que si en esta historia el viejo oeste es la tecnología y los colonos son los programadores, el Ensamblador sería con toda seguridad la pistola mas poderosa y mortífera de todo el salvaje oeste. De esas que solían volar en pedazos las manos de aquellos que las disparaban sin cuidado pero increíblemente efectivas en manos de un experto tirador. No voy a mencionar que el Ensamblador es lo mas cercano que un humano puede programar sin manejar directamente ceros y unos (aunque hay quienes podemos pueden hacerlo) ni que puede ser usado para hacer maldades tales como alteración de programas de otros, amenazas serias de seguridad o otras cosas que no voy a mencionar para no darles ideas a los desocupados. Entonces, en un mundo donde no tienes idea de lo que te vas a encontrar y por lo tanto no hay procesos definidos que seguir, la única salida es recurrir a técnicas y herramientas como esta para poder seguir adelante.

De hecho, en cierto libro sobre programación leí alguna vez que el término ‘vaquero’ se usó en otros tiempos para designar a aquellos programadores capaces de resolver alguna dificultad que los procesos de ‘ingeniería de software’ de la época no habían podido manejar. Es mas, en esos libros se decía que no era buena idea recurrir muy seguido a esta clase de soluciones y que lo mejor era apegarse a un método ‘formal’ de resolución de problemas siempre que fuera posible. Es mas, la lógica nos dice que esta forma de manejar los problemas con el tiempo tiende a desaparecer; sin embargo nada mas lejos de la realidad, pues en el mundo de la tecnología no solo los avances son rápidos sino también la obsolescencia y no pasa mucho tiempo antes de que el terreno que uno consideraba seguro y productivo acabe por ser insuficiente y resurja la necesidad de conquistar territorio nuevo. Por lo que a pesar de lo que los ‘profesionales de la industria’ digan, gente que se enfrente a lo desconocido siempre va a ser necesaria.

A veces me siento triste cuando veo la gente se pregunta cosas como “si aún se sigue usando el Ensamblador”, obviamente si uno se refiere a la parte ‘civilizada’ de la computación la respuesta es no. Pero si uno se asoma a las tecnologías mas recientes (de menos de un año de haberse creado) la respuesta definitivamente es no solo un rotundo si, sino que es la única opción.

Tan inutil y hasta peligroso resulta un pistolero en tiempos de paz como un maestro de escuela frente a una horda de feroces pieles rojas. Del mismo modo, un programador de Ensamblador no tiene nada que hacer en una empresa dedicada a la informática de negocios tradicional como un administrador de bases de datos no tiene nada que hacer ante un CPU que acaba de ser desarrollado por Intel o firma similar. En la paz no hacen falta pistolas…

¿Pero es que realmente vivimos en tiempos de paz?

Octubre 26, 2009 Publicado por asm86 | Uncategorized | , | 2 comentarios

Avenida RAM

–Direccionamiento de la Memoria Para Dummies–

Los ancianos de Estados Unidos tiene una simpática expresión para describir esas conversaciones nostálgicas de los años pasados: “Memory Lane”, lo que se traduciría como “camino de los recuerdos”. Sin embargo, tal término es perfecto para explicarle a un principiante como demonios funciona la memoria de una computadora. Hace muchas notas se dijo que la memoria de una computadora es similar a un enorme array de bytes que es tan grande como la capacidad de la propia memoria. Pero como se supone que ustedes son principiantes voy a explicarlo de una forma mas ‘amigable con el usuario’.

###Poner aqui el dibujo 1###

Este es un dibujo de la Avenida RAM. Se trata de una muy larga carretera con casitas a un lado. Cada casa se identifica por su número que es único e irrepetible. Es decir que no hay 2 o mas casas con el mismo número en esta calle. Dentro de estas simpáticas casitas viven los bytes, como ya saben (y si no lean la nota llamada “Cuantos Bits tiene un Byte” )los bytes pueden almacenar un nu\mero entero ente 0 y 255 porque tienen 8 bits. Como estas casitas son tan pequeñas solo puede vivir un byte en cada una de ellas. Aunque como buenos vecinos, algunos se ponen de acuerdo para trabajar juntos cuando se trata de representar cantidades mas grandes. Aunque esto se verá un poco mas adelante en esta nota. Por ahora hay que dejar claro ese concepto de “Direccionamiento” o “Addressing”

En idioma inglés, la palabra “Address” se traduce como “Domicilio” y la terminación “-ing” singifica el llevar a cabo una acción. Entonces el concepto de “Addressing” se traduce como “La acción de ubicar un domicilio dado” pero como esto es muy largo en idioma español la mayoría de los profesores usan el extraño término de “Direccionamiento”. Este término es sumamente confuso porque puede interpretarse como si la memoria pudiera moverse hacia una dirección en particular. Yo personalmente prefiero usar el término “Posicionamiento” porque da la idea de algo que busca colocarse en un espacio dado. Ahora sigamos con el asunto de la Avenida RAM.

Normalmente a uno no le interesa la casa de otras personas(a menos que seamos ladrones), sino el hecho de saber donde se encuentran para ir a visitarlas. Para llegar al domicilio de alguien necesitamos saber donde vive, por ejemplo la colonia, calle y número. Esta clase de datos normalmente se guardan en una agenda o libreta de direcciones. Una entrada de una de estas agendas puede verse así:

Nombre: Rosa Mesta

Domicilio: #700 de la Avenida Palo Alto

Ahora, dentro de la memoria RAM lo que almacenamos son datos. Y auque la computadora puede manejar números como posiciones de memoria sin ningún problema este no es el caso de los programadores tradicionales. Y al igual que la entrada de la Agenda anterior, tenemos un nombre (de variable) y su “Domicilio”:

Nombre: Salario

Domicilio: #1234 de la Avenida RAM

Entonces, supongamos que queremos llegar a donde está la variable salario. Para llegar ahí recorremos toda la Avenida RAM hasta llegar frente a la casa marcada con el número 1234. Al llegar ahí, quien vive en el número 1234 nos va a dar la información del salario, que en este caso es bastante cercano al mio:

###Poner aqui el dibujo 2

Un error bastante común es confundir el número que representa una localidad de memoria con la cantidad que esta almacena. Esto es como confundir a una persona con su casa. Pero pasa muy a menudo al manejar los famosos PUNTEROS. Para quienes tengan algo de experiencia programando en C/C++ tienen una vaga idea de lo que estoy hablando. De nuevo no me gusta el término puntero porque se presta a ambiguedad en español. En inglés esta palabra es “Pointer” y aunque no se exactamente lo que significa estoy seguro que no tiene nada que ver con cualquiera de las definiciones en español que hasta ahora he encontrado. Pues su significado es marcar una posición de memoria específica y no indicar una dirección a la que hay que moverse. Ahora volvamos con la analogía de la calle y la agenda:

Lo primero que hay que dejar en claro antes de continuar es que en Ensamblador no existe el concepto de “Tipo de datos” el contenido de un registro de CPU o de una localidad de memoria puede significar cualquier cosa porque para la computadora todos son números binarios, así que es posible hacer cosas locas como restar letras, usar cualquier variable como un puntero o revolver diferentes tipos de datos que no tienen nada que ver entre si. De lo único que hay que preocuparse es que los datos tengan el mismo ancho en bits y aún así hay muchas excepciones a esta regla. Ahora sigamos con los punteros.

No se si a ustedes les haya pasado que van a visitar a alguien que no habían visto en años y al tocar a la puerta los recibe un completo desconocido y les dice que la persona que buscan se casó, cambió de sexo, se fue de misionero al tercer mundo, tuvo hijos (en ese orden) y ahora vive feliz con su nueva pareja en un lugar muy lejano. Luego de eso el desconocido nos da la nueva dirección de la persona que ibamos a ver, y ya si luego de haber escuchado todo lo anterior aun queremos visitarle; pues anotamos en la agenda esos datos y vamos al nuevo domicilio.

###Poner aqui el dibujo 3###

Como ya se dijo, lo único que pueden almacenar las celdas de memoria son números; el significado de esos números no le interesa a la computadora; pero si a nosotros. Entonces, del mismo modo que la información que usamos la información dada por el desconocido para ubicar el nuevo domicilio de la persona que queremos encontrar, en programación podemos usar numero contenido en esta celda de memoria para ubicar la siguiente. Por ejemplo, si buscábamos a Rosa Mesta en el #700 de la Avenida RAM pero nos dicen que ahora vive en el #6941 de la misma calle, vamos al domicilio marcado con el #6941 a buscar a Rosa Mesta.

Esto niños, es lo que se conoce como “Puntero” una celda de memoria cuyo contenido se interpreta como la posición de una celda de memoria. Pero como nosotros programamos en Ensamblador tal cosa no es mas que una celda de memoria con un simple número que no se diferencia en nada de las otras miles de millones de celdas en una memoria convencional.

Pues esta nota ya quedó demasiado larga y aún no acabo de subirle todos los dibujos, espero continuarla mas adelante; algunas de las cosas que veremos serán los “memory alignment”, la verdadera razón por la que las posiciones de memoria se deben de escribir en Hexadecimal, el manejo de los registros generales como punteros y detalles importantes de los accesos eficientes a la memoria.

Octubre 19, 2009 Publicado por asm86 | Uncategorized | , , | Aún no hay comentarios

Una Parada en el Camino

–Prepárate para lo que viene–

Esta nota pertenece a la serie “Ensamblador desde Cero: La Saga del Completo Principiante”. Quien no la conozca o piense que esta nota carece de sentido, puede hacer click en el respectivo enlace de las barras de la derecha.

El camino ha sido largo y tedioso, aunque tu perspectiva de las computadoras ha cambiado luego de ver cosas como la diferencia entre el gabinete de una computadora y su procesador principal, que los bytes son una unidad de almacenamiento de información y no una unidad de peso como los gramos o que cuando se dice que las computadoras solo entienden ceros y unos se habla en serio. Hasta ahora, y si no te has aburrido de leer tantas letras, ya tienes el conocimiento suficiente como para atreverte a tomar un curso sencillo de programación en un lenguaje mas o menos decente como C.

Pero esto aún no basta para pasar la típica materia de Ensamblador de una carrera de Ingenierías cualquiera, que dicho sea de paso dejan mucho que desear. A partir de aquí verás temas un poco mas complicados pero igual de inúntiles desde el punto de vista de un verdadero programador de Ensamblador. Estos no se abordarán de una manera demasiado profunda ni se programará demasiado, mas bien son conceptos que pueden ser aplicados a cualquier plataforma programable en Ensamblador. Aunque hay 2 puntos importantes a considerar si el motivo por el que estás leyendo este blog es para aprobar una materia de la escuela: ¡La Pesadilla del Zombie Electrónico!

Mas adelante hay una nota sobre este problema pero en resumen, se trata de un gran rezago en la enseñanza del Ensamblador. En la mayoría de las universidades que conozco el Ensamblador que se imparte es para un CPU de Intel fabricado en 1979 y usan todas una antigua copia pirata de un compilador descontinuado en 1994. Normalmente de estos temas no se habla en este blog mas que para hacer burlas y chistes crueles; de hecho, el las nuevas computadoras con Windows Vista tales programas no corren sin el soporte de un emulador. Así que aunque en este curso se hablará primeramente de como trabajan los CPU’s actuales, se harán algunas referencias sobre la historia antigua de estas computadoras. Tengo la esperanza de que si aprenden como funciona una computadora actual, el que puedas entender las antiguas tecnologías será cosa de risa… Para mi.

Fuera de ese asunto, faltan los 2 temas considerados por lo principiantes como los mas difíciles: Instrucciones aritméticas y lógicas y manipulación de la memoria. O como dicen los maestros que quieren asustar niños “Direccionamiento”. Al final de esta serie va a haber (porque hasta hoy octubre del 2009 no los he puesto) algunos códigos típicos que les encargan a los estudiantes como poner al revés una cadena ascii, jugar con algunas llamadas al sistema, dibujar un reloj y si veo que esta serie tiene público puede que hasta les pase el código, archivos y ejecutables completos de un juego sencillo en Ensamblador listo para que se lo entregues a su maestro. De ese modo acabarás todas tus materias, podrás pedir la beca para residencias de mas de 9000 pesos mexicanos, podrás pedir chamba como un respetable administrador de bases de datos y serás un feliz padre (o madre) de familia y te veré comiendo con tus hijos en el parque municipal unas tortillas de harina recién hechas.

O podré arruinarte la vida mostrándose cosas sobre las computadoras que harán de ti un geek ermitaño sin empleo que atacará a otros ‘profesionales de la industria de IT’ de manera instintiva. Aunque esto no lo haré directamente, si se conviertes en asiduo lector de este blog poco a poco tu desprecio por otros ‘desarrolladores’ irá creciendo hasta el nivel en que “les des asco” a otros ‘profesionales de la industria’ por tu actitud hacia ellos. Pero no te preocupes, el asco será mutuo. Pero no hablemos de cosas feas y sigamos con nuestro feliz tour for este alegre y colorido mundo del Ensamblador especialmente pensado para los principiantes.

Octubre 15, 2009 Publicado por asm86 | Uncategorized | , , | Aún no hay comentarios

Ensamblador Desde Cero

–La Saga del Completo Principiante–

¡Bienvenido seas al fascinante mundo de la programación en Lenguaje Ensamblador! Frente a ti se encuentra lo que probablemente será tu primer contacto con el mas antiguo y poderoso de los lenguajes de programación que existen. Esto no es una exageración, pues otro de los nombres con el que es conocido es precisamente como Código Máquina. Y como podrás ver al final de este pequeño serial programar en lenguaje máquina es dificil pero no imposible. Pero eso solo sucederá si eres capaz de llegar al final del mismo.

No se ni me importa que fue lo que te trajo hasta aquí; pero dos son los tipos de personas que terminan en este lugar: Los primeros son simples estudiantes de Ingeniería en computación que en realidad no les interesa programar y solo quieren acreditar una materia para titularse y convertirse en administadores de bases de datos. Los segundos en cambio son aquellos valientes programadores aspirantes a hackers que quieren aprender el verdadero lenguaje de la máquina por el simple placer de hacerlo. Algunos de estos últimos ya tienen idea del enorme poder de este lenguaje y la enorme dificultad que implica dominarlo pero saben que lo necesitan para hacer sus programas. De momento no me importa a cual de estos grupos pertenezcas, igual podrías ser un simple estudiante ahora y tu opinión cambie al ver todo lo que es posible lograr con el Ensamblador. Así que prepárate para lo que vas a ver.

Breve descripción de lo que te espera:

Esta serie trata de explicar los conceptos teóricos mas básicos de la programación en Ensamblador, tales como lo que son los bits, bytes, posiciones de memoria, formatos de numeración binaria y hexadecimal, direccionamiento de la memoria e interfaz básica con el sistema operativo. Así como las herramientas básicas para comenzar a programar, al final deberías ser capaz de hacer un Hola Mundo en Ensamblador sin ningún problema. Por cierto, estas notas no fueron escritas en orden cronológico ni serán las últimas en formar parte de la serie.

Una última cosa: Esta pequeña serie de notas de blog interconectadas están pensadas para aquellos que no tengan grandes conocimientos de computación. De hecho, si esta es tu primera experiencia con la programación será mejor, pues la programación en Ensamblador no se parece nada a la de otros lenguajes mas para ‘humanos’ tales conocimientos solo te estorbarían. Así que si crees que ya sabes programar es mejor que olvides todo lo que has visto hasta ahora, pues todo lo que crees saber de nada te servirá en el camino que estás a punto de recorrer.

>>>>Pasa al siguiente nivel>>>>

***Esta nota pertenece a “La Saga del Completo Principiante”*** Da click en este enlace para pasar a la siguiente entrada de esta serie.

Octubre 12, 2009 Publicado por asm86 | Uncategorized | , , | Aún no hay comentarios