Historia y Evolución de la Programación: Desde Babbage hasta los Lenguajes Modernos

Historia de la Programación

Los primeros lenguajes de programación surgieron de la idea de Charles Babbage. Este profesor matemático de origen inglés, a principios del siglo XIX, predijo muchas de las teorías en que se basan los actuales ordenadores. Pensó en la creación de la llamada máquina analítica en el siglo XIX. Colaboró con Ada Lovelace, quien es considerada la primera programadora de la historia, pues realizó programas para aquella supuesta máquina de Babbage, en tarjetas perforadas. Como la máquina nunca llegó a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero sí supusieron un punto de partida de la programación, sobre todo si observamos que, en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babbage y Ada, que consistían, entre otras, en la programación mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice, por tanto, que estos dos genios se adelantaron un siglo a su época, lo cual describe la inteligencia de la que estaban dotados.

En 1823, el Gobierno británico apoyó a Babbage para crear el proyecto de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero Babbage se dedicó al proyecto de la máquina analítica, la cual, a diferencia de la máquina de diferencias, sí se podría programar con tarjetas perforadas, una idea inspirada en la creación de Joseph Marie Jacquard (francés). Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Entonces, Babbage intentó crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no era suficiente para hacer realidad sus ideas. Si bien las ideas de Babbage no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas:

  • Unidad de entrada, para introducir datos e instrucciones.
  • Memoria, donde se almacenaban datos y resultados intermedios.
  • Unidad de control, para regular la secuencia de ejecución de las operaciones.
  • Unidad Aritmético-Lógica, que efectúa las operaciones.
  • Unidad de salida, encargada de comunicar al exterior los resultados.

Charles Babbage, conocido como el «padre de la informática», no pudo completar en aquella época la construcción del computador que había soñado, dado que faltaba algo fundamental: la electrónica. El camino señalado por Babbage nunca fue abandonado y, siguiéndolo, se construyeron los primeros computadores donde la entrada y salida de datos se realizaba mediante tarjetas perforadas.

¿Qué es la Programación?

Un lenguaje de programación es un conjunto de reglas, notaciones, símbolos y/o caracteres que permiten a un programador expresar el procesamiento de datos y sus estructuras en una computadora. Cada lenguaje posee su propia sintaxis. También se puede decir que un programa es un conjunto de órdenes o instrucciones que resuelven un problema específico basado en un lenguaje de programación.

En los últimos 50 años, los lenguajes de programación han evolucionado del código binario de máquina a herramientas poderosas que permiten crear abstracciones complejas. Como todos sabemos, el «cerebro» de un ordenador es la Unidad Central de Procesamiento (CPU). En general, una CPU puede almacenar números y realizar operaciones matemáticas básicas con ellos. Además, esos números se pueden recibir de o enviar a la memoria o a los distintos dispositivos de entrada y salida (teclado, monitor, disco duro, impresora, etc.). Para cada una de estas operaciones existe una instrucción diferente, y cada CPU tiene su propio juego de instrucciones, más o menos amplio dependiendo de su complejidad.

En la memoria del ordenador se puede guardar una secuencia de esas instrucciones, que el ordenador es capaz de seguir de principio a fin. Esas secuencias se denominan programas ejecutables. Cualquier función que realice un ordenador, por sofisticada que parezca, en realidad, no es más que una larga secuencia de instrucciones elementales. Para los humanos, resulta muy complicado escribir directamente los programas ejecutables porque cualquier tarea requiere muchísimos pasos. Aunque el ordenador los ejecuta de forma instantánea, es necesario disponer de programas ejecutables para que los ordenadores funcionen.

Los lenguajes de programación se han creado para facilitar la elaboración de programas ejecutables. Un lenguaje de programación es un lenguaje artificial diseñado para dictar instrucciones a un ordenador, pero tienen la ventaja de que no es necesario desmenuzar las tareas tanto como lo requiere la CPU, sino que permiten definir tareas de forma más abstracta. Por ejemplo, un lenguaje de programación puede tener una instrucción para calcular raíces cuadradas, aunque existan CPUs que no tengan esa capacidad.

Existen muchos lenguajes de programación diferentes, pero en general, un programador que quiere conseguir que el ordenador realice determinadas operaciones, tiene que seguir estos pasos:

  • El programador escribe una secuencia de instrucciones siguiendo las reglas de un lenguaje de programación. Esa secuencia de instrucciones se guarda en uno o varios archivos de texto. A estos archivos se les llama código fuente del programa.
  • Mediante un programa especial (llamado compilador o intérprete), el ordenador convierte los archivos de texto en archivos ejecutables, es decir, traduce la secuencia de instrucciones escritas por el programador a un formato que la máquina puede entender. A estos archivos se les denomina programas ejecutables.
  • El programador o cualquier otro usuario puede solicitar al ordenador que ejecute el programa.

Características de los Lenguajes de Programación

  • Legibilidad: Consiste en que el lenguaje tenga una sintaxis sencilla, fácil de leer y de compilar (ejecutar).
  • Ortogonalidad: Permite combinar en una sola instrucción diversas características del lenguaje, logrando así programas más cortos y compactos.
  • Naturalidad para la aplicación: Consiste en que el lenguaje proporcione herramientas adecuadas para el fin para el que está diseñado.
  • Soporte a la abstracción: Permite solucionar tipos de problemas, no solo problemas concretos. Debe permitir al programador crear funciones y procedimientos.
  • Entorno de programación: Los lenguajes deben ir acompañados de un entorno de desarrollo adecuado.
  • Portabilidad de los programas: Se refiere a la capacidad de un lenguaje para crear programas que funcionen en cualquier máquina, independientemente de la plataforma o fabricante.

Ventajas de los Lenguajes de Programación

  • Los lenguajes de programación son infinitamente más comprensibles para los humanos que las secuencias de instrucciones de máquina.
  • Un mismo código fuente puede ejecutarse en ordenadores con diferentes juegos de instrucciones, utilizando compiladores o intérpretes capaces de realizar la traducción.
  • Mejorando los compiladores o intérpretes, un mismo código fuente puede convertirse en programas ejecutables más rápidos.

La Importancia de la Programación

La programación es importante porque permite automatizar todo tipo de tareas. Cuando un trabajo se realiza manualmente, el tiempo empleado suele ser directamente proporcional a la cantidad de trabajo. Así pues, cabe destacar que la programación maximiza la eficiencia en cualquier actividad que, de otro modo, podría llevar mucho tiempo a una persona.

Clasificación de los Lenguajes de Programación

Los lenguajes de programación se clasifican de diversas formas, entre las que se encuentran:

Clasificación según el Nivel de Abstracción

  • Lenguajes de bajo nivel: Son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A este le sigue el lenguaje ensamblador, ya que al programar en él se trabaja directamente con los registros de memoria de la computadora.
  • Lenguajes de medio nivel: Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel, pero poseyendo, al mismo tiempo, cualidades que lo hacen más cercano al lenguaje humano y, por tanto, de alto nivel.
  • Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés.

Clasificación según la Forma de Ejecución

  • Lenguajes compilados: Los compiladores son programas cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina, es decir, código binario). Al usar un lenguaje compilado, el programa desarrollado no se ejecuta mientras existan errores. Solo se ejecuta una vez que el programa ha sido compilado y no presenta errores en el código.
  • Lenguajes interpretados: La tarea de conversión se realiza cada vez que se desea ejecutar el programa. El intérprete lee una instrucción del programa fuente, la convierte en código ejecutable, la ejecuta y pasa a la siguiente. En este caso, el usuario necesita disponer del programa fuente para poder ejecutarlo.

Lenguajes Tipificados y Lenguajes No Tipificados

En programación, los elementos que pueden almacenar información se denominan variables. Dependiendo del tipo de información (números, letras, etc.) que se almacena, se utilizan variables de un tipo u otro. Una característica que diferencia unos lenguajes de otros es la rigidez o permisividad con respecto a la tipificación de variables.

  • Los lenguajes tipificados: Son aquellos en los que una variable siempre guarda un mismo tipo de datos.
  • Los lenguajes no tipificados: No requieren la declaración de tipo de las variables, y una misma variable puede almacenar valores de tipos distintos a lo largo de la ejecución del programa.

Algunas ventajas de los lenguajes tipificados son que permiten detectar errores en tiempo de compilación, lo que a su vez permite a los compiladores optimizar mejor el código ejecutable. Además, la exigencia de declaración de tipo de las variables facilita la comprensión de los programas. Algunas ventajas de los lenguajes no tipificados son la mayor flexibilidad de los programas y una serie de características que, aunque no se derivan necesariamente de la falta de tipificación, suelen presentar estos lenguajes: simplicidad, mayor número de tipos de datos, etc.

Clasificación según el Paradigma de Programación

  • Lenguajes procedurales: Establecen cómo debe ejecutarse una tarea, dividiéndola en partes que especifican cómo realizar cada una de las subtareas asociadas. La mayoría de los lenguajes de alto nivel son de este tipo: FORTRAN, BASIC, Pascal, etc.
  • Lenguajes declarativos: En este caso, el proceso por el cual se ejecuta el programa no aparece de forma explícita en el programa; el programador no tiene que indicar el proceso detallado de cómo realizar la tarea.
  • Lenguajes orientados a objetos: El diseño de los programas se centra más en los datos y su estructura. Los programas consisten en descripciones de unidades denominadas objetos, que encapsulan los datos y las operaciones que actúan sobre ellos.
  • Lenguajes orientados al problema: Están diseñados para problemas específicos, principalmente de gestión. En estos lenguajes, los programas están formados por sentencias que ordenan qué se quiere hacer. Generalmente, estos lenguajes suelen ser generadores de aplicaciones que permiten automatizar, en la medida de lo posible, la tarea de desarrollo de software para aplicaciones de gestión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.