Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 />
✐