Buscando la iluminación y una salida
Después de todo, he persistido durante un año y sería bueno tener un diploma después de graduarme. La siguiente es una introducción a algunos libros sobre C++.
Aprender cualquier idioma requiere un proceso paso a paso desde el inicio hasta el dominio y desde el principiante hasta el dominio. Sin embargo, es difícil para un supuesto novato decidir si es un completo novato, un "principiante" que está familiarizado con algún otro lenguaje o incluso un maestro que ha logrado logros considerables en el campo de la programación en un determinado lenguaje. ¿Generalizar? Los diferentes principiantes en C++ necesitan diferentes libros de introducción.
Andrew Koenig, Barbara E. Moo, C++ acelerado: programación práctica con el ejemplo
"Edición china de C++ acelerado", China Electric Power Press
y en el mercado A diferencia de la mayoría de los tutoriales de C++, este libro no comienza con "C en C++", sino con características auténticas de C++. Desde el principio
la biblioteca estándar se utiliza para escribir programas. A medida que la descripción se profundiza gradualmente, se explican uno por uno los conceptos básicos de los que dependen estos componentes de la biblioteca estándar. Además,
a diferencia de otros libros de texto de C++, este libro utiliza ejemplos para explicar el lenguaje y la biblioteca estándar. La explicación de los dos últimos es proporcionar soporte para programas de ejemplo
. A diferencia de la mayoría de los libros de texto de C++, los ejemplos solo se utilizan como herramientas auxiliares para demostrar las características del lenguaje y el uso estándar de la biblioteca.
El autor es de clase mundial en práctica de programación, educación y capacitación, y redacción técnica en el campo de C++. Me gusta este estilo de escritura refrescante que hace un uso extensivo de bibliotecas estándar y características nativas del lenguaje C++. Frente a este libro de texto, casi todos los libros de texto de C++ hasta ahora eclipsan o parecen desactualizados. Aunque este libro de texto puede ser un poco vanguardista para la educación superior nacional, todavía lo recomiendo encarecidamente a mis colegas. Por cierto
Por cierto, en una correspondencia reciente entre Bjarne y yo, comentó sobre este libro: Para programadores experimentados que aprenden C++, este libro puede
Es el mejor libro en el mundo.
Stanley B.Lippman, Josee Lajoie, C++ Primer (3.ª edición)
"C++ Primer (3.ª) edición china", China Electric Power Press
Este El título de este libro es algo engañoso. Aunque el autor afirma que este libro está escrito para principiantes en C++, tanto su espesor como la profundidad de sus explicaciones sugieren lo contrario. Quizás sería más apropiado llamarlo un tutorial de C++ "desde principiante hasta competente". Personalmente creo que
no es adecuado para principiantes que no saben nada de C++; antes de leer este libro, debes tener al menos un poco de conocimiento previo de C o C++, o
Tener al menos algo de experiencia en programación en otros lenguajes.
Aunque este libro omite la discusión de algunas características avanzadas de C++, aún puede considerarse el tutorial de aprendizaje de C++ más completo hasta la fecha. De hecho, si un principiante de C++ puede leer este libro con los pies en la tierra y completar todos los ejercicios de acuerdo con el "Libro de respuestas básico de C++", su nivel definitivamente será bueno. Ingrese a las filas de los programadores profesionales de C++. Personalmente, creo que incluso si ya posee TCPL, sigue siendo valioso tener este libro, porque en muchos sentidos es más detallado y más fácil de entender que TCPL.
Stanley B. Lippman, Essential C++
"Essential C++ Chinese Edition", Huazhong University of Science and Technology Press
"Essential C++ (Edición fotocopia)" , China Electric Power Press
Este libro puede considerarse de manera menos estricta como una versión simplificada de "C++ Primer". Este libro describe uno por uno los temas más representativos de C++, incluida la programación de procedimientos, la programación genérica, la programación basada en objetos, la programación orientada a objetos, la programación de plantillas y el manejo de excepciones.
Stanley reduce el umbral
al nivel más básico aceptable para los principiantes en C++ "que tienen experiencia en programación en otros lenguajes", para que puedan comenzar rápidamente a programar en C++
y evitar leer tomos como "Introducción a C++". Guía el aprendizaje con ejemplos y se esfuerza por permitir a los lectores captar la esencia de C++ en el menor tiempo posible.
Quizás otra persona necesitaría cientos de páginas para describir todos los aspectos del paradigma de programación C++ (paradigma), pero este pequeño libro lo hace increíblemente
. Personalmente me gusta este tipo de libros que están llenos de técnicas, concisos y que tienen algo que decir. Este libro también tiene un estilo obvio: todos los ejemplos de programas utilizan componentes de biblioteca estándar, lo cual es refrescante.
Ninguno de los tres libros anteriores está escrito para principiantes en programación. Los principiantes en programación C++ pueden leer el nuevo libro de Francis Glassborow (aún no publicado): "Una introducción para principiantes a la programación informática: ¡usted puede hacerlo!". Esta es también la recomendación de Bjarne. Francis Glassborow es el presidente de ACCU. A lo largo de los años, ha comentado casi todos los clásicos de C++. Naturalmente, su propio libro despertará un gran interés en la comunidad de C++.
Programación eficiente y robusta
Hace dos años, cuando era responsable de un proyecto de sistema de despacho de energía provincial, escribí un programa de puerta de enlace que obtenía información de energía en tiempo real del sistema SCADA.
. La interfaz de comunicación adopta un método de conexión directa a la base de datos poco común (este programa de puerta de enlace se conecta a SQL Server 6.5 en un extremo y a Oralce
8.1.6 en el otro). Dado que hay casi diez mil puntos de medición en tiempo real, es obviamente ineficiente actualizar o insertar todas las muestras cada vez. Construí una
biblioteca de memoria en el programa de puerta de enlace, y los datos obtenidos se compararon primero en ella y luego decidí si actualizar la base de datos física (al mismo tiempo, también hice otras cosas más complejas
情...), logrando así los resultados esperados en términos de eficiencia y aprovechamiento de recursos.
Este programa ha estado funcionando muy bien, pero un día después de abandonar el sitio, el administrador del sistema llamó y dijo que tal vez debido a una falla de la red
y otras razones, a veces el programa de puerta de enlace Se bloqueará, simplemente se bloqueará por sí solo. ¡El problema es que también convertirá Windows 2000 Advanced
Server en una "pantalla azul"! Francamente, nunca he visto un programa involuntario hacer esto. Debido a que estaba ocupado con otro gran proyecto en ese momento, no pude ir al sitio para depurarlo. Al final, tuve que encapsular cuidadosamente el código de la biblioteca de memoria con el código de manejo de excepciones según la experiencia (y también hice algunas otras modificaciones). ...). De esta forma, aunque el problema no se soluciona del todo, el programa ya no es tan feo al fin y al cabo.
¿Qué sentido tiene contar semejante dato aquí (no pensé que fuera un “toque” cuando estaba pensando en ese terrible bicho
)? Lo que quiero decir es que, para cualquier software, no hay eficiencia sin robustez. Para los programadores de C++, puede que no sea difícil escribir un programa eficiente, pero no es tan fácil escribir un software del lado del servidor que deba ejecutarse las 7 horas del día, las 24 horas del día.
Hay muchos factores y, a veces, estos factores incluso van mucho más allá del lenguaje C++ y las herramientas de desarrollo. Como programador que desarrolla software de proyecto real, no es necesario que se estrelle contra la pared para acumular experiencia. Siempre que tengamos la mente lo suficientemente abierta, la experiencia de otras personas suele ser una buena referencia para nosotros. En vista de esto, te recomiendo los siguientes libros, que pueden beneficiarte tanto en fuerza como en eficiencia (por supuesto, cubren mucho más que solo animales exóticos). A menudo manejado J).
Scott Meyers, C++ eficaz: 50 formas específicas de mejorar sus programas y diseño (segunda edición)
edición)
Scott Meyers, C++ más eficaz: 35 nuevas Formas de mejorar sus programas y diseños
"Edición china de C++ eficaz", Huazhong University of Science and Technology Press
"Edición china de C++ más eficaz", China Electric Power Press
"Effective C++ (Edición de fotocopia)", China Electric Power Press
Si "Effective C++" analiza principalmente algunos conceptos y técnicas relativamente básicos en C++, entonces "More Effective C
++" se centra en una serie de tecnologías avanzadas que incluyen el manejo de excepciones. En comparación con el primero, el segundo tiene dos diferencias principales: en primer lugar, contiene una gran cantidad de contenido nuevo estándar de C++; en segundo lugar, los temas que analiza tienden a ser "estratégicos" en lugar de "tácticos" y se analizan más profundamente; p>
y más a fondo. Especialmente la discusión en profundidad sobre tecnologías y patrones como destructores virtuales, punteros inteligentes, recuento de referencias y clases de proxy.
Es difícil imaginar que apareciera en un libro tan pequeño.
Con sus habilidades técnicas y excelentes habilidades de escritura, Scott es sin duda uno de los mejores escritores técnicos de C++ del mundo. Ambos libros destacan en términos de simplicidad, claridad y legibilidad. En resumen, los 85 métodos proporcionados por Scott para mejorar las habilidades de programación y el pensamiento de diseño son habilidades necesarias para los programadores de C++ intermedios y avanzados. Recomiendo ampliamente estos dos libros (en realidad hay uno más, como verás más adelante).
Herb Sutter, C++ excepcional: 47 acertijos de ingeniería, problemas de programación y soluciones
s
Herb Sutter, C++ más excepcional: 40 nuevos acertijos de ingeniería, programación Problemas y
Soluciones
"Edición china de C++ excepcional", China Electric Power Press
"Edición china de C++ más excepcional", Universidad de Ciencia y Tecnología de Huazhong Prensa
¿Te consideras un experto en lenguaje C++? Lea estos dos libros del Secretario General del Comité de Normas ISO C++ antes de responder. En estos dos libros,
Herb utiliza un enfoque de "preguntas y respuestas" para guiarle en el aprendizaje de las funciones del lenguaje C++. Para cada tema, Herb primero imagina razonablemente sus preguntas y confusiones, luego adivina que sus respuestas probablemente sean incorrectas y luego le brinda orientación y propone la mejor solución. Finalmente, principios universales para resolverlas.
Se resumen problemas similares.
Estos dos libros son trabajos típicos en profundidad sobre los detalles del lenguaje C++. Son muy breves, pero el contenido es denso, supera con creces los dos libros de Scott y su lectura requiere mucho tiempo. . Cerebro: personalmente creo que son mucho más difíciles de entender que el libro de Scott.
¡Se necesitarían al menos varios meses para estudiar el conocimiento contenido en estos dos delgados libros! (En el prefacio de recomendación de Scott, él confesó que cayó en la trampa del problema GotW más de una vez. Debes saber lo que esto significa) ¿Cuáles son los beneficios de estudiar los detalles del idioma? p>
¿Paño de lana? Aunque en la mayoría de los casos no tenemos que preocuparnos por lo que sucede detrás de escena del código C++, cuando lo hacemos, estos dos libros pueden proporcionarnos buenas pistas, porque arrojan luz sobre el lenguaje C++. .
Stephen C. Dewhurst, C++ Gotchas: Evitar problemas comunes en la codificación y el diseño
"Trampas de programación de C++", China Youth Publishing House
La teoría de Stephen La alfabetización y la experiencia práctica hacen de este un buen libro que vale la pena leer. Stephen fue uno de los primeros usuarios de C+ en Bell Labs. Ha utilizado con éxito C++ para resolver problemas en áreas que incluyen compiladores, comercio de valores, comercio electrónico y sistemas integrados.
Este libro reúne los 99 conocimientos del autor sobre programación desde la primera línea del desarrollo. Si los comprende, podrá evitar casi todos los problemas comunes de diseño y programación de C++.
Incluso creo que para los principiantes en programación en C ++, leer este libro será más fácil e inmediato que leer el libro de Scott y Herb.
Obtendrá mayores mejoras. Personalmente, me gusta el estilo de escritura de este libro; muchas de las opiniones de Stephen pueden parecer extremas, pero son irrefutables. Por supuesto, este tipo de confianza (y humor seco) proviene de la profunda cultura técnica del autor, no de la arrogancia y la paranoia.
Además de los libros recomendados anteriormente, "Efficient C++: Performance Program
ming Techniques" escrito por Dov Bulka y David Mayhew ("Técnicas de programación para mejorar el rendimiento de C++", Tsinghua University Publisher) también merece una mirada. Este pequeño libro se centra en el desarrollo de aplicaciones C++ de alto rendimiento. Los dos autores son expertos en software de IBM y trabajan en el campo de la construcción de sistemas con requisitos de rendimiento extremadamente altos. Este libro se basa en su experiencia. A algunas personas no les gusta este libro porque dedica mucho espacio a hablar de cosas que no tienen nada que ver con C++, pero tengo una buena impresión de este libro precisamente por eso. Son estas cosas las que me hicieron ampliar mis conocimientos. horizontes.
Plantillas y programación genérica
Plantillas y programación genérica basada en plantillas son sin duda las tecnologías de programación C++ que más activamente se desarrollan en la actualidad. La primera aplicación revolucionaria de plantillas fue
STL, que demostró plenamente la aplicación de la tecnología de plantillas en los campos de algoritmos y contenedores genéricos, mientras que bibliotecas modernas como Boost y Loki integraron plantillas
El potencial de la tecnología se maximiza constantemente. En el campo de las plantillas y la programación genérica, recomiendo los siguientes dos libros de gran peso:
David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide
"C++ Templates Overview" (Versión en chino tradicional)", Taiwan Peak Information Co., Ltd.
"Descripción general de las plantillas C++ (versión en chino simplificado)", People's Posts and Telecommunications Publishing House
Hay una Forma antigua de elogiar un libro La técnica es aproximadamente "Si no has leído este libro, haz lo que quieras". A menudo contiene elementos exagerados. Sin embargo, si dice "No se puede dominar la programación de plantillas de C++ sin leer" Plantillas de C++: la guía completa ", entonces esta afirmación es cierta para la gran mayoría de los programadores de C++ del mundo.
Este libro llena un vacío de larga data en el campo de los libros de plantillas de C++.
Anteriormente, había libros como "Diseño moderno de C++", que se centraba en técnicas avanzadas de programación de plantillas y patrones genéricos, y "La biblioteca estándar de C++", que se centraba en marcos y componentes de plantillas específicos.
Instrucciones de uso p>
. Sin embargo, si no tiene un conocimiento profundo del mecanismo de la plantilla, le resultará difícil "subir y bajar" libremente. En vista de esto, recomiendo este libro a todos los que deseen una comprensión profunda de la tecnología de plantillas de C++.
Este libro tiene una traducción en China continental y Taiwán, pero están escritos por traductores diferentes. Para cuando lea este artículo, ambas traducciones deberían estar en el mercado, lo que por supuesto les da a los lectores una opción más. El Sr. Hou Jie ha abierto la mayoría de los capítulos de la traducción tradicional en su sitio web personal, por lo que es mejor que los leas primero.
Andrei Alexandrescu, Diseño moderno en C++: programación genérica y patrones de diseño aplicados
"Nuevas ideas en el diseño en C++: aplicación de programación genérica y patrones de diseño", Prensa de la Universidad de Ciencia y Tecnología de Huazhong
p>"Nuevas ideas en diseño en C++ (edición fotocopiada)", Editorial China Electric Power
¿Se considera un maestro en la programación de plantillas en C++? Lea este libro antes de responder J. Esta es una obra maestra impresionante escrita por un genio. El modo genérico
extiende tus horizontes infinitamente y es suficiente para desafiar los límites de pensamiento de cualquier programador de C++.
Este libro*** se divide en dos partes. La primera parte analiza la tecnología básica utilizada por la biblioteca Loki y algunas características del lenguaje de alto nivel, incluida
clases basadas en estrategias. diseño, especialización local de plantillas, aserciones en tiempo de compilación, lista de tipos y tecnología de asignación de objetos pequeños, etc. La segunda parte se centra en
componentes importantes y tecnología de patrones genéricos en Loki, incluido el functor de generalización, singleton (Singleton)
y puntero inteligente, Object Factory, Abstract Factory, Visitor y Multimethods. etc. Cada tecnología es reveladora e impresionante.
TCPL y D&E
TCPL y D&E son las abreviaturas de "El lenguaje de programación C++" y "El diseño y evolución de C++" respectivamente
, ambos de Manos de Bjarne Stroustrup. Los enumero por separado, primero porque Bjarne es el creador del lenguaje C++, y segundo por una razón más importante que la "primera": estos dos libros son obras maestras incuestionables en el campo de C++. No es exagerado decir que son la biblia del lenguaje C++.
Bjarne Stroustrup, El lenguaje de programación C++ (tercera edición especial)
"Lenguaje de programación C++ (edición especial)", Machinery Industry Press
"Lenguaje de programación C++ (Edición especial) (Edición de fotocopia en inglés)", Higher Education Press
Hasta la fecha, TCPL es el manual de referencia de C++ más autorizado además del documento estándar de C++. A diferencia de la mayoría de la gente, creo que el lenguaje escrito de Bjarne no es inferior al lenguaje de programación que creó. Al menos a mí me gusta este tipo de trabajo académico. La descripción que se hace en este libro del lenguaje C++
es clara y directa. Mira C++ desde la perspectiva del creador del lenguaje C++, algo que ningún otro autor o libro puede hacer; nadie sabe cómo usar C++ mejor que el propio Bjarne.
Este es un libro serio, dirigido a desarrolladores de C++ intermedios y avanzados.
Si es un programador experimentado en C++ y necesita adquirir conocimientos más esenciales de C++, este libro es solo para usted. No es el tipo de libro pequeño que te hace reír después de leerlo. Es necesario entenderlo con atención y masticarlo una y otra vez. Durante el proceso de lectura, preste especial atención a lo que el Sr. Bjarne enfatizó y lo que mencionó en una oración. Personalmente, me gusta la cuarta parte de este libro
"Diseñar con C++. Es difícil ver ese contenido en libros de lenguajes de programación similares; incluso creo que Bjarn
debería separar esto". parte en un libro separado.
Bjarne Stroustrup, El diseño y evolución de C++
"El diseño y evolución del lenguaje C++", Machinery Industry Press
"El diseño y evolución de the C++ Language" (versión en inglés)", Machinery Industry Press
D&E es una monografía sobre los principios, las decisiones de diseño y la filosofía del diseño del lenguaje C++. Responde claramente por qué C++ se convirtió en lo que es hoy
sin convertirse en otro lenguaje. Como creador del lenguaje C++, Bjarne demostró vívidamente sus conocimientos únicos y profundos
. Además de las características del lenguaje ampliamente elogiadas, Bjarne no rehuyó las características controvertidas o incluso rechazadas de C ++. Dio explicaciones lógicamente rigurosas y convincentes una por una. El contenido cubre la era prehistórica de C++, C con clases, reglas de diseño de C++, estandarización, bibliotecas, administración de memoria, herencia múltiple, plantillas, etc., incluido el mecanismo de excepción, la información del tipo de tiempo de ejecución y el espacio de nombres. Se han analizado en profundidad nuevas características importantes.
Todo programador de C++ debería poder profundizar su comprensión del lenguaje a partir de la explicación de Bjarne.
Lo que hay que recordar una vez más es que estos dos libros contienen conocimientos condensados y una gran cantidad de información. No se pierda cada frase aparentemente casual de Bjarne.