Lo más básico

Vamos a arrancar con lo necesario para empezar en la programación... qué es programar?... qué es un computador?... cómo está formado?...  que es un sistema operativo?... los conocimientos mínimos previos a crear nuestros programas.

¿Qué es programar?

A un altísimo nivel, podemos decir que programar es darle órdenes a un computador, le decimos lo que queremos que haga.

Dije “computador/computadora”... ¿Pero qué es eso?

Para un programador, un computador es una caja, a la que le entra algo y devuelve algo, tiene una entrada y una salida. La tarea de esta caja es transformar la entrada en salida.

introducción a la programación

Pero... ¿cómo lo hace?

Supongamos que tenemos que hacer un cálculo mentalmente… “2 + 3”

calculo

Primero debemos recordar los dos números a sumar, el 2 y el 3, los memorizamos. Ahora buscamos una manera de sumarlos… de chiquitos nos enseñaron que podemos sumar contando, vamos a usar palitos:

- 2 (dos palitos) = | |  

- 3 (tres palitos) = | | |

- 2 + 3 = | |   + | | |  = | | | | | = 5 palitos

Recopilando… primero memorizamos los números, tuvimos que recordar ambos, y después realizamos la operación mediante un proceso, que consistía en contar los palitos... el proceso de suma. Y el computador hace esto: memoriza lo que entra, lo procesa, y devuelve el resultado. Entonces decimos que la computadora es una caja que memoriza y procesa para transformar una entrada en una salida.

introducción a la programación

A lo que ingresa, o a la entrada, se le llama dato y al resultado, o salida, se le llama información. El dato es algo que podemos medir, que no nos representa nada. La salida es algo que nos permite tomar decisiones, se procesan esos datos. Hay dispositivos para ingresar datos que son llamados de entrada y otros de salida para mostrar los resultados. También hay de entrada y salida, hacen las dos cosas.

introducción a la programación

Así que como programadores, es eso, memoriza y procesa, y nuestros programas son los que van a decir cómo tiene que hacer esta transformación de entrada en salida.

¿Y cómo le damos órdenes?

Para que la máquina nos entienda tenemos que hablar el mismo idioma, pero la computadora está formada por circuitos electrónicos, no habla! solo puede determinar si pasa o no energía por cada uno de sus circuitos, de sus cables, como una lamparita prendida o apagada. Esto es equivalente a tener dos estados.

En matemática existe un sistema formado por dos estados, dos dígitos, el sistema binario formado por el 0 (cero) y el 1 (uno), así que mediante este sistema se puede representar el paso o no de energía, el encendido o apagado, uno mediante el 0 y el otro mediante el 1. A cada uno de estos dígitos se lo llama bit.

introducción a la programación

Si se juntan muchos de estos circuitos se van formando códigos, así es como se crean códigos de 8 bits llamados bytes, el código ascii, que hace una equivalencia entre el código binario y una letra o un número. De esta manera podemos representar datos.

ascii

Pero esto no es solo para datos, los procesadores también tienen códigos para representar instrucciones, como el proceso de contar para sumar. Este es un primer paso para hablarle a la computadora: el lenguaje de máquina. Conociendo los códigos de cada operación, o sea, de cada instrucción, podemos programar.

instrucciones procesador

Convengamos que programar recordando cada código de 8 bits de cada instrucción, en ceros y unos, es muy difícil. Al principio se hacía así, pero con el tiempo empezaron a surgir lenguajes más parecidos al humano, de fácil escritura, que  traducen a código de máquina. En realidad, no a código de máquina directo, sino al que puede manejar el sistema operativo.

El sistema operativo

El sistema operativo que es el que maneja todo el Hardware, maneja los hilos, y además permite la interacción con el usuario. Básicamente, logra que todo funcione, hardware y software, se necesitan las dos partes. Algunos de los sistemas operativos más conocidos son Linux, Windows, Unix, Android, Mac, iOS. Nosotros programamos por encima del sistema operativo.

sistema operativo

Compilador e Intérprete

Volviendo a los lenguajes, un lenguaje es de alto nivel cuanto más se acerca al humano y de bajo nivel cuanto más se acerca el de máquina.

introducción a la programación

Como vimos, nosotros escribimos en estos lenguajes y ellos lo convierten en algo que puede manejar el computador, el sistema operativo. Hay dos formas de hacer esta conversión: por compilador y por intérprete. El compilador es un programa que agarra el código fuente y genera un archivo ejecutable, de una, lo puede generar o no.  Si hay errores se da cuenta en el proceso de compilación.

compilador

El intérprete es un programa intermediario en la ejecución, va leyendo nuestro código línea a línea y lo va ejecutando. Encuentra los errores a medida que ejecuta.

interprete

Es un poco más lenta la ejecución por intérprete, porque está el programa intermediario en el medio, en cambio en el compilador se genera directamente el ejecutable.

compilador vs interprete

También hay mixtos, intérpretes que hacen un precompilado para detectar errores. Estos son algunos ejemplos de lenguajes compilados más conocidos: C, C++, C#, Java. Y estos son lenguajes interpretados: Javascript, Python, PHP, Ruby. El caso de Java es especial, es un lenguaje compilado pero el compilador no va hacia el lenguaje de máquina que maneja el sistema operativo, sino que va hacia una máquina virtual, que es la que interactúa con el sistema operativo. Dicha maquina virtual es la que termina ejecutando nuestro código.

java virtual machine - jvm

Todos estos lenguajes tienen cosas parecidas, sin embargo, hay distintas maneras de escribir el código, según los paradigmas. Los paradigmas son: estructurado, objetos y funcional (algunos autores consideran que hay más). El estructurado es la base, los demás van agregando restricciones, como dice Robert Martin en su libro Arquitectura Limpia, por eso estructurado es lo primero que se suele aprender, la lógica básica, los algoritmos.

Hasta aquí llegamos con lo básico para empezar en la programación. Lo próximo que veremos son los algoritmos en el siguiente artículo, la escritura de la lógica de la programación.

Recursos utilizados