Ciencia y Tecnología

¿Qué es la programación de software?

28 Abr 2014 – 06:00 PM EDT

En cualquier ordenador podemos distinguir dos elementos esenciales: el hardware y el software. El hardware es la parte física, los chips y los cables (la máquina) mientras que el software son los programas que se ejecutan sobre esta pieza de ingeniería física.

Publicidad

En este post nos dedicamos a dar unas pinceladas de este segundo elemento, el software, y más en concreto en cómo se confeccionan los programas.

Programación de software

Un programa informático es el resultado final de un proceso que empieza con el planteamiento de un problema. Un programa es un conjunto de instrucciones escritas con un lenguaje de programación y que serán ejecutadas en un ordenador.

Cada PC reconoce un lenguaje propio, denominado lenguaje máquina o ensamblador, que consta de unas instrucciones muy a bajo nivel, en las cuales se accede directamente a los elementos físicos de la máquina como por ejemplo los registros.

Por ejemplo son del tipo: copia lo que hay en una posición concreta de la memoria a un registro concreto o suma lo que hay en dos registros o copia lo que hay en un registro a otra posición de memoria. La unidad de control (a la unidad central de proceso o CPU) es quien es capaz de entender estas instrucciones sencillas y controlar su ejecución. Como ya sabes, cada máquina tiene una configuración física diferente, y también un lenguaje ensamblador diferente. Por ejemplo, es diferente el ensamblador de un PC que el de un Mac.

an image

Etapas de la programación

Publicidad

En la primera etapa de la informática todos los programas se hacían utilizando el código máquina, pero aparte de que es muy complicado de programar y muy difícil de leer, una vez tenemos el programa sólo lo podemos ejecutar en un tipo de máquina concreto. Si cambiamos de máquina perdemos todos nuestros programas.

Es por estos factores que aparecen los lenguajes de programación de alto nivel, donde se busca por una parte un lenguaje más fácil de escribir y leer, y por la otra la portabilidad, es decir que podamos traer los programas de una máquina a otra. Realmente lo que la máquina ejecuta continúa siendo código máquina, pero el programador escribe en otro lenguaje. Hace falta, por lo tanto, una etapa de traducción intermedia. Esta traducción puede ser por dos mecanismos diferentes: la compilación y la interpretación:

- Compilación: antes de ejecutar nuestro programa, lo compilamos. Lo que denominamos compilador (que es otro programa) primero reconoce si nuestro código está escrito siguiendo las reglas del lenguaje y, si no hay errores, lo traduce a código máquina. Lo que posteriormente se ejecuta es el código máquina que se ha generado.

Publicidad

- Interpretación: el código se va ejecutando instrucción a instrucción, y una a una se van traduciendo a código máquina. Quien lo hace es el intérprete (también otro programa).

Hay un tercer mecanismo que es el de Java, que utiliza una solución mixta, primero con un compilador que no genera código máquina para la máquina física sino para lo que se llama una máquina virtual (la famosa máquina virtual de Java). A este código de máquina virtual se le llama byte-code. La máquina virtual en realidad es un interprete que después va ejecutando (traduciendo a código máquina real) el byte-code instrucción a instrucción.

Fases intermedias de la programación

Pero entre el planteamiento del problema y el programa es necesaria otra fase, la de concepción de un algoritmo. Un algoritmo es también la resolución del problema como una secuencia de acciones, pero no destinado a ser ejecutado en un ordenador sino en lo que podríamos denominar máquina abstracta o ideal.

Un algoritmo está escrito en lenguaje humano, como el castellano (a diferencia del programa que está escrito en un lenguaje de programación) y está destinado a que lo entienda el programador que después lo traducirá a cualquier lenguaje de programación concreto como Java, C++, Python, Visual Basic.

Publicidad

De esta forma, el algoritmo será la lista de las acciones necesarias por que se resuelva el problema inicial, en nuestro caso escritas en castellano. La elección del lenguaje en que codificamos el algoritmo dependerá de factores muy variados (y no siempre técnicos), como pueden ser la facilidad por aprenderlo, facilidad por leerlo, eficiencia, disponibilidad para la plataforma donde se ha de ejecutar, el precio y más.

¿Por qué pasamos por esta fase intermedia? Porque así la persona que resuelve el problema no tiene porque saber nada sobre el lenguaje que se utilizará después para hacer la codificación al programa, y quizás ni siquiera sepa cuál será este lenguaje.

Los algoritmos deben representar dos cosas: las acciones que hace falta hacer y los objetos sobre los cuales se hacen estas acciones, es decir los objetos que el algoritmo manipula. Para hacer esto de una manera que lo pueda entender cualquier programador se hace utilizando lo que se llama pseudo-código, que no es más que, en nuestro caso, castellano con unas reglas sintácticas concretas para representar las acciones y los objetos.

Resumiendo, los programas están escritos en un lenguaje de programación concreto y los algoritmos en pseudo-código, un castellano modificado con ciertas reglas sintácticas.

Publicidad

Ejemplo de programación

Problema: calcular la media de dos números con una calculadora tradicional

Objetos: una calculadora (no científica)

Solución:

  1. Poner en marcha la calculadora pulsando el botón ON
  2. Introducir el primer número
  3. Pulsar la tecla "+"
  4. Introducir el segundo número
  5. Pulsar la tecla "/"
  6. Teclear el número "2"
  7. Pulsar la tecla "="

Esta secuencia de siete acciones nos describe como debemos hacer para resolver un determinado problema. Como podemos ver es muy similar a una receta de cocina. A un algoritmo debemos decirle los ingredientes y enseres que necesitamos (los objetos de qué hablábamos) y como se preparan (las acciones).

Espero que esta explicación haya sido útil y te haya enseñado a entender un poco más sobre cómo funciona un programa y los pasos necesarios para programar.

Te invito a compartir el artículo y expresarte en los comentarios.

Publicidad