Yo me adentré en C++ exactamente desde la misma posición en la que espero que se encuentren muchos de los lectores de este libro: como un programador con una actitud muy sensata y práctica ante la programación. Peor aún, mi experiencia era sobre programación de sistemas empotrados a nivel hardware, en la que a menudo se ha considerado a C como un lenguaje de alto nivel y un derroche ineficiente para mover bits de un lado a otro. Descubrí más tarde que ni siquiera era muy buen programador en C, camuflando así mi ignorancia sobre estructuras, malloc() y free(), setjmp() y longjmp(), y otros conceptos sofisticados, y escabulléndome avergonzado cuando estos temas surgían en una conversación, en lugar de buscar nuevos conocimientos.
Cuando comencé mi lucha por aprender C++, el único libro decente era la autoproclamada Guía de expertos de Bjarne Stroustrup [8] así que simplifiqué los conceptos básicos por mí mismo. Esto se acabó convirtiendo en mi primer libro de C++ [9] , que es esencialmente un reflejo de mi experiencia. Fue diseñado como una guía de lectura para atraer a los programadores a C y C++ al mismo tiempo. Ambas ediciones [10] del libro consiguieron una respuesta entusiasta.
Más o menos al mismo tiempo que aparecía Using C++, comencé a enseñar el lenguaje en seminarios y presentaciones. Enseñar C++ (y más tarde, Java) se convirtió en mi profesión; llevo viendo cabezas asintiendo, caras inexpresivas, y expresiones de perplejidad en audiencias por todo el mundo desde 1989. Cuando comencé a dar formación interna a grupos más pequeños, descubrí algo durante los ejercicios. Incluso aquella gente que estaba sonriendo y asintiendo estaba confundida en muchos aspectos. Creando y dirigiendo las sesiones de C++ y Java durante muchos años en la Conferencia de Desarrollo de Software, descubrí que tanto otros oradores como yo tendíamos a tocar demasiados temas, y todo demasiado rápido. Así que, al final, debido tanto a la variedad del nivel de la audiencia como a la forma en que yo presentaba el material, terminaba perdiendo a una parte de mi público. Quizá sea pedir demasiado, pero como soy una de esas personas que se resisten a una conferencia tradicional (y para la mayoría de las personas, creo, esta resistencia está causada por el aburrimiento), quise intentar que nadie se quedara atrás.
Durante un tiempo, estuve preparando varias presentaciones diferentes en poco tiempo. De ese modo, terminé por aprender experimentando e iterando (una técnica que también funciona bien en el diseño de programas en C++). Al final, desarrollé un curso usando todo lo que había aprendido de mi experiencia en la enseñanza. Así, el aprendizaje se realiza en pequeños pasos, fáciles de digerir, y de cara a un seminario práctico (la situación ideal para el aprendizaje) hay ejercicios al final de cada presentación. Puede encontrar información sobre mis seminarios públicos en www.BruceEckel.com, y también sobre los seminarios que he pasado a CD-ROM.
La primera edición de este libro se gestó a lo largo de dos años, y el material de este libro se ha usado de muchas formas y en muchos seminarios diferentes. Las reacciones que he percibido de cada seminario me han ayudado a cambiar y reorientar el material hasta que he comprobado que funciona bien como un medio de enseñanza. Pero no es sólo un manual para dar seminarios; he tratado de recopilar tanta información como he podido en estas páginas, intentando estructurarlas para atraer al lector hasta la siguiente materia. Más que nada, el libro está diseñado para servir al lector solitario que lucha con un lenguaje de programación nuevo.