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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

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

✐<br />

Capítulo 1. Introducción a los Objetos<br />

1.11. Porqué triunfa <strong>C++</strong><br />

Parte de la razón por la que <strong>C++</strong> ha t<strong>en</strong>ido tanto éxito es que la meta no era precisam<strong>en</strong>te<br />

convertir C <strong>en</strong> un l<strong>en</strong>guaje de POO (aunque com<strong>en</strong>zó de ese modo), sino<br />

también resolver muchos otros problemas ori<strong>en</strong>tados a los desarrolladores de hoy <strong>en</strong><br />

día, especialm<strong>en</strong>te aquellos que ti<strong>en</strong><strong>en</strong> grandes inversiones <strong>en</strong> C. Tradicionalm<strong>en</strong>te,<br />

los l<strong>en</strong>guajes de POO han sufrido de la postura de que debería abandonar todo lo<br />

que sabe y empezar desde cero, con un nuevo conjunto de conceptos y una nueva<br />

sintaxis, argum<strong>en</strong>tando que es mejor a largo plazo todo el viejo equipaje que vi<strong>en</strong>e<br />

con los l<strong>en</strong>guajes procedurales. Puede ser cierto, a largo plazo. Pero a corto plazo,<br />

mucho de este equipaje era valioso. Los elem<strong>en</strong>tos más valiosos podían no estar <strong>en</strong><br />

el código base exist<strong>en</strong>te (el cual, con las herrami<strong>en</strong>tas adecuadas, se podría traducir),<br />

sino <strong>en</strong> el conocimi<strong>en</strong>to adquirido. Si usted es un programador C y ti<strong>en</strong>e que tirar todo<br />

lo que sabe sobre C para adoptar un nuevo l<strong>en</strong>guaje, inmediatam<strong>en</strong>te será mucho<br />

m<strong>en</strong>os productivo durante muchos meses, hasta que su m<strong>en</strong>te su ajuste al nuevo<br />

paradigma. Mi<strong>en</strong>tras que si puede apoyarse <strong>en</strong> su conocimi<strong>en</strong>to actual de C y ampliarlo,<br />

puede continuar si<strong>en</strong>do productivo con lo que realm<strong>en</strong>te sabe mi<strong>en</strong>tras se<br />

pasa al mundo de la programación ori<strong>en</strong>tada a objetos. Como todo el mundo ti<strong>en</strong>e<br />

su propio modelo m<strong>en</strong>tal de la programación, este cambio es lo sufici<strong>en</strong>tem<strong>en</strong>te<br />

turbio sin el gasto añadido de volver a empezar con un nuevo modelo de l<strong>en</strong>guaje.<br />

Por eso, la razón del éxito de <strong>C++</strong>, <strong>en</strong> dos palabras: es económico. Sigue costando<br />

cambiarse a la POO, pero con <strong>C++</strong> puede costar m<strong>en</strong>os 19 .<br />

La meta de <strong>C++</strong> es mejorar la productividad. Ésta vi<strong>en</strong>e por muchos caminos,<br />

pero el l<strong>en</strong>guaje está diseñado para ayudarle todo lo posible, y al mismo tiempo dificultarle<br />

lo m<strong>en</strong>os posible con reglas arbitrarias o algún requisito que use un conjunto<br />

particular de características. <strong>C++</strong> está diseñado para ser práctico; las decisiones de<br />

diseño del l<strong>en</strong>guaje <strong>C++</strong> estaban basadas <strong>en</strong> proveer los b<strong>en</strong>eficios máximos al programador<br />

(por lo m<strong>en</strong>os, desde la visión del mundo de C).<br />

1.11.1. Un C mejor<br />

Se obti<strong>en</strong>e una mejora incluso si continúa escribi<strong>en</strong>do código C porque <strong>C++</strong> ha<br />

cerrado muchos agujeros <strong>en</strong> el l<strong>en</strong>guaje C y ofrece mejor control de tipos y análisis<br />

<strong>en</strong> tiempo de compilación. Está obligado a declarar funciones de modo que el compilador<br />

pueda controlar su uso. La necesidad del preprocesador ha sido prácticam<strong>en</strong>te<br />

eliminada para sustitución de valores y macros, que eliminan muchas dificultades<br />

para <strong>en</strong>contrar errores. <strong>C++</strong> ti<strong>en</strong>e una característica llamada refer<strong>en</strong>cias que permite<br />

un manejo más conv<strong>en</strong>i<strong>en</strong>te de direcciones para argum<strong>en</strong>tos de funciones y retorno<br />

de valores. El manejo de nombres se mejora a través de una característica llamada<br />

sobrecarga de funciones, que le permite usar el mismo nombre para difer<strong>en</strong>tes funciones.<br />

Una característica llamada namespaces (espacios de nombres) también mejora la<br />

seguridad respecto a C.<br />

1.11.2. Usted ya está <strong>en</strong> la curva de apr<strong>en</strong>dizaje<br />

El problema con el apr<strong>en</strong>dizaje de un nuevo l<strong>en</strong>guaje es la productividad. Ninguna<br />

empresa puede permitirse de rep<strong>en</strong>te perder un ing<strong>en</strong>iero de software productivo<br />

porque está apr<strong>en</strong>di<strong>en</strong>do un nuevo l<strong>en</strong>guaje. <strong>C++</strong> es una ext<strong>en</strong>sión de C, no una nue-<br />

19 Dije «puede» porque, debido a la complejidad de <strong>C++</strong>, realm<strong>en</strong>te podría ser más económico cambiarse<br />

a Java. Pero la decisión de qué l<strong>en</strong>guaje elegir ti<strong>en</strong>e muchos factores, y <strong>en</strong> este libro asumiré que el<br />

lector ha elegido <strong>C++</strong>.<br />

30<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!