Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

El León Enjaulado

–Y el Circo de los Programadores–

huele a leon

Un día un avión se estrelló en el centro de la selva africana, pasaron los días y nadie los rescataba hasta que se les acabó la comida. Enmedio de la desesperación, un valiente se ofreció a internarse en la peligrosa selva en busca de alimento para todos. Pasaron las horas y aquél no regresaba. De pronto se escucha un grito:

–¡Rápido! ¡Abran la puerta!–

Cuando ven por la ventana, descubren al pasajero que salió por comida huir a toda prisa de un enorme león que le pisaba los talones, pero justo cuando abrieron la puerta, el perseguido se agacha y la bestia salta al interior del avión. Entre el pánico, quienes se quedaron encerrados con la bestia alcanzan a escuchar:

–Ahí les dejo este para que lo descueren. ¡Voy por otro!

No encontraba una mejor manera de describir como me siento luego de haber hecho lo que creía que sería un gesto de buena voluntad. Pues si son seguidores de este blog saben de mis peleas con ciertas personalidades de la ‘industria’ nacional del desarrollo de videojuegos. Este caso en particular se relaciona con lo descrito en la nota anterior titulada “Ya estás muerto”, específicamente la llamada “Primer videojuego”. Que trataba de un grupo de aficionados que querían desarrollar un juego “sencillo” para probar su habilidad. Resulta que me dio lástima ver lo mal que la habían pasado y quise ayudarlos un poco. Pero lo que ocurrió no era lo que esperaba.

No hace falta que les diga que la ayuda que les ofrecí no tiene nada que ver con el todopoderoso Lenguaje Ensamblador, y aunque me averguence decirlo, me rebajé a usar un lenguaje “de humanos” como el C++ con la versión mas reciente de DirectX. ¿Puede haber una manera mas sencilla de hacer un juego de video? Inclusive, hasta les busqué algunas herramientas libres de desarrollo y hasta les dije como descargarlas, configurarlas y usarlas (hasta con dibujitos y videos del Youtube). Pero aún así algunos consideraban que eso era demasiado dificil.

La idea era desarrollar un juego mas o menos sencillo que pudiera ser programado por cualquier quinceañero con una computadora con acceso a Internet. Sin embargo, algunos afirmaban que manejar el DirectX era “demasiado dificil” (deja vu) y que preferían usar bibliotecas como Allegro y SDL. Personalmente he jugado con ese tipo de bibliotecas, no me preocupa tanto que sean wrappers al DirectX, que su overhead las vuelva lentas como tortugas reumaticas  ni que pongan en una caja negra las llamadas al sistema, lo que no pude soportar es que no daban control sobre nada. Por ejemplo ¡SDL no da acceso directo al Frame Buffer! Creo que esta simple declaración deja en claro lo que pienso de él.

El que un principiante se asuste con el formato de llamada de DirectX y tema perderse en las confusas macros en notación húngara inventadas por Micro$oft puedo mas o menos entenderlo, ¡¿Pero asustarse con la función CallBack de Windows?! De hecho, una de las cosas a las que recurren mucho los desarrolladores aficionados es a los famosos “Manejadores de eventos” que son rutinas que hacen parecer que responden a ciertos eventos del sistema, cuando en realidad no es así. Eso me hizo recordar la época en que herramientas lamers como el Visual Basic se pusieron de moda. En realidad generaban código común y corriente pero nadie se atrevía a tocar una linea del código generado. En verdad, para alguién que tuviera un mínimo de conocimientos informáticos, el escuchar a estos lamers hablar de “Programación de Eventos” era similar a oir a un padre contarle a sus hijos sobre como los trajo la cigueña.

Volviendo al proyecto del “Primer videojuego”, lo siguiente a definir fueron las herramientas. Al final decidimos (o debería decir que les impuse) usar el compilador Mingw con Code::Blocks. Pasé mas tiempo buscando como configurarlo para que aceptara la última versión de DirectX que escribiendo mis primeros programas. Por cierto, Code::Blocks tiene una función que genera una aplicación “de prueba” de manera automática al hacer click en el icono del proyecto/sources. Así que todo lo que tenían que hacer para crear su primer programa en DirectX era dar click en sources, generar automáticamente el Main.CPP y oprimir el botón de compilación. Por alguna razón, luego de llegar a este punto la comunidad guardó silencio. Todos cambiaron de tema y nadie ha posteado en el grupo de “Primer Videojuego” desde entonces.

Dicen los japoneses que la diversión del karaoke(canto de aficionados) termina cuando sube alguien que si sabe cantar. Aunque en esa comunidad hay varios profesionales de “la industria” de los videojuegos nunca he visto que uno de ellos publique ya no digamos un juego completo, sino tan siquiera un demo jugable hecho por ellos. Me pregunto porqué entonces los autodenominados profesionales rondan estas comunidades. Es como alguien que presume de ser muy bueno para pelear y frecuenta las arenas de boxeo y lucha libre ¡Pero que nunca pelea! Me pregunto cual es el propósito de esta gente, lo único que sé es que si quieren medirse con alguien aquí estoy yo para que demuesten su valor si es que se atreven.

La pregunta que ustedes estarán haciéndose es ¿Y que tiene que ver esta historia absurda con la programación en Ensamblador? Bueno, la verdad es que estoy pensando hacer una DLL que pueda ser llamada desde los programas hechos en C++, esto no parece la gran cosa hasta que tomamos en cuenta que la DLL está codificada 100% en ensamblador y se llama de manera directa por el programa en C++. Espero que de esta manera quienes no conocen este lenguje y hasta le temen puedan contemplar su verdadera capacidad sin dejar la relativa seguridad de un lenguje ‘de humanos’ como C++. Mas o menos como un niño contemplaría desde lejos a un león enjaulado en un paseo por el circo. Poco a poco le iría perdiendo el miedo hasta que se acercara poco a poco a la jaula, meta sus manitas entre los barrotes y le de a probar al gran felino un poco de su algodón de azucar.

¿Y ahora que sigue? Supongo que jugaré con estos aficionados con sus propios juguetes y ya cuando llegue el momento sacaré los mios, lo interesante de este proyecto (cuya verdadera finalidad es la de mostrar como combinar el Ensamblador con otros lenguajes) es que no solo voy a hacer una ‘buena obra’ sino que de paso podré fastidiar un poco a ciertos lamers “profesionales”que han convertido a los integrantes de estas comunidades en sus groupies de tiempo completo.

Anuncios

agosto 24, 2009 - Posted by | Uncategorized | , , , ,

7 comentarios »

  1. Que onda cartman!, te dieron ritalin para que te compadecieras de lamers super weenies hut’jrs.

    ¿ Acaso un leon se compadece de la gacela ?
    ¿ Acaso Hittler se compadecio de los Judios ?

    La comunidad de Programadores de assembler en Castellano esta creciendo y te pones apoyar a lamers.

    Acuerdate que el que se junta con lobos aullar se enseñan y
    Cria cuervos y tendrás cuervitos. ¡Cria burros y …..!

    Comentario por b1ackpig | agosto 25, 2009 | Responder

    • Si quieres humillar a alguien que se cree fuerte solo apiadate de el.

      Ademas no estoy ayudando lamers, en realidad estoy ayudando a los programadores de Ensamblador a entrar a su mundo para fastidiarlos. Los programadores de Ensamblador son el leon cautivo y los lamers son los visitantes que lo contemplan del otro lado de las rejas. Solo quiero que se acerquen suficiente a la jaula… y de ser necesario, puede que un dia se me olvide asegurar el candado. Mas adelante les paso el link a esa comunidad.

      Comentario por asm86 | agosto 26, 2009 | Responder

  2. Otra cosa, acuerdate que no salen muy buenos resultados cuando combinas ensablador(dll) con lenguajes de alto nivel, te queda un espagueti de codigo y un mugrero de executable.

    Bueno, esta bien para apoyar a la comunidad de assembler, pero para apoyar lamers que no tiene ni la mas minima que es un numero en hexadecimal?

    Crea dlls para que sean llamadas por programas en assembler.
    Todo en assembler, como los terminators. uikkkk uik uik

    Comentario por b1ackpig | agosto 25, 2009 | Responder

    • Claro, es como cuando Homero Simpson quiso cruzar a Huesos con Bola de Nieve para obtener un animal con la limpieza del perro y la lealtad del gato. En realidad este proyecto tiene mas trasfondo politico que tecnologico. La idea es demostrarles lo ridiculo que es usar un lenguaje ‘de humanos’ combinado con una API que ya te hace el juego del tipo lamer->GameAPI9Create(NULL, Programacion,NULL); y que cualquier puberto espinilludo de secundaria puede hacer 3D usando los mentados Shaders. Espero que con esto dejen de ver con tanto respeto al “lamer mayor” de la comunidad. Personaje como los hay muchos en todas las comunidades de desarrollo. Mas adelante les hablare de este tipo de personajes y como fastidiarlos.

      Comentario por asm86 | agosto 26, 2009 | Responder

  3. Muy buena la del leon :D ….todos nosotros algun dia fuimos lamers…..y no hay que olvidarse de ello….y en mi caso me hubiera gustado que algien me hubiera guiado por el buen camino del conocimiento…. e aprendido yo solo gracias a tantas y tantas horas en google, manuales etc…y e dejado de ser un lamer(creo yo)….por eso digo si vas a enseñar o ayudar a ese grupo de personas para que crusen la etapa del lamer….pues muy bien.—nada esa es mi humilde opinion de un exlamer…porque ahora me considero un newbie…..
    Y nada el tema de los videjuegos es un tema que yo ya cruse hace ya mucho tiempito,…me ayudo mucho en el tema de la programacion en leguaje humano el Cpp(que creo que es bueno conocerlo) xDDD…lo hacia como un pasatiempo….. y el tema del leguaje asm + cpp pues esa una buena combinacion(espero que pongas algun articulo sobre ello aqui)….. jeje que me da miedo el Callback o el stdcall etc naaa mentira esos de los mensajitos de windows es solo cojerle el traquillo como todo.

    Saludos…byte.

    Comentario por Adel86 | agosto 26, 2009 | Responder

  4. Ya terminaste el editor que estas haciendo?

    Subelo a la red.

    Saludos.

    Comentario por El Julio | septiembre 1, 2009 | Responder

    • Que bueno que pusiste este comentario en esta nota y no en la de “Ya estas muerto”. El mensaje hubiera sido mas divertido.

      En cuanto al editor, por ahora lo unico que hace es mostrar las palabras dentro de un texto y donde estan. Si quieres lo subo pero no creo que sea mas util que aquel desensamblador que hice para el gp32 y que estaba tan mal programado que solo yo lo podia usar. En un rato mas lo hago amigable con el usuario.

      Comentario por asm86 | septiembre 1, 2009 | 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: