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 35 — #73<br />

✐<br />

1.12. Estrategias de transición<br />

ra <strong>en</strong>t<strong>en</strong>der la nueva tecnología. A lo largo del proceso ellos cometerán más errores<br />

(esto es una v<strong>en</strong>taja, porque los errores reconocidos son el modo más rápido para<br />

apr<strong>en</strong>der) y ser m<strong>en</strong>os productivos. Incluso <strong>en</strong>tonces, con algunos tipos de problemas<br />

de programación, las clases correctas y el <strong>en</strong>torno de programación adecuado,<br />

es posible ser más productivo mi<strong>en</strong>tras se está apr<strong>en</strong>di<strong>en</strong>do <strong>C++</strong> (incluso considerando<br />

que está cometi<strong>en</strong>do más errores y escribi<strong>en</strong>do m<strong>en</strong>os líneas de código por<br />

día) que si estuviera usando C.<br />

Cuestiones de r<strong>en</strong>dimi<strong>en</strong>to<br />

Una pregunta común es, «¿La POO no hace automáticam<strong>en</strong>te mis programas<br />

mucho más grandes y l<strong>en</strong>tos» La respuesta es: «dep<strong>en</strong>de». Los l<strong>en</strong>guajes de POO<br />

más tradicionales se diseñaron con experim<strong>en</strong>tación y prototipado rápido más que<br />

p<strong>en</strong>sando <strong>en</strong> la efici<strong>en</strong>cia. De esta manera, prácticam<strong>en</strong>te garantiza un increm<strong>en</strong>to<br />

significativo <strong>en</strong> tamaño y una disminución <strong>en</strong> velocidad. <strong>C++</strong> sin ambargo, está diseñado<br />

t<strong>en</strong>i<strong>en</strong>do pres<strong>en</strong>te la producción de programación. Cuando su objetivo es<br />

un prototipado rápido, puede lanzar compon<strong>en</strong>tes juntos tan rápido como sea posible<br />

ignorando las cuestiones de efici<strong>en</strong>cia. Si está usando una librerías de otros,<br />

normalm<strong>en</strong>te ya están optimizadas por sus v<strong>en</strong>dedores; <strong>en</strong> cualquier caso no es un<br />

problema mi<strong>en</strong>tras está <strong>en</strong> un modo de desarrollo rápido. Cuando t<strong>en</strong>ga el sistema<br />

que quiere, si es bastante pequeño y rápido, <strong>en</strong>tonces ya está hecho. Si no, lo puede<br />

afinar con una herrami<strong>en</strong>ta de perfilado, mire primero las mejoras que puede conseguir<br />

aplicando las características que incorpora <strong>C++</strong>. Si esto no le ayuda, mire las<br />

modificaciones que se pued<strong>en</strong> hacer <strong>en</strong> la implem<strong>en</strong>tación subyac<strong>en</strong>te de modo que<br />

no sea necesario cambiar ningún código que utilice una clase particular. Únicam<strong>en</strong>te<br />

si ninguna otra cosa soluciona el problema necesitará cambiar el diseño. El hecho de<br />

que el r<strong>en</strong>dimi<strong>en</strong>to sea tan crítico <strong>en</strong> esta fase del diseño es un indicador de que debe<br />

ser parte del criterio del diseño principal. FIXME:Usar un desarrollo rápido ti<strong>en</strong>e la<br />

v<strong>en</strong>taja de darse cu<strong>en</strong>ta rápidam<strong>en</strong>te.<br />

Como se m<strong>en</strong>cionó anteriorm<strong>en</strong>te, el número dado con más frecu<strong>en</strong>cia para la<br />

difer<strong>en</strong>cia <strong>en</strong> tamaño y velocidad <strong>en</strong>tre C y <strong>C++</strong> es 10%, y a m<strong>en</strong>udo m<strong>en</strong>or. Incluso<br />

podría conseguir una mejora significativa <strong>en</strong> tamaño y velocidad cuando usa <strong>C++</strong><br />

más que con C porque el diseño que hace para <strong>C++</strong> puede ser bastante difer<strong>en</strong>te<br />

respecto al que hizo para C.<br />

La evid<strong>en</strong>cia <strong>en</strong>tre las comparaciones de tamaño y velocidad <strong>en</strong>tre C y <strong>C++</strong> ti<strong>en</strong>d<strong>en</strong><br />

a ser anecdóticas y es probable que permanezcan así. A pesar de la cantidad de<br />

personas que sugiere que una compañía int<strong>en</strong>ta el mismo proyecto usando C y <strong>C++</strong>,<br />

probablem<strong>en</strong>te ninguna compañía quiere perder dinero <strong>en</strong> el camino a no ser que sea<br />

muy grande y esté interesada <strong>en</strong> tales proyectos de investigación. Incluso <strong>en</strong>tonces,<br />

parece que el dinero se puede gastar mejor. Casi universalm<strong>en</strong>te, los programadores<br />

que se han cambiado de C (o cualquier otro l<strong>en</strong>guaje procedural) a <strong>C++</strong> (o cualquier<br />

otro l<strong>en</strong>guaje de POO) han t<strong>en</strong>ido la experi<strong>en</strong>cia personal de una gran mejora <strong>en</strong><br />

su productividad de programación, y es el argum<strong>en</strong>to más convinc<strong>en</strong>te que pueda<br />

<strong>en</strong>contrar.<br />

Errores comunes de diseño<br />

Cuando su equipo empieza con la POO y <strong>C++</strong>, típicam<strong>en</strong>te los programadores<br />

pasan por una serie de errores de diseño comunes. Esto ocurre a m<strong>en</strong>udo porque<br />

hay poca realim<strong>en</strong>tación de expertos durante el diseño e implem<strong>en</strong>tación de los proyectos<br />

iniciales, porque ningún experto ha sido desarrollador d<strong>en</strong>tro de la compañía<br />

y puede haber resist<strong>en</strong>cia a contratar consultores. Es fácil p<strong>en</strong>sar que se <strong>en</strong>ti<strong>en</strong>de la<br />

POO demasiado pronto <strong>en</strong> el ciclo y se va por el mal camino. Algo que es obvio para<br />

35<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!