-
Period: to
Primeros pasos en la computación
Durante los 40's se daria uno de los primeros pasos que llevaria a la revolucion informatica en todo el mundo, la creacion de los primeros sistemas de comunicacion de los humanos con las maquinas -
Propuesta de lenguaje de máquina
John von Neumann propone la idea de un "almacén de programas" que lleva a la creación de lenguajes de máquina para instrucciones directas a las computadoras. -
El primer ordenador digital
La ENIAC, considerada la primera computadora totalmente digital y de propósito general, podía realizar procesos y operaciones a través de instrucciones con lenguaje de máquina. Pero además tenía la particularidad de que podía ser programada para realizar múltiples tareas. -
Period: to
Nacimiento de los primeros compiladores
En esta epoca empezamos a observar como surgen los primeros compiladores y abren paso para nuevas formas de comunicarse con las computadoras -
A-0 System por Grace Hopper
Grace Hopper, una pionera en la informática, desarrolló el A-0 System, considerado uno de los primeros compiladores. Este sistema transformaba instrucciones escritas en un lenguaje de alto nivel en código de máquina que las computadoras podían ejecutar. Su trabajo fue fundamental para demostrar que las máquinas podrían ser programadas usando algo más accesible que el lenguaje de máquina puro, abriendo el camino a los lenguajes de programación modernos. -
FORTRAN
En 1954 se empezó a desarrollar pero fue hasta el año 1957 que IBM lanzó el compilador de FORTRAN (FORmula TRANslation), diseñado específicamente para cálculos científicos y matemáticos complejos. FORTRAN es ampliamente reconocido como el primer lenguaje de programación de alto nivel que se utilizó a gran escala. El compilador de FORTRAN introdujo optimizaciones que mejoraron significativamente la eficiencia del código generado. -
UNCOL
En 1958, Strong y otros proponían una solución al problema de que un compilador fuera utilizable por varias máquinas objeto. Para ello, se dividía por primera vez el compilador en dos fases, el "front end" y el "back end". La primera fase (front end) es la encargada de analizar el programa fuente y la segunda fase (back end) es la encargada de generar código para la máquina objeto. El puente de unión entre las dos fases era un lenguaje
intermedio que se designó con el nombre de UNCOL -
COBOL
COBOL (COmmon Business-Oriented Language) fue desarrollado con el objetivo de crear un lenguaje de programación accesible para el sector empresarial. El compilador de COBOL permitió que el código escrito en un lenguaje más cercano al inglés pudiera ser traducido a lenguaje de máquina, facilitando la programación para aplicaciones de negocios y contribuyendo a la expansión de la programación en el sector comercial. -
Period: to
Avances en la teoría de compiladores
En esta epoca los compiladores no solo empezaban a ganar fuerza como una de las formas mas eficiente y efectiva, sino que empezaron a nacer lenguajes que a dia de hoy siguen teniendo importancia en lo que es la teoria de compiladores -
ALGOL 60
ALGOL 60 fue uno de los primeros lenguajes en tener una influencia significativa en la teoría de los compiladores. Su estructura sintáctica fue formalizada mediante el uso de la BNF (Backus-Naur Form), lo que permitió una descripción precisa y estándar de la sintaxis de los lenguajes de programación. ALGOL 60 también introdujo conceptos como la estructura de bloques y la recursividad, que fueron cruciales para el desarrollo de lenguajes de programación y sus respectivos compiladores. -
Compilador de LISP
LISP, desarrollado por John McCarthy, se convirtió en el lenguaje preferido para la investigación en inteligencia artificial. Su compilador fue innovador porque LISP fue uno de los primeros lenguajes en soportar funciones como datos de primera clase y en tener una estructura que permitió la manipulación dinámica de código. Esto lo hizo extremadamente flexible y potente para el tipo de aplicaciones que requerían procesamiento simbólico. -
BNF (Backus-Naur Form)
La BNF se formalizó como una notación para describir la sintaxis de los lenguajes de programación. Esto fue un avance crucial en la teoría de compiladores, ya que permitió a los desarrolladores describir de manera precisa cómo debería estructurarse un programa. La BNF se convirtió en una herramienta estándar para el diseño de nuevos lenguajes de programación y fue fundamental para el desarrollo de compiladores que pudieran interpretar y ejecutar estos lenguajes. -
Period: to
Estandarización y optimización
En esta epoca como su nombre lo indica empezo el tema de la estandarizacion, regulacion y optimizacion de los compiladores, para poder establecer reglas a la hora de usarlos y/o crearlos, permitiendo no solo estandarizar una medida que todos puedieran entender reduciendo enormemente la curva de aprendizaje del uno al otro, sino tambien permitiendo que el desarrollo de estos se hiciera mas optimo y eficaz -
Compilador de C
Dennis Ritchie, en Bell Labs, desarrolló el lenguaje de programación C, junto con su compilador (GCC). C fue diseñado para ser un lenguaje eficiente y flexible, capaz de ser utilizado tanto para aplicaciones de sistema como para programación de aplicaciones. El compilador de C fue revolucionario en su capacidad para generar código altamente eficiente, lo que lo convirtió en la base para la creación de sistemas operativos como UNIX -
Pascal
Niklaus Wirth desarrolló Pascal con el objetivo de enseñar programación estructurada y buenas prácticas de desarrollo de software. El compilador de Pascal fue conocido por su eficiencia y su capacidad para generar código rápido y compacto. Pascal introdujo conceptos como tipos de datos y estructuras de control de flujo que se convertirían en elementos básicos de la programación, y su compilador fue ampliamente utilizado en entornos educativos y comerciales. -
Period: to
Innovación y expansión
Esta fue la epoca en la que todos los esfuerzos de las generaciones anteriores empezaron a tener sus frutos, introduciendo nuevas maneras de compilar codigo, mas rapidas, adaptables, compactas y en general mejores -
GNU Compiler Collection (GCC)
Richard Stallman, como parte del proyecto GNU, lanzó GCC, un compilador libre y de código abierto que soporta múltiples lenguajes de programación como C, C++, y Fortran. GCC se convirtió rápidamente en una herramienta esencial para desarrolladores de software libre, permitiendo la creación de programas portables entre diferentes sistemas operativos. GCC también impulsó el movimiento de software libre, proporcionando un compilador de alta calidad que podía ser modificado y distribuido libremente. -
Smalltalk-80 (Objetive-C)
Smalltalk-80, desarrollado por el equipo de Alan Kay en Xerox PARC, fue uno de los primeros lenguajes orientados a objetos en contar con un compilador completo. Smalltalk-80 introdujo el concepto de "todo es un objeto", influenciando fuertemente lenguajes modernos como Python, Ruby, y Java. El compilador de Smalltalk permitió a los desarrolladores experimentar con nuevas formas de programación, centradas en la interacción de objetos, en lugar de las estructuras de control tradicionales. -
Period: to
Dominio de los compiladores JIT
Esta epoca fue una bastante "tranquila" dentro de lo que respecta a la historia de innovacion de los compiladores, solamente contando con los compiladores JIT marcando como claro dominante de esta epoca a Java -
Java y su compilador Just-In-Time (JIT)
Java, desarrollado por Sun Microsystems, introdujo un enfoque novedoso con su compilador Just-In-Time (JIT). En lugar de compilar todo el código antes de la ejecución, el compilador JIT compila el código "sobre la marcha" mientras se ejecuta, permitiendo mejoras significativas en el rendimiento. Java también introdujo la Máquina Virtual de Java (JVM), que permitía que el mismo código compilado se ejecutara en cualquier plataforma compatible con la JVM. -
Compiladores e Interpretadores
Parte de la "compilacion" moderna pertenece a los interpretadores que ejecturan el codigo en tiempo real sin recurrir a todo el proceso del compilado -
Period: to
Compiladores de la actualidad
Para la actualidad se desarrollan compiladores accesibles y/ de codigo abierto tales como:
1. LLVM
2. Clang
3. GHC (Glasgow Haskell Compiler)
4. V8
5. Go Compiler
6. F# Compiler
7. Rust Compiler -
Period: to
Compiladores actuales
Compiladores creados en la modernidad- Swift Compiler
- TypeScript Compiler
- Kotlin Compiler
- Go Compiler
- Julia Compiler
- Nim Compiler
- Crystal Compiler