Está en la página 1de 41

LENGUAJES DE

PROGRAMACIÓN
HISTORIA
De las máquinas de
calcular a los
computadores
programables

Desde las primeras


calculadoras mecánicas
diseñadas en el siglo XVII
hasta los años 40 del siglo
pasado se han inventado
multitud de máquinas y
computadores mecánicos,
analógicos o electrónicos
que han intentado acelerar
y mejorar la precisión de los
cálculos.
De las máquinas de calcular a
los computadores programables

El punto culminante de todos los enfoques mecánicos para realizar


cálculos fue el famoso Motor Analítico diseñado por Charles Babbage en
1840. La diferencia fundamental con todos los artefactos anteriores es
que se trataba de una máquina de calcular programable mediante
tarjetas perforadas (Babbage se inspiró en el telar de Jackquard en el que
el diseño de los dibujos de las telas se podían configurar usando tarjetas
perforadas). La máquina estaba diseñada para trabajar en base 10 y se
podía conseguir que sus cálculos realizaran saltos condicionales y bucles.
Babbage trabajó durante más de 30 años para intentar construir la
máquina. Tenía una enorme complejidad para la época y
necesitaba muchísima financiación. En 1871 murió habiendo
podido construir sólo una parte.
De las máquinas de
calcular a los
computadores
programables

La matemática Ada Lovelace tuvo un papel


fundamental en la divulgación de la máquina,
de su sistema de programación y fue la
primera que entendió sus posibilidades más
allá del cálculo de fórmulas.
De forma poco habitual para la época, Ada
fue educada en el campo de las ciencias y de
las matemáticas. A principios de 1840, con
veinticinco años, conoció el trabajo de
Babbage y colaboró con él, dedicándose
durante varios años a conocer y estudiar el
diseño y el funcionamiento del motor
analítico.
De las máquinas de
calcular a los
computadores
programables

En 1843 publicó el trabajo "Sketch of the


analytical engine invented by Charles
Babbage" en el que describe el Motor
Analítico, añade reflexiones propias
sobre el alcance del invento y construye
un ejemplo completo, con tablas y
diagramas, de cómo hacer que la
máquina produzca la secuencia de los
números de Bernoulli. Se puede
considerar estas tablas y diagramas como
el primer programa de un computador.
De las máquinas de calcular a
los computadores
programables

Antes de que existiera ningún computador real, en


1936, el matemático inglés Alan Turing formalizó la
idea abstracta de computador, utilizando un modelo
muy sencillo de procesamiento: una máquina
abstracta con un scanner que lee y escribe 0s y 1s de
una cinta infinita (memoria) y se mueve y los escribe
en función de una tabla definida en la máquina
(programa). Con esta máquina abstracta (Máquina
de Turing) Turing explora la idea de lo computable y
lo no computable. ¿Existen problemas no
computables para los que no es posible inventar un
algoritmo que los resuelva? Turing demuestra que sí
y establece con su trabajo los límites de la
computación.
De las máquinas de
calcular a los
computadores
programables

En el mismo trabajo Turing define el concepto


de máquina universal que es capaz de leer de
la cinta un programa cualquiera y simular su
comportamiento en otra parte de la cinta.
Esta idea tuvo un profundo impacto en el
desarrollo de los computadores, porque
mostraba que es posible escribir programas
que tomen como datos otros programas. Esto
abre la puerta a la idea de los programas
almacenados en memoria (ya que son otros
datos más) y a la creación de compiladores e
intérpretes.
De las máquinas de calcular a los
computadores programables
En la década de 1940 hubo una explosión de máquinas de
computación electrónicas y electromecánicas. Fue una década
prodigiosa en la que se desarrollaron tecnologías cada vez más
rápidas y resistentes, y se consiguieron enormes avances en la
velocidad y precisión de los cálculos.
A mitad de esa década, en 1945, John Von Neumann, que
trabajaba en la construcción del ENIAC, introdujo un avance
fundamental. Propuso su famosa arquitectura en la que por
primera vez se proponen las dos ideas claves de los
computadores de propósito general: el programa almacenado
en memoria y un conjunto de instrucciones de procesamiento.
De las máquinas de calcular a los
computadores programables
En 1948 se construyó en la universidad de Manchester el primer
computador electrónico digital de propósito general diseñado por Max
Newmann.
La máquina de Manchester (llamada Baby) fue el primer computador con
un conjunto de instrucciones completo, capaz de realizar saltos,
condicionales y direccionamiento indirecto.
La primera ejecución de un programa fue el 21 de junio de 1948. En ese
año Alan Turing se incorporó a la universidad de Manchester, como
director del Laboratorio de Computación. Tres años después, con un
diseño ampliado en el que también influyó Turing, una versión mucho
mayor de la máquina se convirtió en el primer computador disponible
comercialmente, el Mark I. El primero se instaló en la universidad de
Manchester en febrero de 1951, un mes antes que el UNIVAC I fuera
entregado al Departamento de Censo de los EEUU. Se vendieron otras 10
máquinas a Gran Bretaña, Canadá, Holanda e Italia.
Los primeros lenguajes de programación
Los primeros computadores electrónicos se programaban
directamente usando el conjunto de instrucciones del
procesador, en código máquina, código hexadecimal.
El primer lenguaje de un nivel algo más elevado que el código
máquina es el ensamblador. Comienzan a crearse los primeros
programas que procesan lenguajes de programación, aunque
se trata de programas muy sencillos, ya que hay una relación
casi directa entre la notación en ensamblador y el código
hexadecimal que produce el ensamblador.
A finales de la década de los 40 se empiezan a intentar resolver
con los primeros computadores los primeros problemas
matemáticos.
Los primeros lenguajes de programación
Uno de los primeros algoritmos de Von Neumann realiza
una ordenación de un conjunto de números. Von
Neumann lo describe en una carta fechada en 1945.
Utiliza el conjunto de instrucciones del EDSAC (antigua
computadora británica) cuando todavía no se había
construido. El programa fue estudiado por Donald Knuth
en el artículo Von Neumann's first Computer Program, en
donde documenta que había un bug en las primeras
instrucciones. Es el primer bug escrito del que se tiene
historia. Si Von Neumann hubiera podido ejecutar el
programa en el EDSAC se hubiera dado cuenta del error y
hubiera sido la primera depuración de un programa.
El nacimiento de
los computadores
comerciales
UNIVAC
El UNIVAC fue el primer
computador comercial (1951). Con
este computadora aparece por
primera vez la figura del
programador: manuales, cursos de
formación, ofertas de empleo, etc.
El nacimiento
de los
computadores
comerciales
Instalaciones comerciales
del UNIVAC
El nacimiento de los computadores
comerciales
IBM 704
El IBM 704 fue el otro gran computador comercial de la
década de los 50.
Tuvo una difusión mucho mayor que el UNIVAC: centros
gubernamentales, universidades.
Los primeros lenguajes de programación de alto nivel se
desarrollan para este computador.
Programando los primeros computadores
El UNIVAC I era una máquina interesante para programar, con su
almacenamiento basado en líneas de retardo de mercurio y su
propensión a fallar. Los programas se introducían en el
computador tecleándolos en cintas magnéticas, una innovación
importante en ese tiempo.
El trabajo con el IBM 704 en la Universidad de NY fue una
experiencia radicalmente distinta de la del UNIVAC I. Fue
construido para ejecutar aplicaciones científicas, y su principal
innovación era una memoria de núcleo magnético, reemplazando
la memoria de tubos Williams del IBM 701. También tenía una
unidad aritmética en punto flotante. La máquina tenía el
equivalente a 128 KB de memoria principal, 32 KB de memoria
secundaria y cintas magnéticas que podía almacenar 5 MB de
datos. Operaba a 0.04 MIPS y costó 3 millones de dólares en 1957.
Los primeros lenguajes
de alto nivel
Los primeros lenguajes de alto nivel se desarrollaron a finales de la década de los 50:
• FORTRAN en 1956
• Lisp en 1958
Ambos lenguajes planteaban dos enfoques muy distintos desde el principio:
FORTRAN
• Primer lenguaje comercial, equipo de IBM dirigido por John W. Backus
• Lenguaje imperativo: estado, estructuras de control, contador de programa, celdas de memoria
• Lenguaje compilado
Lisp
• Lenguaje diseñado en un departamento de investigación, un equipo del MIT dirigido por John McCarthy
• Lenguaje funcional: funciones, recursión, listas, símbolos
• Lenguaje interpretado
Los primeros lenguajes de alto nivel
FORTRAN
Desarrollado por IBM para programar el IBM 704. Algunos datos:
• Su nombre proviene de FORmula TRANslating system.
• El primer manual de FORTRAN se imprime en octubre de 1956 para el
IBM 704.
• El primer compilador se comercializa en abril de 1956.
Cita de John Backus: “Una gran parte de mi trabajo viene del hecho de
que soy perezoso. No me gustaba escribir programas, y cuando estaba
trabajando en el IBM 701, escribiendo programas para calcular la
trayectoria de misiles, comencé a trabajar en un sistema de
programación que hiciera más fácil escribir programas”.
Los primeros lenguajes
de alto nivel

Ejemplo FORTRAN
Tomado del manual de
FORTRAN del IBM 704
Los primeros lenguajes de alto nivel
Lisp
Lenguaje de alto nivel desarrollado a finales de los 50 en el MIT por John
McCarthy.
Aunque históricamente el nombre del lenguaje se solía escribir con letras
mayúsculas (LISP), posteriormente se ha popularizado el uso de la
mayúscula sólo para la primera letra (Lisp). Esta forma es más fiel al
origen del nombre del lenguaje. Lisp no es un acrónimo, sino la
contracción de la expresión List Processing. El procesamiento de listas es
una de las características principales del Lisp.
McCarthy explica en un artículo de 1979 la historia inicial del Lisp:
“En el verano de 1956 durante el Dartmouth Summer Research Project on
Artificial Intelligence, el primer estudio organizado de Inteligencia
Artificial, tuve la idea de desarrollar un lenguaje algebraico para el
procesamiento de listas. Quería usarlo para el desarrollo de trabajo en
inteligencia artificial en el IBM 704” John McCarthy, History of LISP”
Los primeros
lenguajes de
alto nivel
Uno de los primeros
manuales de Lisp publicados
es el manual de LISP de
1960 para el IBM 704 escrito
por Phyllis A. Fox. del grupo
de investigación del MIT
dirigido por McCarthy.
Un ejemplo de código Lisp:
La explosión de
los lenguajes de
programación
Desde 1954 hasta la actualidad se
han documentado más de 2.500
(consultar en The Language List).
Entre 1952 y 1972 alrededor de
200 lenguajes. Una decena fueron
realmente siginificativos y
tuvieron influencia en el
desarrollo de lenguajes
posteriores.
La explosión de los lenguajes de programación
Algunas notas sobre la genealogía:
APL es un lenguaje algebraico declarativo de especificación de funciones y circuitos lógicos.
Su carácter declarativo ha tenido influencia en lenguajes como Prolog o Haskell.
Lisp no sólo es un lenguaje funcional, sino que también es el primer lenguaje interpretado,
ha influido en lenguajes dinámicos no funcionales como Python o Smalltalk. Lenguajes
como Smalltalk o Objective-C también heredan de Lisp algunas características funcionales.
SIMULA es el primer lenguaje que define conceptos como clase u objeto. Es el origen de la
programación orientada a objetos. Lenguajes como C++, Eiffel, o Java toman esta idea.
Frente a esta tendencia se encuentra otra visión de la programación orientada a objetos de
lenguajes como Smalltalk u Objective-C en la que se enfatiza más aspectos dinámicos como
el paso de mensajes o la modificación de clases en tiempo de ejecución.
La explosión de
los lenguajes de
programación
Algunos lenguajes
importantes y su fecha
de creación
Los creadores de los LPs
Si comprobamos la historia de los lenguajes de
La explosión programación, podemos clasificar a sus creadores en
tres grandes categorías:
de los • Investigadores trabajando en empresas
lenguajes de (Backus/IBM-FORTRAN, Gosling/Sun-Java)
• Investigadores en universidades y departamentos
programación de Informática (McCarthy/MIT-Lisp, Wirth/ETH-
Pascal, Odersky/EHT-Scala)
• Desarrolladores open source que distribuyen su
trabajo a la comunidad (Wall/Perl,
Matsumoto/Ruby)
Lenguajes de programación
en la actualidad

El índice TIOBE es un indicador de la popularidad


de los lenguajes de programación. El índice se
actualiza una vez al mes. Las puntaciones se basan
en estadísticas no reveladas que incluyen el
número de ingenieros en todo el mundo, cursos y
aplicaciones desarrolladas. También se utilizan
resultados obtenidos en los motores de búsqueda
más usados.
El índice TIOBE no trata de medir el número de
líneas escritas en los lenguajes de programación
sino su popularidad e importancia en la
comunidad.
Lenguajes de
programación
en la
actualidad
Índice TIOBE Junio de 2022
Lenguajes de
programación
en la
actualidad
Índice TIOBE Junio de 2022
Lenguajes de
También es muy interesante comprobar la evolución de los
programación en la 10 lenguajes más populares en los últimos 10 años.
actualidad
La evolución no se detiene
Es interesante comprobar que cada vez es más fácil
desarrollar nuevos lenguajes de programación. Las
técnicas y herramientas de procesamiento de lenguajes
se han popularizado cada vez más y son accesibles a
mayor número de personas. Los lenguajes ya no sólo se
crean en departamentos con un gran número de
investigadores, sino también en comunidades open
source formadas por voluntarios interesados y motivados

Ejemplos de nuevos lenguajes y sus creadores:


La evolución no se detiene
Ejemplos de nuevos lenguajes y sus creadores:
Ruby
Lenguaje de programación ideado en 1993 por el
desarrollador japonés Yukihiro Matsumoto
Lenguaje multi-paradigma interpretado y muy expresivo
que actualmente se utiliza tanto para desarrollar
aplicaciones web como videojuegos.
Proyecto vivo, cada año aparecen nuevas versiones
La evolución no se detiene
Scala
Diseñado en 2003 por el profesor alemán Martin
Odersky
Respuesta a los problemas de los lenguajes tradicionales
imperativos para manejar la concurrencia
Está implementado sobre Java y corre en la Máquina
Virtual Java
La evolución no se detiene
Go
El nuevo lenguaje de programación de Google fue
lanzado en 2009
Desarrollado, entre otros, por Ken Thompson, uno de los
padres del UNIX
Una mezcla de C y Python que intenta conseguir un
lenguaje de programación de sistemas muy eficiente,
expresivo y también multiparadigma.
La evolución no se detiene
Swift
El nuevo lenguaje de programación de Apple fue lanzado en
2014
Proyecto open source en el que se puede observar su
evolución y roadmap futuro
Desarrollado, entre otros, por Chris Lattner, autor del sistema
LLVM Compiler Infrastructure, conjunto de compilador,
depurador, optimizador, etc. de código C, C++ y Objective-C.
Lenguaje moderno, multiparadigma (programación orientada a
objetos y funcional) fuertemente tipeado y compilado.
Lenguajes de las grandes
empresas de Tecnologías
Windows
La mayoría del kernel (ntoskrnl.exe) está escrito en el
lenguaje de programación C, y la mayor parte de lo
que se ejecuta en modo kernel, también. Sin
embargo, en la creación de Windows 10 también
intervienen otros lenguajes como C#, JavaScript,
TypeScript, VB.NET o C++, pudiendo encontrar una
mayor presencia de este.
Lenguajes de las grandes
empresas de Tecnologías

Android
Está escrito en tres lenguajes,
Java para la UI (User Interface o
interfaz de usuario), C para el
Kernel (núcleo, el mismo de
Linux) y las bibliotecas y drivers
de bajo nivel, así como la
máquina virtual están en C++
Lenguajes de las grandes empresas de
Tecnologías
Google Chrome
BackRud (primera encarnación de Google)
fue escrito en Java y Python, ahora se escribe
en C y C++ y sus rastreadores famoso
(Spyders) fueron escritos en Python, sin
embargo este no genero los resultados
esperados y fue cambiado al lenguaje C++.
Google Chrome está escrito en C, Python y
Assembly.
Lenguajes de las grandes empresas de
Tecnologías
Facebook
La parte visible de Facebook está escrita en su mayoría
con lenguaje PHP, por lo que su desempeño es crítico
para todo el sistema. Siendo un lenguaje interpretado
tiene limitaciones de desempeño que los lenguajes
compilados no tienen.
Una gran cantidad de peticiones PHP impone un
consumo excesivo de CPU, y en Facebook han logrado
solucionar el problema con este desarrollo en el que
llevaban trabajando más de 3 años y que permite
convertir el código PHP en código C++
Lenguajes de las grandes
empresas de Tecnologías
Netflix
Depende en gran medida de Python, ya
que utiliza el lenguaje de programación
para incluir tareas como automatización
de seguridad y modelos de aprendizaje
automático para sus algoritmos de
recomendación.
Lenguajes de las
grandes empresas
de Tecnologías
Adobe
Todos los productos de Adobe (Photoshop, Acrobat, Illustrator, etc) estan
escritos en C/C++ e integra a JavaScript. Su interfaz de usuario está desarrollada
con JavaScript.
Linux
La mayor parte de Linux esta hecho en C y sus aplicaciones en Python, KED es
todo en C++. Todos los núcleos de Linux utilizan Assembly.
YouTube
En sus inicios fue construido en PHP pero cambio a Python, se mantuvieron con
Python hasta que fue comprado por Google.
Dropbox
La nube más popular del mundo utiliza Python como lenguaje de programación
principal.
Elementos de los lenguajes de programación
Según la Encyclopedia of Computer Science
Un lenguaje de programación es un conjunto de caracteres,
reglas para combinarlos y reglas para especificar sus efectos
cuando sean ejecutados por un computador, que tienen las
siguientes cuatro características:
1. No requiere ningún conocimiento de código máquina por
parte del usuario.
2. Tiene independencia de la máquina.
3. Se traduce a lenguaje máguina.
4. Utiliza una notación que es más cercana al problema
específico que se está resolviendo que al código máquina.
Elementos de los lenguajes de
programación

Según Abelson y Sussman


Un lenguaje de programación potente es más
que sólo una forma de pedir a un computador
que realice tareas. El lenguaje también sirve
como un marco dentro del que organizamos
nuestras ideas acerca de los procesos. Así,
cuando describimos un lenguaje, deberíamos
prestar atención particular a los medios que
proporciona el lenguaje para combinar ideas
simples para formar ideas más complejas.

También podría gustarte