Origen e historia de los lenguajes de programación

Blog colaborativo de: Valentina Pardo, Raúl González y Ricardo Toledo


A lo largo de la historia han aparecido cientos de lenguajes de programación que nos permiten, mediante el uso de código y las instrucciones de los mismos, desencadenar diferentes acciones en un ordenador.

Debido a la complejidad de elaborar directamente código máquina (todo en ceros y unos), se realizó una abstracción y se creó el primer lenguaje de programación: el lenguaje ensamblador, un lenguaje de programación de bajo nivel que permitía programar de manera más sencilla mediante la utilización de mnemónicos que representaban un conjunto de instrucciones básicas para el ordenador (copiar el contenido de un registro en otro, sumar y restar 1 al contenido de un registro, etc.). Cada una de estas instrucciones utilizaban como operandos posiciones de memoria, registros del ordenador, etc.


No obstante, cuando hoy en día nos referimos al término de “lenguaje de programación”, nos referimos a los lenguajes de programación de alto nivel, que utilizan un léxico similar al del lenguaje natural y, por lo tanto, son más legibles para el usuario.

Para entender adecuadamente cómo funcionan los lenguajes de alto nivel es necesario comprender una serie de conceptos básicos iniciales, los cuales se exponen a continuación.

Cuando un programa se ejecuta, se carga en la memoria del ordenador y utiliza el espacio disponible de la misma para almacenar los datos con los que trabaja y opera. Estos datos se almacenan en variables, a cada una de las cuales se le asigna un espacio en memoria en función de su tipo, que puede ser primitivo (entero, real, carácter, etc.) o compuesto (cadena, array, objeto Persona, etc.).


Además, los lenguajes de programación estructurada cuentan con una serie de estructuras para el control del flujo de los programas (esencialmente, los bloques if-else y switch-case como sentencias condicionales y los bucles for y while para la ejecución iterativa de bloques de código) y permiten la creación de funciones, que son bloques de líneas de código que realizan una determinada acción, pueden devolver un valor y pueden tomar parámetros como argumentos que modifiquen su comportamiento. Mediante el uso de estas estructuras y de las funciones se logra la reutilización de mucho código, de manera que codificar resulta más sencillo.

A continuación, se muestran algunos ejemplos básicos en Java del uso de las estructuras más utilizadas de los lenguajes.

-          Sentencias condicionales:
o   Bloque if-else: escribe por pantalla si un usuario tiene menos o más de 18 años.


o   Bloque switch-case: asigna a la variable mensaje el nombre correspondiente al número de día almacenado en la variable dia.


 -          Bucles:
o   For: imprime por pantalla los números del 0 al 9.


o   While: equivalente al for anterior.


      -          Función o método: suma dos números a y b.



Los lenguajes de alto nivel

El primer lenguaje de alto nivel es FORTRAN, que apareció en 1957 y supuso un gran impacto en su época, ya que era fácil de utilizar y permitía la creación de programas complejos que en lenguaje ensamblador hubiesen sido prácticamente imposibles de codificar. Se utilizó principalmente para la realización de cálculos matemáticos.

Más adelante, en la década de los 70, aparecieron dos lenguajes, C y Pascal, que hoy en día se siguen utilizando esencialmente con fines didácticos para enseñar a programar a los principiantes en el ámbito de la informática, ya que utilizan un léxico y una sintaxis sencilla y concisa. En concreto, C es un lenguaje que se sigue utilizando para la implementación de sistemas operativos UNIX, mientras que Pascal ha caído en desuso [1].

A mediados de los 80, con la aparición de C++ (extensión del lenguaje C), se popularizó el paradigma de la programación orientada a objetos, que cambió la forma de tratar los datos en el mundo de la programación, y es que era posible representar el mundo real de una manera más fiel a la realidad [2].

Apareció el concepto de clase, que permitía definir una plantilla para crear objetos con unas determinadas propiedades o atributos y un determinado comportamiento que venía definido por sus métodos (por ejemplo, Juan es un objeto de la clase Persona que tiene una serie de propiedades que lo definen, como DNI, nombre o apellidos). Además, se introdujeron algunos conceptos como el de herencia (mecanismo por el cual una clase puede conservar los atributos y métodos del padre) o polimorfismo (mecanismo por el cual un mismo método con un determinado nombre puede tener diferente comportamiento en clases diferentes).

Desde entonces, han aparecido múltiples lenguajes de programación orientados a objetos que a día de hoy son muy solicitados en el mercado laboral, como pueden ser Java, Python o C#, y que cada vez incorporan más tecnologías que los hacen más usables en diferentes ámbitos informáticos.

Uno de esos ámbitos, quizá el más importante, es el ámbito de la web. En la década de los 90, aparecieron HTML, JavaScript y PHP, lo que supuso el inicio de la programación web tal y como la conocemos hoy en día y la introducción de una nueva perspectiva a la hora de programar.

En esta nueva visión, las aplicaciones no necesitan ser instaladas por el cliente para poder ejecutarlas, sino que a partir de los navegadores web (Internet Explorer, Chrome, Firefox, Edge, etc.) e Internet pueden conectarse y utilizar aplicaciones que están “instaladas” (el término exacto es desplegadas) en un servidor remoto [3].



Lenguajes de programación actuales y del futuro

En la actualidad, el mercado de la programación se enfoca principalmente al mundo de la Inteligencia Artifical (IA) y Big Data, así como al desarrollo de aplicaciones web y de aplicaciones móviles, por lo que resultaría interesante conocer los lenguajes de programación más demandados y aquellos nuevos que están apareciendo para cada uno de estos ámbitos.

A continuación, se listan algunos de los lenguajes más interesantes:

-          Inteligencia Artificial:

Python: lenguaje de programación interpretado (no se generan ejecutables, sino que se va traduciendo e interpretando línea a línea en función sea necesario), multiparadigma, multiplataforma y con tipado dinámico. Se usa en diferentes áreas de tecnología: web, inteligencia artificial, procesamiento de datos, etc. [4]
Prolog: apareció a principios de los 70 y es uno de los lenguajes de programación lógica más utilizados en el ámbito de la Inteligencia Artificial.
Haskell: surgió a principios de los 90 y, aunque no era muy popular en la comunidad informática, su nombre ha vuelto a aparecer frecuentemente después que Facebook consiguiese desarrollar su sistema de filtrado anti-spam de mensajes en este lenguaje [5].
Lisp: no se trata de un lenguaje como tal, sino de una familia de lenguajes multiparadigma como Common Lisp, Scheme o Racket, cada uno de los cuales dispone de sus propias funciones.
Pyro: desarrollado por Uber, fue lanzado en 2017 y se utiliza para el análisis de los parámetros que determinan la mejor ruta entre dos puntos, entre otros usos [6].

      -          Big Data:

Python
R: lenguaje de programación enfocado al análisis estadístico de los más utilizados en la minería de datos. Cuenta con funciones para la generación de gráficos de alta calidad [7].
Scala: lenguaje multiparadigma similar a Java con características de lenguajes funcionales y orientados a objetos que es utilizado por grandes empresas como Facebook, NetFlix o TripAdvisor para el desarrollo de aplicaciones de Big Data.
Apache Spark: más que un lenguaje de programación, es una plataforma de computación distribuida de código abierto que permite gestionar y analizar grandes volúmenes de datos de una forma rápida, escalable y con unos costes de implementación y mantenimiento más baratos [8].

      -          Programación web:

Python
Java: permite el desarrollo de aplicaciones empresariales mediante su plataforma de programación Java EE y el uso de diferentes tecnologías como las JSPs (permiten mezclar código HTML y código Java) y los EJBs (esencialmente, permiten encapsular los datos almacenados en la base de datos de tal manera que sean tratados como objetos)
JavaScript: al igual que Python, es un lenguaje interpretado, que se ejecuta en el lado del cliente y permite el desarrollo de páginas web dinámicas. Se usa para validar datos de formularios, despliegue de menús, etc. Además, JavaScript dispone de una serie de frameworks que cada vez son más solicitados en el mercado laboral. Algunos de los más conocidos son Angular (para el desarrollo de aplicaciones web de una sola página) y jQuery.
PHP: lenguaje de programación de propósito general que, al igual que JavaScript, permite la creación de páginas web dinámicas. A diferencia del primero, se ejecuta en el lado del servidor.

-          Programación móvil:

Java: se utiliza para el desarrollo de aplicaciones de dispositivos Android.
Swift: lenguaje de código abierto lanzado por Apple en 2014 para el desarrollo de aplicaciones en dispositivos iOS que se caracteriza por su rapidez, seguridad y sencillez.
Kotlin: apareció en 2012 y es uno de los lenguajes oficiales para el desarrollo de aplicaciones en Android. Se caracteriza por ser sencillo de aprender y su potencia para desarrollar grandes aplicaciones. Según informe publicado por Realm, se cree que en unos años superará a Java como el lenguaje de programación más usado para Android [9].

Conclusión

En definitiva, existen un gran número de lenguajes de programación, y muchos de ellos se utilizan para un campo concreto, como pueden ser JavaScript para la web o Prolog para la Inteligencia Artificial.  Por lo tanto, una persona que desee iniciarse en la programación en uno de estos ámbitos puede optar por uno de los lenguajes “especializados” para ese determinado ámbito, como podría ser Haskell en el mundo de la Inteligencia Artificial, o bien por un lenguaje de propósito general como Python o Java, que pueden ser aplicados en diferentes ámbitos. 

Referencias


[1] Julio Liarte (2016), Aprender a Programar en C ¿Aún tiene sentido?
[5] José Buendía (2016), Los lenguajes de programación más útiles para la inteligencia artificial:
[6] Manuel López Michelone (2017), Uber inventa un lenguaje de programación para hacer Inteligencia Artificial

Bibliografía

Diapositivas y material de apoyo de la asignatura
https://es.wikipedia.org/wiki/Historia_de_los_lenguajes_de_programaci%C3%B3n
https://www.ecured.cu/Lenguaje_ensamblador
https://es.wikipedia.org/wiki/Fortran
https://es.quora.com/Que-lenguaje-de-programaci%C3%B3n-deber%C3%ADa-saber-para-el-2017
https://es.wikipedia.org/wiki/Scala_(lenguaje_de_programaci%C3%B3n)
https://www.analyticsvidhya.com/blog/2017/01/scala/
Antonio Leiva (2016), ¿Por qué empresas que empiezan con lenguajes modernos se vuelven a Java?:
https://www.genbetadev.com/java-j2ee/por-que-empresas-que-empiezan-con-lenguajes-modernos-se-vuelven-a-java

Comentarios

  1. Thanks for sharing content and such nice information for me. I hope you will share some more content about. Please keep sharing! Programación en Python 3.7

    ResponderEliminar

Publicar un comentario