1. Elementos de la Programación de Sistemas

Compilador

Se trata de un programa que acepta como entrada un archivo que contiene el código fuente de un problema computable resuelto bajo un lenguaje de programación de alto nivel y produce como salida un archivo que contiene el problema computable traducido a lenguaje máquina de una arquitectura computacional.

Compilador

Rasgos dinstintivos:

  • El código de alto nivel es traducido a más de una instrucción de lenguaje ensamblador.
  • Cada instrucción en un lenguaje de alto nivel contiene múltiples formas sintácticas con operaciones y tipos de datos incluidos.
  • Existe ambigüedad en los lenguajes de alto nivel debido a los diferentes tipos de datos que pueden intervenir en una instrucción.

Ejemplos: Lenguaje C, C++.

Proceso de compilación

Proceso de compilación

  • Análisis léxico

En esta etapa se explora cada cadena de entrada que conforma al código con el propósito de agrupar términos significativos (tokens).

  • Análisis sintáctico

Este análisis tomará como entrada cada uno de los tokens y verá la relación existente entre ellos para ver si son estructuras sintácticamente bien construidas.

  • Análisis semántico

El análisis semántico es una fase asociada a la etapa sintáctica, ya que le corresponde determinar si los tokens tienen sentido, por ejemplo si una variable x declarada como entero, se emplea como tal.

  • Generación de código

La generación de código se considera algunas veces como la etapa final. En esta etapa se determinan localidades y registros de memoria asociado con los objetos del programa. También se genera el código acorde a cada producción del programa. Dentro de esta etapa se incluyen también las bibliotecas de soporte para la ejecución del código.

  • Optimización de código

Esta etapa consiste en la verificación del código generado con el fin de ver si las estructuras generadas pueden ser reducidas en tamaño.

Intérprete

Programa que recibe como entrada un archivo que contiene el código fuente de un problema computable escrito bajo un lenguaje de programación de alto nivel y que lo ejecuta como si estuviera escrito en lenguaje máquina.

A diferencia de un compilador que genera todo el código máquina en un solo paso, el intérprete ejecuta el programa línea por línea. Al ser ejecutado el programa línea a línea, cada línea traducida debe ser independiente del resto. Los lenguajes de programación interpretados son no tipificados, significa que el valor que contengan sus variables se definen al momento de la ejecución simplificando el proceso de traducción.

Ejemplos: Python, JavaScript, Perl.

 

Proceso de interpretación

Intérprete

Ensamblador

Programa que acepta como entrada un archivo que contiene código fuente en lenguaje ensamblador. Realiza automáticamente la traducción de dicho lenguaje al lenguaje máquina de la computadora.

Lenguaje ensamblador

Es muy difícil escribir y leer programas escritos en el lenguaje máquina de una computadora por lo que que diseño una forma de representarlos de una manera más sencilla a través de símbolos mnemotécnicos representando a cada instrucción de lenguaje máquina. Se utilizan los símbolos mnemotécnicos para escribir instrucciones que serán traducidas por el ensamblador a lenguaje máquina.

Es importante subrayar que el lenguaje ensamblador está completamente asociado a la arquitectura del microprocesador de la computadora. Es decir, los símbolos mnemónicos y la estructura de un programa escrito en lenguaje ensamblador para los microprocesadores Intel son diferentes al programa escrito en lenguaje ensamblador de los microprocesadores Sparc, por ejemplo.

Cargador

Programa de computadora que se utiliza para transferir programas objeto a la memoria de la computadora y prepararlos para su ejecución.

Ligador

Programa que une un programa objeto con piezas de software (programas objeto reutilizables), generalmente proporcionadas por el sistema operativo o por otros programadores, que darán funcionalidad al programa ejecutable.

Editor de código fuente

Programa que permite escribir en él, el código fuente de un problema computable, escrito en un lenguaje de programación de bajo o alto nivel. Existen dos tipos de editores:

  • En línea
  • En pantalla

El editor en línea recibe las instrucciones una por una, como si fueran comandos en la línea de comandos.

El editor en pantalla es parecido a un procesador de textos. Proporciona funcionalidades como resaltado sintáctico diferenciado por colores.

Bibliotecas

Se trata de archivos que contienen agrupaciones de rutinas de software (código funcional pero que no puede ser ejecutado de forma autónoma) escritas en un lenguaje de programación para ser utilizadas en programas que necesiten tales funcionalidades sin necesidad de reescribir el código.

  • Tipos de bibliotecas

Existen dos tipos de bibliotecas: bibliotecas estáticas y bibliotecas dinámicas. Las bibliotecas dinámicas son utilizadas de manera compartida por los programas en tiempo de ejecución mientras que las funcionalidades de las bibliotecas estáticas son enlazadas a los programas en tiempo de compilación, por lo que formarán parte del archivo ejecutable final.

 

 

Herramientas para la programación de sistemas