Proceso de Compilación

Traduciendo el código fuente

Traduciendo el código fuente

Para realizar la traducción mencionada en la sección anterior, nos valemos de unos programas especiales, son programas que permiten crear otros programas. Podemos destacar los:

  • Ensambladores
  • Intérpretes
  • Compiladores
  • Máquinas Virtuales (VM)
Ensambladores, Intérpretes , Compiladores y VM
Ensambladores, Intérpretes , Compiladores y VM

Ensambladores

Son programas que toman el código fuente escrito en lenguaje ensamblador y a partir de él generan el código máquina (código objeto), que posteriormente un programa llamado enlazador o linker tomará y “mezclará ” con otras librerías para generar un archivo con código ejecutable. No está por demás mencionar que este código es el más eficiente, rápido y compacto que se puede generar a partir de un código fuente. Y también el código generado es el más dependiente de la plataforma utilizada.

Intérpretes

Aunque en la actualidad pueden considerarse un caso particular de los compiladores, primero surgieron los intérpretes, por esta razón tiene sentido considerarlos como una categoría independiente.

Un Intérprete o traductor es un programa que traduce el código fuente instrucción por instrucción, de modo que podremos obtener inmediatamente la ejecución de dicha instrucción sin tener la necesidad de terminar todo el programa para poder observar el resultado.

De este modo podríamos considerar que un intérprete es un programa que de forma interactiva nos permite ir traduciendo el código fuente en su equivalente en código máquina, instrucción por instrucción

Lenguajes interpretados

Normalmente los lenguajes interpretados son más lentos que los compilados, pero en la actualidad existen soluciones para empacar y optimizar el código interpretado mejorando el rendimiento de un programa. Algunos de los lenguajes interpretados más representativos son: Java, Basic, Python, Ruby, Bash, PHP, etc.

Intérprete
Intérprete

Probablemente la principal ventaja de los lenguajes intepretados es que son multiplataforma, por lo que se pueden portar casi sin ningún problema entre una plataforma y otra (normalmente correrán en Windows, Unix y Android sin requerir modificaciones. Algunos autores mencionan que son más rápidos que los compilados, lo cual no es cierto, quienes argumentan esto olvidan que la interpretación línea a línea consume tiempo de procesador que sumando, hace más lenta la ejecución de los mismos.

Compiladores

Un compilador es un programa informático que tiene la tarea de Traducir el código fuente escrito en un lenguaje de programación y transformarlo en su equivalente en código máquina, al proceso de traducción se le denomina Compilación.

  1. El compilador toma el código fuente que hemos escrito, analiza la estructura del programa, la semántica y la sintaxis, si no hay ningún error genera el código objeto correspondiente.
  2. En una segunda etapa enlaza las librerías y todos los elementos adicionales que requiere el programa para poder comunicarse e interactuar con el sistema operativo. Quien se encarga de esta tarea se denomina un linker (Enlazador).
  3. Finalmente se genera un archivo ejecutable el cual puede utilizarse de forma independiente en cualquier sistema compatible.

El código generado por los compiladores es más rápido que el obtenido por un intérprete, y puede además optimizarse y condicionarse dependiendo de varios factores que nos interese. Cabe señalar que hay compiladores gratuitos y con costo, normalmente los compiladores de pago son más eficientes y nos ofrecen más y mejor rendimiento en los programas obtenidos. Pero para aprendizaje y proyectos no críticos cualquier compilador gratuito es suficiente.

Algunos de los lenguajes compilados más representativos son: Java, C++, Objective C, C#, Fortran, Pascal, Visual Basic, Ada, RPG, Delphi, etc.

Observa que Java se incluyó en la categoría de lenguajes tanto interpretados como compilados, esta es una situación que cada día se hace más común, cuando revisemos el concepto de máquina virtual, abordaré este caso.

Librerías y dependencias

Observa que en repetidas ocasiones se hace referencia al término librerías y dependencias, esto no es otra cosa que un conjunto de archivos que contienen información adicional que un linker o enlazador incluye junto con nuestros programas (normalmente el forma de código objeto o ByteCode) para que se pueda generar un archivo ejecutable que el Sistema Operativo lo pueda ejecutar.

Este conjunto de librerías y dependencias normalmente se incluyen con el entorno de desarrollo utilizado, en algunos casos algunas librerías se encuentran directamente el sistema operativo utilizado y existen además bibliotecas externas ya sea gratuitas como de paga. El tema es extenso, vale la pena que amplíes tu búsqueda.

Librerías y dependencias
Librerías y dependencias

 

Por Roberto C. González
Para Ethical Hack


¿Deseas participar en nuestro grupo de estudio para aplicar la certificación CEH? 

Aplicación de medidas para la implantación de la L.O.P.D. en las empresas

Obtendrás información ampliada a la que has leído en este artículo, y material adicional, visita https://ehack.mx/portfolio-view/material-de-estudio-ceh-online/ para más información o ecríbenos a ceh@ehack.mx

Ethical hack
Ethical hack

 Fuente Imágenes:

“Proceso de Compilación”: by Pixabay & NalaSystems 
“Codigo máquina”: Imagen cortesía by Wikipedia
“Todas las imágenes del programa Hola mundo”: Imagen cortesía bWikipedia
“Hola Mundo en Plankalkül”: Imagen cortesía by Alberto García en adslzone
“Lenguaje intermedio: El CLR de .Net”: Imagen cortesía by MSDN

Referencias:
Al final de este bloque se describen.

Licencia de Creative CommonsTraduciendo el código fuente by Roberto C. González para Ethical Hack is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Comentarios de Facebook

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *