Dije que lo iba a hacer, y aquí lo teneis. El post de programación.

Y es que, en vista de que cada vez me sale más gente interesada en el tema, he decidido abrir un post exclusivo para hablar de éste tema.

Pero veamos, ¿que es ésto de la programación?

No, no es como cuando programas el microondas de tu casa. La idea, es mas o menos, la de mandarle una serie de ordenes al micro de tu sistema. En éste caso, el más común, el PC. Pero, ¿podemos programar para otros dispositivos? ¡Por supuesto que podemos! Sólo que nosotros nos vamos a centrar en el más común que es nuestro PC.

Lo primero que tenemos que conocer, es cómo funciona un ordenador. Más o menos, resumido, es ésto.

[spoiler:38qxw52r][/spoiler:38qxw52r]

La CPU y la memoria siempre trabajan de forma conjunta, y a traves de los perifericos de entrada y salida, metemos o sacamos datos.

Un ordenador, es básicamente un microprocesador, una memoria, una ROM donde se almacena el programa del micro, que en éste caso es lo que llamamos BIOS, y una serie de entradas/salidas donde podemos manipular, manual o de forma automática, los datos que entran y que salen.

¿Y qué es lo que hace exáctamente un micro? Explicado de una forma muy símple, lo que hace es mover bits. Sí, así de simple. Un micro solo sabe sumar, comparar y desplazar bits, de un lugar a otro o en el mísmo lugar, mediante registros. En realidad, lo que ves en pantalla, no es más que una interpretación de esos bits.

Lo que nosotros queremos hacer, es controlar a ese micro. Le vamos a dar un guión, para que trabaje con él, que sepa lo que tiene que hacer. ¿Cómo tiene que manipular esos bits? Eso es lo que le queremos decir.

¿Cómo se lo decimos? Hay muchas formas. Se lo podemos dar a palo seco, en bits, siguiendo lo que se llama una tabla de instrucciones. En ésta tabla, se indica "las palabras de bits" que le tenemos que decir al micro, para que actue de una manera. Podemos, por ejemplo, hacer que almacene un número en un registro, y lo compare con otro número que le damos nosotros, y si son iguales, unas instrucciones, y si no, otras.

Pero hacer eso, es demasiado complejo. Demasiados bits, acabaríamos volviendonos locos. ¡Ponte tu a programar un "counter strike", con unos y ceros!

Exíste la posibilidad de hacerlo mediante un lenguaje. Que no es ni mas ni menos, que una especie de traducción "humana" de esas palabras de bits. De esta forma, es más sencillo. El primer lenguaje, es el ensamblador, el cual transforma esos bits, en palabras humanas, y viceversa a traves de lo que llamamos "compilador".

http://es.wikipedia.org/wiki/Lenguaje_ensamblador

No necesitamos nada expecial para programar en ensamblador. Desde windows, podemos acceder a DEBUG.EXE, que nos permitirá crear aplicaciones en ASM de 16 bit. Por ejemplo, tengo un video en el que muestro como programar el programa más puñetero posible con 10 bytes.

Pero aun siendo más simple, programar un "counter strike" con ésto, sigue siendo demasiado complejo. De manera, digamos, extrema.

Es por ello que exísten más lenguajes, como por ejemplo C. En C, ya es mucho más posible crear un "Counter Strike". Sin embargo, es un lenguaje más utilizado para programar a nivel de electrónica. Por ejemplo, los drivers de tus dispositivos, o tu sistema operativo. Está desarrollado para eso. Pero, ¿que más cosas se podrían hacer en C?

Podemos hacer, por ejemplo, un virus para la Game Boy (http://www.youtube.com/watch?v=AfrD4RdSGEs), podemos hacer un Vumetro con un microcontrolador (http://www.youtube.com/watch?v=WCi38g_Sq3g), o cualqueir tipo de cacharro que se nos ocurra (http://www.youtube.com/watch?v=EWlbyHvS3CM). En definitiva, no nos ceñimos exclusivamente a ordenadores.

Pero para programar un Counter Strike hace falta algo más...

Para eso está, por ejemplo, C++. Un lenguaje de programación, más orientado a software gracias a la POO (Programación Orientada a Objetos), donde podemos crear clases de objetos que podemos manipular en tiempo real. En un juego como el "Counter Strike", ésto se vuelve imprescindible. Un arma de las que usas en el juego, es una clase. Una caja, un efecto de partículas... son todo clases que sólo exísten en lenguajes con POO.

Luego tenemos muchos otros como Java, C#, VB.... en fín, un mundo.

Pero mucha gente me pregutna, ¿Cual es el mejor para empezar? La respuesta es, no hay mejor. Lanzate a por lo que quieras hacer. ¿Quieres programar un robot? Usa C. ¿Quieres programar un videojuego? Usa C++. ¿Quieres programar una aplicación para el PC? Usa C#, Java o VB (no me gusta mucho VB). Hay muchas alternativas, es sólo escoger la más acorde a tus gustos. A mi, personalmente, yo soy programador en C#, que es lo que domino. Y si tuviera que recomendar uno, recomendaría ese.

Ya escribiré más, pero por hoy, debería irme a dormir.