Si has llegado hasta este post seguramente sea porque deseas investigar un poco más sobre que es eso de programar. O quizás, ya tienes nociones sobre el tema pero te pasa como a mi, que el hambre de conocimientos te empuja a leer por si descubres algo nuevo que no sabías. Sea como fuere, voy a intentar hacerte una introducción a la programación, desgranarte que es y otras curiosidades, para que tengas tu hipocampo bien alimentado con esta nuestra religión, la informática.
Hello world. Hola mundo.
¿Qué es la programación?
La programación -también referida en algunas publicaciones como codificación– es el proceso de escribir y desarrollar instrucciones en un dispositivo electrónico, principalmente un ordenador o un dispositivo móvil (smartphone, tablets, etc). Tienen como finalidad la resolución de un problema mediante un ordenador, utilizando algoritmos -instrucciones- y datos.
Si consultamos la definición oficial de la RAE, esto es:
4. tr. Elaborar programas para su empleo en computadoras.
Estas instrucciones se escriben mediante un lenguaje de programación, el cual será interpretado por el dispositivo en cuestión. Juntas, formarían lo que conocemos como programa, aplicación (app), ejecutable o, incluso, portal web.
Historia de la programación
Siempre he creído que la mejor forma de empezar en algo es conociendo su historia, aunque sea a grandes rasgos. Y tal como hicimos en la introducción a las bases de datos, vamos a repasar la evolución de la programación a lo largo de la historia.
Los inicios
Si queremos marcar un punto de partida en este tema, podemos situarlo en 1801, cuando el francés Joseph Marie Jacquard inventó el telar programable. Este usaba los orificios de las tarjetas perforadas para conseguir tejer patrones en la tela, lo cual permitía que hasta los usuarios más inexpertos pudieran elaborar diseños complejos. Es decir, pasaba sus «instrucciones» a una máquina, diciéndole como hacer la tarea.
Unos años más tarde, entre 1842 y 1843, Ada Lovelace empezó a traducir las memorias del matemático italiano Luigi Menabrea sin saber que estaba creando el primer lenguaje de programación para calcular la serie de números de Bernoulli con la máquina de Babbage, considerados por muchos el padre de la computación. Por ello, Ada Lovelace está considerada la primera programadora de la historia.
El siguiente salto nos lleva a 1890, cuando Herman Hollerith codificó los datos del censo en tarjetas perforadas, simulando el comportamiento de los conductores de trenes que identificaban a los pasajeros según el orificio que hacían en su ticket.
Las décadas 1930-1940
En 1934, el estadounidense Alonzo Church expresó el cálculo lambda (diseñado para investigar la definición de función, la noción de aplicación de funciones y la recursión) a través de fórmulas, utilizándolo para resolver el Entscheidungsproblem (en español, problema de decisión).
Dos años más tarde, en 1936, el matemático inglés Alan Turing creó la máquina de Turing, un dispositivo que manipula símbolos sobre una tira de cinta (lee y escribe 0s y1s), en función de una tabla de reglas. A pesar de su simplicidad, esta máquina puede adaptarse para simular la lógica de cualquier algoritmo de un computador. De hecho, se suele usar para explicar las funciones de una CPU.
La década de los 40 sirvió para seguir ampliando horizontes, donde hubo una explosión de máquinas de computación electrónicas y electromecánicas. En 1945, Von Neumann introdujo su famosa arquitectura, aunque esto lo veremos en la introducción a computadores.
Durante esta época, los programadores debían desarrollar sus líneas en código máquina, un lenguaje directamente interpretable por un circuito microprogramable, como un procesador (computadora) o un controlador (automáta). Estos circuitos digitales solo pueden trabajar con dos únicos niveles de tensión que, por abstracción, se simbolizan con el 0 (ausencia de corriente) y 1 (pasa corriente). Es decir, el lenguaje máquina solo puede trabajar con estos dos signos, mediante el uso de álgebra booleana y el sistema binario. Aunque a día de hoy existen lenguajes de alto nivel, estos a fin de cuentas, son «traducidos» a código máquina para que el ordenador pueda entenderlos y ejecutarlos.
Konrad Zuse publicó en 1948 un artículo acerca de un lenguaje inventado por él entre 1942 y 1946, el Plankalkül, aunque solo fue un diseño teórico ya que Zuse murió antes de que se pudiera desarollar el lenguaje en 1972.
En 1949 se utilizó el lenguaje ensamblador por primera vez como un tipo de lenguaje que podía «simplificar» el código máquina (y entrecomillo porque no es simple, aunque es más visual que el máquina).
1950 – Llegan Autocode, Fortran, LISP o Cobol
En el año 1952, Alick Glennie desarrolló Autocode, el que algunos consideran el primer lenguaje de programación compilado, es decir, puede traducirse directamente a código máquina.
Y llega en 1957 Fortran, creado por John Backus y considerado junto a Autocode los primeros lenguajes de alto nivel. Es el primer lenguaje que incluía palabras reservadas inglesas como IF, GOTO o CONTINUE. Fue especialmente desarrollado para trabajar con proyectos científicos, matemáticos y estadísticos. Actualmente se sigue utilizando en algunas de las supercomputadoras más avanzadas del mundo.
Un año después, en 1958, llega LISP, el lenguaje creado por John McCarthy en el MIT y basado en el cálculo lambda desarrollado por el antes mencionado Alonzo Church. Podemos considerarlo como uno de los grandes inspiradores de Python.
También en 1958 llegó ALGOL, un lenguaje algorítmico creado conjuntamente por un comité de científicos informáticos estadounidenses y europeos. Este lenguaje está considerado el punto de partida de algunos de los lenguajes más importantes de la historia y actualidad, como Pascal, Java y C.
Y en 1959 aparece en escena COBOL, creado con la intención de ser un lenguaje de programación universal que pudiera ser usado en cualquier ordenador y orientado, principalmente, a los negocios. Y les salió bien la jugada porque a día de hoy es la base informática de casi todo el negocio de banca: tarjetas de crédito, cajeros automáticos…
Décadas 60-70-80
El período comprendido desde 1960 hasta 1989 trajo un gran florecimiento de lenguajes de programación. De hecho, la mayoría de paradigmas más importantes y que actualmente se usan surgieron en estos años.
En los años 1963 y 1967 surgen los lenguajes CPL y BCPL respectivamente, considerados los precursores del lenguaje C.
En 1964 aparece en escena BASIC, desarrollado por John Kemeny y Thomas Kurtz, un lenguaje para estudiantes que no tuviesen una buena base formativa en tecnología y matemáticas pero que podrían seguir usando computadores. Más tarde, este lenguaje sería desarrollado más a fondo por Bill Gates y Paul Allen o, lo que es lo mismo, Microsoft. De hecho, se convirtió en el primer producto comercializado de la empresa.
PASCAL nos llegaría en 1970, cuyo nombre viene del célebre matemático francés Blaise Pascal. Fue desarrollado por Niklaus Wirth como una herramienta de aprendizaje para la programación, por lo que era fácil de aprender. Fue el lenguaje favorito en los primeros años de Apple dado su fácil uso y potencia.
En el año 1972 llegaría el gran redoble de tambores: nacía el lenguaje de programación C, desarrollado por Dennis Ritchie y que es el lenguaje padre de muchos de los lenguajes usados hoy en día. Le dedicaré una serie de entradas solo para él.
En ese mismo año llegó también SEQUEL o lo que hoy se conoce como SQL. Aunque surgió como un lenguaje de consultas a bases de datos, más tarde incorporaría instrucciones de programación.
Cabe resaltar que la década de los 60 y 70 trajo un debate considerable sobre si utilizar o no la programación estructurada o, lo que es lo mismo, prescindir de la sentencia GOTO para realizar saltos por nuestro código y que tan mal visto estaba.
La década de los 80 se estrenó con la llegada de Objetive-C en 1983, desarrollado por Brad Cox y Tom Love como el lenguaje principal para escribir el software de Apple. También en 1983, Bjarne Stroustrup creó C++, una extensión del C tradicional con orientación a objetos y que hoy en día es uno de los lenguajes más usados.
En el año 1987, Larry Wall desarrolló uno de los lenguajes scripting más famoso del mundo: Perl. A día de hoy sigue siendo de los más usados gracias a su diseño multipropósito: CGI, aplicaciones de bases de datos, administración de sistemas…
Otros lenguajes lanzados durante estas tres décadas fueron: Logo (1968), B (1969 y precursor de C), ML (1973), Ada (1983) o Matlab (1984).
De los 90 a la actualidad: la era de Internet
Y llegaron los 90. Y llegó Internet. La informática cambiaba a una velocidad vertiginosa y la programación no iba a ser menos.
Justo en el año que empezaba la década apareció Haskell, lenguaje de programación de propósito general cuyo nombre es en honor al matemático estadounidense Haskell Brooks Curry. Este lenguaje con fines matemáticos se utiliza en múltiples industrias enfocadas a cálculos, registros y procesamiento de números complicados.
Al año siguiente, en 1991, apareció Python. Si, ese lenguaje que últimamente está tan de moda se desarrolló y lanzó en los 90. Su nombre está inspirado en la compañía británica de comedia Monty Python (de hecho, varios de los tutoriales, muestras e instrucciones que hay en la red contienen referencias a ellos) y su desarrollador es Guido Van Rossum. Este lenguaje que en la actualidad usan empresas como Google, Yahoo o Spotify es de alto nivel y tiene propósito general. Su sintaxis es más amigable que otros lenguajes como Java o C y su curva de aprendizaje suele ser más liviana.
1991 también fue el año de lanzamiento de Visual Basic, desarrollado por Microsoft. Permitía a los programadores usar el arrastrar y soltar para elegir y cambiar fragmentos de código preseleccionados a través de una interfaz gráfica.
Saltamos hasta 1995 donde surgió Java, un lenguaje de alto nivel y de propósito general que es uno de los más usados hoy en día. Fue desarrollado por James Gosling y tiene funcionalidad multiplataforma, pudiendo encontrarlo en ordenadores, móviles o parquímetros. Hay varias teorías de donde procede su nombre, dado que su primer nombre fue Oak (por un roble que había fuera de las oficinas), pero la marca ya estaba registrada y pasó a llamarse Green. Finalmente, se optó por Java. Es este nombre el que genera controversia, dado que hay hipótesis de si se trata de las iniciales de sus desarrolladores (James Gosling, Arthur Van Hoff y Andy Bechtolsheim), un acrónimo que vendría a decir Just Another Vague Acronym («sólo otro acrónimo ambiguo más») o si debe su nombre a un tipo de café disponible en la cafetería cercana (de ahí que el icono de Java sea una taza de café caliente). Un pequeño signo que da fuerza a esta teoría es que los cuatro primeros bytes (el número mágico) de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE.
También en 1995, Rasmus Lerdof lanzó al mundo PHP, cuya primera visión fue enfocada a la creación de páginas webs dinámicas y desarrollo de lado del servidor. Es uno de los lenguajes más extendidos en la web en la actualidad dado que WordPress está basado en él, aunque también lo encontramos en Joomla, Wikipedia o Facebook.
Y como no hay dos sin tres, 1995 trajo también consigo a JavaScript (que no hay que confundir con Java), creado por Brendan Eich en tan solo 10 días. Usado también para la creación de webs dinámicas y desarrollos del lado del cliente, hoy en día es uno de los lenguajes de programación web más extendidos. Junto a HTML y CSS, forma parte de las tecnologías centrales de la WWW.
Con el cambio de milenio, en el 2000, nos llegó C# (pronunciado C Sharp) de la mano de Microsoft, en su esperanza de combinar C++ con la simplicidad visual de Visual Basic, compartiendo muchas similitudes con Java. Este lenguaje está presente en casi todos los productos de Microsoft.
Otros lenguajes desarrollados en esta época son: Ruby on Rails, Go, R, Swift y Scala.
Conceptos generales
Para comprender la disciplina que engloba la programación, es importante comprender los conceptos básicos que vamos a manejar. Aunque en las futuras entradas que dedique a la programación sobre un lenguaje concreto volveré a definirlas, he querido recopilar aquí las más importantes o destacadas.
Algoritmo
Un algoritmo es una de las partes más importantes dentro del universo de la programación. Se define como una descripción no ambigua y precisa de las acciones que hay que realizar para resolver un problema bien definido en un tiempo finito.
Podemos pensar en ellos como una receta de cocina, por ejemplo. Sin embargo, es un método general para resolver todos los casos posibles del mismo problema y, por lo tanto, es independiente de los datos de entrada de cualquier caso concreto.
Problema
Es una proposición encaminada a averiguar el modo de obtener un resultado concreto o datos de salida a partir de unos datos de entrada o partida.
Lenguaje de programación
Conjunto de reglas semánticas y sintácticas que se usan para codificar instrucciones de un programa o algoritmo de programación. Como hemos visto en esta misma entrada, existen infinidad de ellos.
Entorno de programación o desarrollo
Conjunto de herramientas usadas para desarrollar un programa.
Recursos
Conjunto de componentes hardware (CPU, disco duro, etc) que usamos para elaborar y desarrollar un programa.
Compilación
Es el procedimiento por el cual un programa traduce el lenguaje de programación empleado a lenguaje máquina, que es el que interpreta el ordenador. El software usado para este fin se conoce como compilador.
Depuración
Es el proceso de búsqueda, identificación y corrección de los errores surgidos durante la programación.
Tipos de datos
Una de las características importantes a la hora de programar es la elección de los tipos de dato a emplear, los cuales indican a la computadora qué son y cómo debe manejarlos. Porque el ordenador no trabaja igual manejando un número entero que uno decimal o una cadena de caracteres.
Conclusión
Y con esto llegamos al final de esta introducción a la programación, la primera entrada dedicada a esta rama de la informática.
Hemos definido que es programar, recorrido su historia desde el inicio hasta la actualidad mencionando los lenguajes de programación que surgieron en cada década del siglo XX y hemos visto algunos conceptos generales para seguir aprendiendo en futuras entregas.
¿Me ayudas a difundir este post por redes sociales? Tienes los botones justo abajo.
Recuerda suscribirte a nuestra newsletter para no perderte ninguna novedad en nuestra web. Tienes el formulario justo aquí debajo y en el pie de página. Solo recibirás la notificación de que hemos publicado una nueva entrada, ¡nada más!
Hasta la próxima, ¡un saludo!