Compilador el software traductor
Que es
Un compilador es un software que se encarga o tiene con función traducir el código fuente o programa de un lenguaje de programación de alto nivel
al lenguaje de maquina más fácil o menos complicado para la computadora, por lo general el compilador realiza un lenguaje ensamblador y de eso pasa al lenguaje de maquina por lo cual es una utilidad conocida para combinar todos los módulos para el lenguaje del computador
Importancia
En este tiempo el compilador es muy importante para el computador ya que es de lo más vital para el desarrollo y la creación de programas nuevos
entonces al ser un traductor para que el programa funcione en el computador tiene que pasar por el compilador para que el programa se ejecute y pueda entrar en función como pueda ser entendido también es utilizado para comprobar errores que pueda tener el lenguaje por lo que es una herramienta útil a la hora del desarrollo de software
Historia del compilador
Todo empieza gracias a Grace Murray Hopper ya que fue la primera en dar los primeros pasos para el compilador
ella fue una científica informática y contraalmirante de la marina estadounidense también fue de las primeras programadoras en Harvard
Ella da los primeros granitos de arena para los compiladores ya que fue la primera en inventar la idea de lenguajes de programación diferentes a los de las maquinas a lo cual se realiza un lenguaje de programación de alto nivel llamado COBOL que dato curioso es utilizado en la actualidad
Ya como tal el compilador nace entre 1954 y 1957 en IBM por John Backus y un grupo de programadores
el primer compilador sale para el lenguaje de alto nivel FORTRAM
Antes los compiladores hacían códigos de máquina de menos calidad que el que podían realizar los mismos programadores humanos. pero ya con las actualizaciones que ha tenido desde 1957 los compiladores ahora tienen la capacidad de realizar un código de máquina de alta calidad y rápido como más pequeño haciendo que los programadores de ensamblador pierdan importancia por lo cual su estudio se vio reducido.
aunque un poco de lo bueno de los programadores de ensambladores todavía tienen ventajas en lenguajes de mayor conocimiento y les permite optimizar el código
Funciones del compilador
- Análisis léxico: divide el código en una serie de símbolos lo que representan en palabras claves
- Análisis sintáctico: verifica y analiza el código fuente y su composición para la conformidad con la gramática del lenguaje
- Análisis semántico: realiza lo que es la verificación de resolución de nombres y también que las instrucciones del programa sean correctas
- Generación de código intermedio: es para representar de manera abstracta el programa y con eso se optimiza el código objeto
- Optimización de código: acá se optimiza haciendo tareas como eliminar códigos que no sean necesarios, organizar las instrucciones para la menor cantidad de ciclos todo esto en el condigo intermedio u objeto
- Generación de código objeto: se encarga de realizar el código objeto para correr el programa en la computadora
- Vinculación y carga: puede vincular en caso de que tenga bibliotecas externas creando un archivo ejecutable en el ordenador
Partes del compilador
Front End
es la parte que se encarga de interactuar con el usuario que lo utiliza por lo tanto es la encargada de inspeccionar el código fuente que se va a ocupar
Back End
en esta parte del compilador espera el trabajo del Front End para empezar a desarrollar un código con un formato que pueda entender el ordenador
Tipos
- Generadores de análisis sintácticos
Estos generadores generan analizadores, a menudo a partir de entradas basadas en una gramática independiente del contexto.
Muchos de los “mini lenguajes” utilizados en la compilación de este libro, como PIC y EQN, se implementaron en cuestión de días utilizando un generador de analizador sintáctico que había visto.
Muchos generadores de analizadores utilizan potentes algoritmos de análisis y son demasiado complejos para ejecutarse manualmente.
- generadores de analizadores léxicos
como dice se encarga de la creación de analizadores léxicos por lo que hace autómatas finitos por la organización básica de los analizadores
- Dispositivos de traducción realizada por la sintaxis
Crean grupos de procedimientos que atraviesan el árbol de análisis para producir código intermedio.
La idea básica es que una o más “traducciones” están asociadas con cada nodo en el árbol de análisis, y cada traducción se identifica mediante las traducciones en sus nodos vecinos en el árbol.
- Generadores automáticos de código
Tales herramientas tienen un conjunto de reglas que determinan la traducción de cada operación desde el lenguaje intermedio al lenguaje de máquina de destino. Las reglas deben incluir suficientes detalles para manejar los diferentes métodos posibles de acceso a los datos. Dado que a menudo hay muchas opciones con respecto al cambio de ubicación, hay muchas formas posibles de “cubrir” el código intermedio con un conjunto dado de patrones, y es necesario elegir bien cobertura sin causar un ensamblaje de explosión en el tiempo de ejecución del compilador.
- Dispositivos para análisis de flujo de datos
Gran parte de la información necesaria para realizar una buena optimización del código implica realizar un “análisis de flujo de datos”. que implica recopilar información sobre cómo se transmiten los valores de una parte del programa a cada parte del programa. Se pueden realizar diferentes tareas de este tipo con el mismo proceso básico, donde El usuario proporciona detalles sobre la relación entre las instrucciones de código intermedio y él información recopilada.
Clasificación
- compilador cruzado
Es el que puede realizar un código en un computador distinto del que se le dio la orden
- compilador de montaje y ejecucion
Lo que hace es unir módulos que antes estaban fracturados para ejecutarlos como si fueran uno ya que los que estaban separados trabajaban por si solos ahora con este compilador trabajan juntos
- compilador en una pasada
Se encarga de crear el código objeto a partir del código fuente con solo un proceso
- compilador de pasadas múltiples
Este es algo parecido, pero con varios procesos y con eso se gana aparte de la creación del código objeto sino también una optimización del código
- compilador de optimizacion
Su proceso es leerlo analizarlo optimiza, pero lo más importante es mirar si ay errores en el código sin poner en marcha el programa
- compilador incremental
Lo que hace es verificar y darle una corrección al código original también hace otro análisis para verificar que ya no hallan errores
- ensamblador
Es el código fuente
- Autocompilador
lo que nos permite es realizar mejoras como expandir el código ya compilado por lo cual lo analiza lo mejora y si es necesario ampliarlo lo necesario
- Metacompilador
es también llamado el compilador de compiladores y obtiene su nombre ya que tiene como entrada el lenguaje definido y por salida el compilador que es necesario para dicho lenguaje definido
Autor: Andrés Ramirez
Editor: Carlos Iván Pinzón
Codigo: UCPA-1
Universidad: Universidad Central
Fuentes:
Jorge Calvo.2018. ¿Que es un Compilador en programación?. europeanvalley. https://www.europeanvalley.es/noticias/que-es-un-compilador-en-programacion/
Inmune Technology Institute.2023.¿Qué es un compilador?.Inmune Technology Institute.https://immune.institute/blog/que-es-un-compilador/
Anthony Rivas.2020.COMPILADOR.Muy Tecnologicos.https://muytecnologicos.com/diccionario-tecnologico/compilador
Isais Perez,Jhonathan Jair. 2017.automatas y compiladores.cidecame.http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/15_tipos_de_compiladores.html
2018.compiladores. Code is life.https://codeislifesi.blogspot.com/2018/05/o-que-sao-compiladores.html
2019.869d116786bdf1dc58561c40560acab4.timetoast.https://www.timetoast.com/timelines/linea-de-tiempo-de-los-compiladores-dce50dd4-af6f-4fab-99f9-ceb3d7593c4c
2018.image.blogspot.https://diazdiax.blogspot.com/2018/09/compilador-un-compilador-es-un-programa.html
DH Informatips.5 julio de 2020.COMPILADORES | Concepto - Historia - Evolución.youtube.https://youtu.be/TnsebcR_dTg?si=MzYN4_f7XF6h0JwV