domingo, 18 de septiembre de 2011

¿Qué es eso de "programar"?

Los ordenadores son máquinas que sirven para el tratamiento de la información. Su funcionamiento básico consta de 3 pasos:

 
  1. Obtención de la información (ENTRADA)
  2. Proceso de la información (PROCESO)
  3. Devolución de resultados (SALIDA)




Para llevar a cabo estas acciones, los ordenadores cuentan con elementos de dos tipos diferentes:
  • Elementos HARDWARE: son todos los componentes físicos del ordenador, los que se pueden tocar y ocupan un espacio físico. Ejemplos: CPU, RAM, disco duro, monitor, teclado, etc.
  • Elementos SOFTWARE: son los que forman la parte lógica del PC. Se podría decir que software es todo lo que no es hardware. Lo constituyen los programas y los datos.
Si nos centramos en el SOFTWARE, éste puede ser de varios tipos:
  • Software de Sistema: está diseñado para controlar y gestionar el hardware del equipo, y para permitir la ejecución de software de aplicaciones. Ejemplos: Sistemas Operativos, BIOS, gestores de arranque, etc.
  • Software de Aplicaciones: se trata de programas diseñados para ayudar al usuario a realizar tareas muy específicas. Ejemplos: software empresarial, software de contabilidad, suites de oficina (OpenOffice, Microsoft Office,...), software de gráficos, reproductores multimedia, software educativo, programas de simulación, etc. 
  • Software de Programación: es utilizado por los programadores para crear otros programas y aplicaciones, probarlos, modificarlos y mejorarlos. Las herramientas de este tipo pueden agruparse en varias categorías, entre las que se encuentran:
    • herramientas de construcción de aplicaciones,
    • herramientas de depuración y de verificación,
    • entornos de desarrollo integrado (IDE).
    • ...
Y ¿qué es un programa?

Según la Wikipedia, un programa informático es "un conjunto de instrucciones que, una vez ejecutadas, realizarán una o varias tareas en una computadora".

Es decir, que mediante los programas podemos indicar al ordenador qué queremos que haga, y cómo queremos que lo haga. Pero el ordenador sólo es capaz de ejecutar órdenes y operaciones muy básicas: almacenar y recuperar información, comparar valores (numéricos o alfanuméricos) y realizar operaciones aritméticas sencillas (sumas, restas, multiplicaciones, etc.). Será combinando estas operaciones básicas como podremos hacer que el ordenador lleve a cabo procesos que pueden llegar a ser extremadamente complejos.

Pero además, para poder dar órdenes a la máquina, debemos conocer cuál es su "lenguaje", es decir, debemos saber cómo representar la información para que el ordenador la sepa interpretar. Este lenguaje es el denominado lenguaje binario, que cuenta únicamente con dos símbolos: el '0' y el '1'.


codigo_binarioToda la información que maneja un ordenador está expresada con estos dos símbolos mediante bits. Un bit es la unidad de memoria más pequeña de un ordenador, y su valor será siempre un 0 o un 1. Es evidente que no se puede almacenar mucha información en un solo bit, pero la memoria de un ordenador es capaz de almacenar grandes cantidades de ellos. Para representar la información, se agrupan los bits de 8 en 8, formando los llamados bytes u octetos. El byte es una unidad de memoria más útil, ya que cada byte puede almacenar un carácter alfanumérico (una letra, un caracter especial o un número).
 
¿Y si no domino el "lenguaje máquina"...?
 
Cuando queramos escribir un programa para indicar al procesador lo que debe hacer, debemos hacerlo usando el lenguaje que éste es capaz de interpretar, el de los unos y los ceros, el llamado lenguaje máquina. Pero para el hombre es muy difícil programar utilizando este lenguaje, ya que está muy alejado del suyo, y por este motivo existen otros LENGUAJES DE PROGRAMACIÓN más cercanos al lenguaje humano. Usaremos estos otros lenguajes para crear nuestros programas, pero hay que tener en cuenta que todos los programas, independientemente del lenguaje en el que se escribieron, deberán traducirse al lenguaje máquina antes de ser ejecutados, ya que éste es el único lenguaje que entiende la computadora.

Entonces, ¿existen otros lenguajes para comunicarse con el ordenador?

Efectivamente, el hombre ha inventado numerosos lenguajes que nos facilitan la tarea de programar nuestros ordenadores. Estos lenguajes son de muy diversos tipos, y se pueden clasificar según varios criterios. Vamos a ver solo algunas de estas clasificaciones:
  1. Según su nivel de abstracción (si es un lenguaje cercano al lenguaje máquina o no), podemos clasificarlos en:
    • Lenguajes de bajo nivel: son los que, por sus características, se encuentran más cercanos a la arquitectura del ordenador. El lenguaje de bajo nivel por excelencia es el Ensamblador.
    • Lenguajes de alto nivel: son los que se parecen más al lenguaje humano, y por lo tanto son más fáciles de usar y de entender. Las instrucciones son palabras y signos reconocibles por nosotros. Además estos lenguajes son independientes de la máquina, y por lo tanto los programas escritos con ellos deberían poder ejecutarse en cualquier computadora. Ejemplos: C, Java, Python, php, etc.


    1. Según su propósito (para qué se utilizan), podemos clasificarlos en:
      • Lenguajes de propósito general: se usan para cualquier tipo de aplicaciones.
      • Lenguajes de propósito específico: se usan para realizar tareas muy concretas.
      • Lenguajes de programación de sistemas: se usan para crear sistemas operativos y drivers.
      • Lenguajes de script: se usan para operaciones de control y auxiliares.
      1. Según la manera de traducirse. Ya se ha comentado que los programas deben ser traducidos al lenguaje máquina para poder ser ejecutados. Existen unos programas que se encargan de esta tarea, a los que podemos llamar genéricamente traductores. Según el tipo de traductor que tenga, podemos clasificarlos en:
        • Lenguajes compilados: son aquellos en los que un programa traductor (compilador) traduce el código del programa (código fuente) en código máquina (código objeto). Otro programa, el enlazador, unirá los ficheros de código objeto del programa principal con los de las librerías para producir el programa ejecutable. Ejemplo: C.
        • Lenguajes interpretados: son aquellos en los que un programa traductor (intérprete), ejecuta las instrucciones del programa directamente del código fuente, sin que sea necesario crear otro archivo ejecutable.
        1. Según la técnica de programación, podemos clasificarlos en: 
            • Lenguajes de programación convencional: con estos lenguajes se crea un único "programa principal", formado por una serie de comandos o instrucciones escritos secuencialmente (uno detrás de otro).
            •  Lenguajes de programación estructurada: se basa en que "es más fácil resolver muchos problemas pequeños, que un gran problema". Consiste en la descomposición de un programa en trozos más pequeños denominados módulos o subprogramas. Cada módulo se encargará de llevar a cabo una tarea concreta y bien definida.
            • Programación orientada a objetos:  se basa en la creación de clases y objetos, que siguen el modelo del mundo real. Cada objeto tendrá un estado y dispondrá de sus propios módulos para realizar acciones y para comunicarse con otros objetos. Ejemplos: C++, Java.
            • Programación orientada a eventos: la estructura y ejecución del programa dependen de los sucesos que ocurran en el sistema o que ellos mismos provoquen. El programador debe definir los eventos a los cuales el programa reaccionará, y las acciones que seguirá al presentarse cada uno. Al ejecutarse el programa, esperará a que ocurra un evento. Cuando esto pase, se ejecutará el código correspondiente al evento que se realizó. Ejemplo: Visual Basic  
          1. Según permitan el desarrollo de software para entornos gráficos o no, podemos clasificarlos en:
            •  Lenguajes de programación visual: permiten crear aplicaciones con un entorno gráfico amigable, compuestas por ventanas, menús desplegables, botones, barras de desplazamiento, etc. Suelen ser también lenguajes orientados a objetos, ya que estos elementos que componen la interfaz de las aplicaciones son precisamente objetos con propiedades y métodos. Además, también están orientados a eventos.
            • Lenguajes de programación no visual: las aplicaciones que se crean con estos lenguajes no disponen de entorno gráfico amigable.

          No hay comentarios:

          Publicar un comentario