¿Cuál es el mejor código fuente de C ++ para leer para un principiante? [cerrado]

25

Estoy tratando de mejorar mi técnica de codificación de C ++ leyendo el código fuente de C ++. ¿Qué proyecto de código abierto recomendarías? ¿El código de las bibliotecas Boost C ++ es bueno?

zorro de nieve
fuente
11
¿Por qué cerrar los votos? La pregunta es clara y concreta.
Nemanja Trifunovic
Implementaciones de STLs
dukeofgaming
12
@dukeofgaming: olvidaste la etiqueta "irónica".
Doc Brown
1
Bueno, supongo que el código fuente de impulso no será una buena idea para un principiante. Probablemente se ahogará en plantillas y técnicas de SFNINAE que aún no comprende su funcionamiento y razones.
Chris dice Reinstate Monica el
77
Los votos cerrados se deben a que esta pregunta, aunque concreta, no es constructiva. Simplemente dará como resultado una lista del proyecto de todos, donde ninguna respuesta puede ser "la respuesta". Para obtener más información, consulte las preguntas frecuentes .
Walter

Respuestas:

27

Recomendaría cualquiera de los códigos C ++ de código abierto de Google, como los siguientes:

Ventajas de usar el código de Google:

  • Está escrito con altos estándares y es revisado por pares (a diferencia de algunos códigos de código abierto).
  • Tiene buena documentación del desarrollador (lo que hace que sea más fácil de aprender y entender).
  • Utiliza algunas técnicas C ++ moderadamente avanzadas (y, por lo tanto, es bueno para el aprendizaje).
  • Es probable que sea más fácil de entender que Boost porque no se basa tanto en la metaprogramación avanzada de plantillas y la metaprogramación de preprocesadores y no se ve afectada tanto por innumerables hacks de compatibilidad de compiladores y casos especiales.

La Guía de estilo de Google C ++ que utiliza el código C ++ de Google es generalmente buena, pero tiene algunos bits bastante inusuales (como algunas de sus pautas de nomenclatura o sus excepciones de rechazo), así que tenga en cuenta que su código C ++ diferirá en esos aspectos de Lo que verás en el campo.

Josh Kelley
fuente
9

No recomendaría leer una base de código. Recomiendo leer las preguntas frecuentes de C ++ . También hay un excelente libro que acompaña al sitio. La mejor manera de mejorar sus habilidades de codificación C ++.

Onorio Catenacci
fuente
13
-1: Estoy muy en desacuerdo. Leer el código de otras personas es una parte muy importante para mejorar las habilidades de codificación. Sin embargo, corregir errores en ese código es aún mejor.
Jan Hudec
66
@ Jan Acuerdo completo de mi parte. Sin embargo, la mayoría del código fuente de C ++ apesta y emplea todo tipo de malos patrones que enseñarían malas técnicas. ¿Conoces un buen proyecto de OSS que pueda servir como lectura introductoria?
Konrad Rudolph
Me refería a este: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/… pero ahora puedo ver que también hay otros libros.
Onorio Catenacci
6

Leer el código C ++ limpio existente es una excelente manera de aprender el lenguaje.

El código en el kit de herramientas OpenFST es muy limpio, por ejemplo. Es legible y utiliza funciones ligeramente avanzadas sin exagerar.

Boost, por otro lado, puede ser un poco difícil de leer, en parte porque usan trucos de C ++ que son difíciles de entender y porque a menudo rocían el código con diferentes soluciones para diferentes versiones del compilador.

usuario3287
fuente
6

Sugeriría leer el " C ++ efectivo " de Scott Meyers y usar las sugerencias que tiene en pequeños programas de juguetes.

Sardathrion - Restablece a Monica
fuente
2
No aprenderás nada sobre los pequeños programas de juguetes. Necesita escribir programas que resuelvan problemas reales. No tienen que ser grandes, no podrás escribir programas grandes solo, pero no deben ser solo juguetes.
Jan Hudec
@ JanHudec: Lo que usted describe es lo que yo llamo programas de juguetes : un código que resuelve un solo problema. Entonces, por ejemplo, un algoritmo Runge-Kutta sería un "programa de juguete", mientras que una simulación completa de N cuerpos no lo sería.
Sardathrion - Restablece a Monica el
2
Ambos son "programas de juguetes". Porque los problemas son ejemplos artificiales de un problema a menos que esté haciendo simulaciones numéricas y la mayoría de los programadores no. El problema real es algo que usted o alguien que conoce va a utilizar realmente. Probablemente tendrá una GUI o al menos un análisis de línea de comandos bastante complejo y manipulará archivos o se conectará a la red y usará algunas bibliotecas existentes y no tendrá ningún algoritmo no trivial, porque el 99% de los programas que existen no lo hacen.
Jan Hudec
1
@ JanHudec, ¿estás diciendo que una persona no aprende nada trabajando primero con problemas pequeños y limitados? Si los programadores saltan directamente a problemas grandes y complicados sin aprender al menos algunos principios básicos y algunas expresiones idiomáticas básicas, así es como terminamos con estas enormes aplicaciones de "Big Ball of Mud".
Onorio Catenacci
3
No estoy seguro de si esto responde la pregunta, pero cada programador de C ++ debería leer ese libro (y sus secuelas)
Gort the Robot
2

Intente leer algo que haya existido durante años y que sea de gran tamaño. Tomará unos meses de tiempo comenzar a entender el código y hacer algo en él.

Firefox, Thunderbird, OpenOffice.org, LibreOffice vienen a la mente. Debería haber muchos más similares también. Estos proyectos se ejecutan en muchos sistemas operativos y plataformas de hardware. Además, tienen que puntuar en legibilidad. Estas podrían ser las técnicas que buscas.

vpit3833
fuente
0

Incluso mejor que leer el código sería trabajar con ese código en forma de corregir errores y agregar pequeñas mejoras aquí y allá. Elija algún programa, preferiblemente uno para el que haya utilizado, regístrese en la lista de correo, comience a revisar su rastreador de errores e intente diagnosticar algunos errores. Pregunte en la lista de correo si encuentra la solución para algo, ya sea razonable o cuando se atasca. Eso le dará algunos objetivos específicos al leer el código, lo obligará a comprender realmente y es lo que hará la mayor parte del tiempo en cualquier trabajo.

Quizás pueda mirar alguna aplicación de KDE. La mayoría están escritos en C ++ y puedes comenzar con uno más pequeño primero.

Jan Hudec
fuente
-3

Sí, el código de las bibliotecas Boost C ++ es un gran recurso para aprender, si no uno de los mejores del planeta. Sin embargo, para un novato, aprender del código Boost puede hacer que la curva de aprendizaje sea muy empinada. Si realmente quiere intentar leer Boost, comience con algunas bibliotecas pequeñas y simples como Boost.Array .

mloskot
fuente
2
Creo que sería como sugerir que una buena forma de aprender a esquiar es comprar golpeando las pistas de diamantes negros dobles.
Gort the Robot
@StevenBurnap, por favor, lee mi respuesta una vez más y señala esa sugerencia ridícula que hice. Deje de hacerlo, por favor, y señale una mejor biblioteca completa que valga la pena leer para principiantes. Llegará a la conclusión de que los mejores ejemplos para principiantes son de un libro para principiantes.
mloskot
-3

Intenta leer el PDF de C ++. Es gratis, y aprendí C ++ de él, a pesar de que no tenía otra experiencia de programación, y solo tengo 14 años. Increíble.

Xi_Ensen
fuente
3
¿Puedes agregar un enlace a algún recurso relacionado con este proyecto?
Giorgio
3
¿A qué PDF de C ++ te refieres?
Martijn Pieters