Mis objetivos en este libro son:
Presentar el material paso a paso, de manera que el lector pueda digerir cada concepto fácilmente antes de continuar.
Usar ejemplos tan simples y cortos como sea posible. Esto a veces me impide manejar problemas del mundo real, pero he descubierto que los principiantes normalmente quedan más contentos cuando pueden comprender cada detalle de un ejemplo que siendo impresionados por el ámbito del problema que soluciona. Además, hay un límite en la cantidad de código que se puede asimilar en una clase. Por ello, a veces recibo críticas por usar ejemplos de juguete, pero tengo la buena voluntad de aceptarlas en favor de producir algo pedagógicamente útil.
La cuidadosa presentación secuencial de capacidades para que no se vea algo que no ha sido explicado. De acuerdo, esto no siempre es posible; en esos casos, se ofrece una breve descripción introductoria.
Indicarle lo que creo que es importante para que se comprenda el lenguaje, más que todo lo que sé. Creo que hay una "jerarquía de la importancia de la información", y hay algunos hechos que el 95 por ciento de los programadores nunca necesitará saber y que sólo podrían confundirles y afianzar su percepción de la complejidad del lenguaje. Tomando un ejemplo de C, si memoriza la tabla de precedencia de los operadores (yo nunca lo hice), puede escribir código más corto. Pero si lo piensa, esto confundirá al lector/mantenedor de ese código. Así que olvide la precedencia, y utilice paréntesis cuando las cosas no estén claras. Esta misma actitud la utilizaré con alguna otra información del lenguaje C++, que creo que es más importante para escritores de compiladores que para programadores.
Mantener cada sección suficientemente enfocada como para que el tiempo de lectura -y el tiempo entre bloques de ejercicios- sea razonable. Eso mantiene las mentes de la audiencia más activas e involucradas durante un seminario práctico, y además le da al lector una mayor sensación de avance.
Ofrecer a los lectores una base sólida de manera que puedan comprender las cuestiones lo suficientemente bien como para pasar a otros cursos y libros más difíciles (en concreto, el Volumen 2 de este libro).
He tratado de no utilizar ninguna versión de C++ de ningún proveedor en particular porque, para aprender el lenguaje, no creo que los detalles de una implementación concreta sean tan importantes como el lenguaje mismo. La documentación sobre las especificaciones de implementación propia de cada proveedor suele ser adecuada.