13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 38 — #76<br />

✐<br />

Capítulo 2. Construir y usar objetos<br />

des. El BASIC, por ejemplo, fue un l<strong>en</strong>guaje interpretado bastante popular. Los intérpretes<br />

de BASIC tradicionales traduc<strong>en</strong> y ejecutan una línea cada vez, y después<br />

olvidan la línea traducida. Esto los hace l<strong>en</strong>tos debido a que deb<strong>en</strong> volver a traducir<br />

cualquier código que se repita. BASIC también ha sido compilado para ganar <strong>en</strong><br />

velocidad. La mayoría de los intérpretes modernos, como los de Python, traduc<strong>en</strong><br />

el programa <strong>en</strong>tero <strong>en</strong> un l<strong>en</strong>guaje intermedio que es ejecutable por un intérprete<br />

mucho más rápido 1 .<br />

Los intérpretes ti<strong>en</strong><strong>en</strong> muchas v<strong>en</strong>tajas. La transición del código escrito al código<br />

ejecutable es casi inmediata, y el código fu<strong>en</strong>te está siempre disponible, por lo que<br />

el intérprete puede ser mucho más específico cuando ocurre un error. Los b<strong>en</strong>eficios<br />

que se suel<strong>en</strong> m<strong>en</strong>cionar de los intérpretes es la facilidad de interacción y el rápido<br />

desarrollo (pero no necesariam<strong>en</strong>te ejecución) de los programas.<br />

Los l<strong>en</strong>guajes interpretados a m<strong>en</strong>udo ti<strong>en</strong><strong>en</strong> severas limitaciones cuando se construy<strong>en</strong><br />

grandes proyectos (Python parece ser una excepción). El intérprete (o una<br />

versión reducida) debe estar siempre <strong>en</strong> memoria para ejecutar el código e incluso el<br />

intérprete más rápido puede introducir restricciones de velocidad inaceptables. La<br />

mayoría de los intérpretes requier<strong>en</strong> que todo el código fu<strong>en</strong>te se les <strong>en</strong>víe de una<br />

sola vez. Esto no sólo introduce limitaciones de espacio, sino que puede causar errores<br />

difíciles de detectar si el l<strong>en</strong>guaje no incluye facilidades para localizar el efecto<br />

de las difer<strong>en</strong>tes porciones de código.<br />

2.1.2. Compiladores<br />

Un compilador traduce el código fu<strong>en</strong>te directam<strong>en</strong>te a l<strong>en</strong>guaje <strong>en</strong>samblador o<br />

instrucciones máquina. El producto final suele ser uno o varios ficheros que conti<strong>en</strong><strong>en</strong><br />

código máquina. La forma de realizarlo suele ser un proceso que consta de varios<br />

pasos. La transición del código escrito al código ejecutable es significativam<strong>en</strong>te más<br />

larga con un compilador.<br />

Dep<strong>en</strong>di<strong>en</strong>do de la perspicacia del escritor del compilador, los programas g<strong>en</strong>erados<br />

por un compilador ti<strong>en</strong>d<strong>en</strong> a requerir mucho m<strong>en</strong>os espacio para ser ejecutados,<br />

y se ejecutan mucho más rápido. Aunque el tamaño y la velocidad son probablem<strong>en</strong>te<br />

las razones más citadas para usar un compilador, <strong>en</strong> muchas situaciones<br />

no son las más importantes. Algunos l<strong>en</strong>guajes (como el C) están diseñados para<br />

admitir trozos de programas compilados indep<strong>en</strong>di<strong>en</strong>tem<strong>en</strong>te. Estas partes terminan<br />

combinando <strong>en</strong> un programa ejecutable final mediante una herrami<strong>en</strong>ta llamada<br />

<strong>en</strong>lazador (linker). Este proceso se conoce como compilación separada.<br />

La compilación separada ti<strong>en</strong>e muchos b<strong>en</strong>eficios. Un programa que, tomado de<br />

una vez, excedería los límites del compilador o del <strong>en</strong>torno de compilación puede ser<br />

compilado por piezas. Los programas se pued<strong>en</strong> ser construir y probar pieza a pieza.<br />

Una vez que una parte funciona, se puede guardar y tratarse como un bloque. Los<br />

conjuntos de piezas ya funcionales y probadas se pued<strong>en</strong> combinar <strong>en</strong> librerías para<br />

que otros programadores puedan usarlos. Como se crean piezas, la complejidad de<br />

las otras piezas se manti<strong>en</strong>e oculta. Todas estas características ayudan a la creación<br />

de programas grandes, 2 .<br />

Las características de depuración del compilador han mejorado considerable-<br />

1 Los límites <strong>en</strong>tre los compiladores y los intérpretes ti<strong>en</strong>d<strong>en</strong> a ser difusos, especialm<strong>en</strong>te con Python,<br />

que ti<strong>en</strong>e muchas de las caractéristicas y el poder de un l<strong>en</strong>guaje compilado pero también ti<strong>en</strong>e parte de<br />

las v<strong>en</strong>tajas de los l<strong>en</strong>guajes interpretados.<br />

2 Python vuelve a ser una excepción, debido a que permite compilación separada.<br />

38<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!