¿La mejor visión general de los paradigmas modernos de C ++? [cerrado]

16

Solía ​​escribir C ++ ampliamente entre 8 y 10 años atrás. Desde entonces me mudé a C # por razones profesionales. Sin embargo, de vez en cuando veo declaraciones como

"Si todavía está siguiendo manualmente las referencias de puntero, lo está haciendo mal"

o

"C ++ es perfectamente seguro siempre que utilice conceptos modernos como RAII y no asigne memoria manualmente como un desarrollador C en recuperación".

Ambos fueron procedimientos estándar hace una década. He visto que C ++ se ha mejorado considerablemente en los últimos tiempos; C ++ 0x en particular parece tener algunas capacidades nuevas. ¿Cuál es el mejor recurso para que un programador "C / old C ++" quede atrapado en patrones y prácticas "modernas" de C ++?

GWLlosa
fuente
3
Eran un procedimiento estándar hace una década. Desafortunadamente, todavía hay una porción muy significativa de desarrolladores de C ++ que utilizan el procedimiento estándar de hace tres décadas.
DeadMG
77
No conozco un solo recurso, pero el C ++ moderno básicamente se reduce a: (1) uso extenso de STL siempre que sea posible en lugar de algoritmos enrollados a mano, (2) uso de punteros inteligentes y contenedores STL sobre asignación / desasignación manual , (3) un estilo de programación funcional que utiliza functores / lambdas junto con funciones de orden superior, y (4) una preferencia por el polimorfismo estático basado en plantillas sobre las funciones virtuales de tiempo de ejecución siempre que sea posible
Charles Salvia
Efectivo C ++ por Scott Meyers
Gyan alias Gary Buyn

Respuestas:

5

Puede tener más que ver con los materiales de instrucción que la mayoría de las otras cosas, pero hace 8-10 años me parece que la forma en que se usó el idioma difería mucho en la actualidad. El enfoque actual se centra más en aprovechar las plantillas, la seguridad de tipos y la programación genérica, donde antes había más miedo a todo eso y las personas se enfocaban casi exclusivamente en la C con aspectos de objetos.

Los materiales de instrucción también están cambiando. Mientras que antes de que el libro de inicio estándar de C ++ lo llevara a través de printf, scanf, etc., casi ni siquiera los ve en libros con un enfoque moderno.

Algunos buenos libros son cualquiera de los libros rojos. Excepcional C ++, Más excepcional C ++, Metaprogramación de plantillas C ++, Diseño moderno de C ++, C ++ acelerado ...

Creo que mirar dónde trabajo actualmente puede ser un buen ejemplo. Vine aquí usando C ++ de una manera moderna y parece que la mayoría de los desarrolladores ni siquiera saben lo que estoy haciendo o por qué. Hacer objetos con el operador () en ellos, por ejemplo ... Tuve que comentar cada vez que ocurría bind () y, finalmente, me dijeron que desechara todo ese código. No sé qué hacen los inicializadores ... En realidad, ha sido realmente extraño y difícil para mí.

Edward extraño
fuente
5

Para obtener una supervisión rápida de las características modernas presentadas bastante bien, no se equivocaría al ver la reciente presentación de Herb Sutter , "Escritura de código C ++ moderno: cómo ha evolucionado C ++ a lo largo de los años" de las características de C ++ en // build /.

Habla sobre por qué es un lenguaje mejor que C # (por supuesto, Microsoft cambia sus pantalones regularmente, y hoy usan la moda C ++, por lo que promocionarán esto, solo como si promocionaran C # como la respuesta al hambre mundial en una década Hace), pero al hacerlo describe todos los bits buenos (como la gestión de memoria 'automática' y las clases STL) y luego habla sobre los nuevos bits del estándar C ++ 0x.

gbjbaanb
fuente