Para que un ordenador realice una tarea, debe tener cargado en memoria un programa adecuado que le indique las tareas a realizar y el orden correcto en el que deben ser realizadas.

Todo programa se escribe en un lenguaje informático concreto y para ello los programadores se ayudan de los algoritmos y los diagramas de flujo.

La palabra algoritmo proviene del conocido matemático persa Al-Juarismi y podemos definirla como:



conjunto de instrucciones u órdenes dispuestas adecuadamente que permiten realizar una actividad mediante pasos sucesivos que no generan dudas a quien deba realizarla

Dado un estado inicial y una entrada y siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los diagramas de flujo sirven para representar algoritmos de manera gráfica:

Diagrama de flujo:

 

Los principales tipos de lenguajes utilizados son tres:

  1. Lenguaje máquina
  2. Lenguaje de bajo nivel (ensamblador)
  3. Lenguaje de alto nivel (compiladores e intérpretes)

Instrucciones al ordenador

Los diferentes pasos o acciones de un algoritmo se expresan en los programas como instrucciones o sentencias.

Un programa consta de una secuencia de instrucciones, cada una de las cuales especifica ciertas operaciones que debe ejecutar el ordenador.

Las instrucciones básicas y comunes en casi todos los lenguajes de programación pueden englobarse en:

  • instrucciones de entrada/salida (transferencia de información entre dispositivos y periféricos)
  • instrucciones selectivas (en función de los resultados obtenidos puede seleccionarse la tarea a realizar, son las también conocidas como instrucciones condicionales)
  • instrucciones repetitivas (repetición de un nº determinado de veces de una secuencia de instrucciones)
  • instrucciones especiales (gráficos, comunicaciones, …)

La elaboración de un programa requerirá conocer el juego o repertorio de instrucciones del lenguaje.

1. Lenguajes máquina

Los lenguajes máquina son aquellos que están escritos en lenguajes inteligibles directamente por la máquina. En ellos las instrucciones son cadenas binarias (1 y 0) que especifican una operacion y las posiciones (direcciones) de memoria implicadas en la operación.

El lenguaje máquina depende del hardware de la computadora y, por tanto, será diferente de un ordenador a otro.

Las ventajas de programar en lenguaje máquina son la posibilidad de cargar o transferir el programa a la memoria sin necesidad de traducción alguna, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje.

Los inconvenientes superan a las ventajas:

  • dificultad y lentitud en la codificación del programa
  • los programas sólo funcionan en máquinas con el mismo microprocesador

En los principios de la Informática, sólo se podía programar a nivel máquina y únicamente lo hacían los ingenieros que la diseñaron ya que sólo ellos conocían su funcionamiento interno.

Para evitar los lenguajes máquina y acercar la programación a todo tipo de usuarios se crearon los lenguajes de bajo nivel y los de alto nivel cuya sintaxis está más cerca del lenguaje humano que el lenguaje máquina, sobre todo los de alto nivel.

2. Lenguajes de bajo nivel

Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador, constituido por instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones artiméticas son ADD, SUB, DIV, etc.

Una instrucción típica sería: ADD M, N, P

Que podría significar «suma el número contenido en la posición de memoria m con el almacenado en la posición n y deposita el resultado en la posición de memoria p«

Evidentemente, es mucho más se ncillo recordar el nemotécnico que su equivalente en código máquina:

0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por el ordenador como el lenguaje máquina, sino que requiere de una fase de traducción.

El programa original escrito en lenguaje ensamblador se denomina programa o código fuente y el programa traducido al lenguaje máquina se conoce como código objeto, que ya es entendido directamente por el ordenador.

El traductor de programas fuente a objeto es un programa llamado ensamblador.

La ventaja de los lenguajes ensambladores frente a los lenguajes máquina es su mayor facilidad de codifición y, en general, su velocidad de cálculo es muy similar.

Los inconvenientes son:

  • dependencia total de la máquina, lo que impide su transportabilidad a una máquina diferente
  • la formación de los programadores es más compleja que la correspondiente a los programadores de alto nivel, ya que exige no sólo las técnicas de programación, sino también el conocimiento del interior de la máquina

El ensamblador está limitado en la actualidad a apicaciones a tiempo real, control de procesos y dispositivos electróncos, etc.

3.Lenguajes de alto nivel

Los lenguajes de alto nivel son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Normalmente, un programa escrito en un lenguaje de alto nivel es independiente de la máquina. Por tanto, son programas portables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificación en diferentes tipos de ordenador: PC, MACINTOSH, RISC, …

Ventajas de los lenguajes de alto nivel:

  • el tiempo de formación de los programadores es relativamente corto comparado con lenguajes de otro tipo
  • la escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos, con sentencias con nombres como READ, WRITE, PRINT, OPEN, …
  • las modificaciones y puestas a punto de los programas son más fáciles
  • reducción del coste de los programas
  • transportabilidad

Los inconvenientes son:

  • no se aprovechan los recursos internos de la máquina, como sucede en los lenguajes máquina y ensambladores
  • ocupan mucha más memoria
  • son más lentos al ejecutarlos

Los programas fuente creados con lenguajes de alto nivel también deben ser traducidos para poder ejecutarse. De esta tarea se encargan los compiladores o los intérpretes.

Diferencias entre compiladores e intérpretes:

COMPILADOR

INTÉRPRETE

Un programa que ha sido compilado puede correr por si solo, pues en el proceso de compilación se transforma en lenguaje máquina Es un programa que lee línea a línea un programa escrito en un lenguaje; en lenguaje fuente y lo va traduciendo a un código intermedio para ejecutarlo
El archivo generado por el compilador sólo funciona en la plataforma en donde se lo ha creado Un intérprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en acciones
Un archivo compilado puede ser distribuido fácilmente conociendo la plataforma, mientras que un archivo interpretado no funciona si no se tiene el intérprete La ventaja del intérprete es que dado cualquier programa se puede interpretado en cualquier plataforma (sistema operativo)
En cuestión de velocidad, un archivo compilado es de 10 a 20 veces más rápido que un archivo interpretado El proceso de traducción se realiza en cada ejecución
El proceso de traducción se realiza una sola vez La ejecución es más lenta ya que para cada línea de código es necesario realizar la traducción
Una vez compilado el programa, el código fuente no es necesario para ejecutarse el programa, así que puede permanecer en secreto si se desea El código fuente es necesario en cada ejecución, así que no puede permanecer en secreto