steps program operator first ejemplos compiler caracteristicas c++

program - ¿Cómo ha cambiado C++ en la última década?



c++ program (6)

Creo que uno de los cambios más grandes es uno de mentalidad: muchas personas (¡finalmente!) Se han dado cuenta de que las plantillas son increíblemente poderosas y no necesitan ser lentas, y el uso de STL y boost está mucho más extendido que hace 10 años.

Apenas / raramente he usado C ++ en la última década, y ahora parece que voy a hacer algo de nuevo. Lo espero con ansias, pero tengo que preguntarme cómo ha cambiado desde la última vez que lo usé.

¿Hay páginas web, publicaciones de blog o incluso libros buenos o breves sobre cómo ha cambiado C ++ en la última década?

Tenga en cuenta que esta pregunta tiene que ver con el idioma, las herramientas o cualquier información adicional sobre cómo trabajar en C ++. Específicamente estoy trabajando en Windows, usando VC ++ 2008.



El mayor cambio es que el estándar de C ++ en realidad funciona en todos los compiladores principales ahora. Cosas como las plantillas de miembros solían ser dudosas.


Si bien el estándar oficial no ha cambiado mucho en la última década, hay varias cosas importantes que han sucedido:

  • Si bien aún no es un estándar oficial, un nuevo estándar próximo (comúnmente llamado C ++ 0x) está "a la vuelta de la esquina". GCC y MSVC 2010 han incorporado partes significativas de ese nuevo estándar, pero no estoy seguro de cuánto es de uso común.
  • La biblioteca Boost se ha convertido en un jugador importante al proporcionar soporte adicional para el idioma, hasta el punto de que fue una influencia significativa en el nuevo estándar.
  • las técnicas de programación ''basadas en plantillas'' se han vuelto mucho más frecuentes, probablemente superando a las antiguas técnicas ''basadas en herencia'' de la reutilización de código (esto podría haber estado bastante avanzado la última vez que consultó C ++, dependiendo de las prácticas que su tienda haya usado en el tiempo).
  • los compiladores (y en particular los de Microsoft) han avanzado mucho en el cumplimiento de los estándares

Una pregunta interesante ya que estoy llegando a mi décimo aniversario de la programación de C ++ para monedas.

Mi opinión personal es que sería un poco cauteloso, pero solo un poco, ya que no lo he visto todo (aunque creo que puedo adivinar cómo es) de prestar mucha atención a la cámara de eco de Internet. Es cierto, algunas personas han optado por el estilo moderno de C ++, con todo completamente en plantilla y utilizando técnicas modernas para que el compilador haga su mejor efecto Prolog. Sin embargo, esto ciertamente no es universalmente cierto, y, en general, el código C ++ que veo hoy en día es muy similar al código C ++ que vi hace diez años.

Sería una buena idea repasar las modas modernas, porque algunas cosas que eran algo raras hace diez años (punteros inteligentes, uso regular de RAII, contenedores de bibliotecas estándar y cosas) ahora son más comunes. Pero a menos que esté seguro de que el código con el que va a trabajar está adornado con plantillas y boost, etc., tiene una buena posibilidad de trabajar con algo que es muy parecido a lo que solía trabajar.

Puede que no esté a la moda decirlo, pero eso no lo hace menos cierto: independientemente del nivel de habilidad, a muchas personas no les importa el C ++ moderno. Algunos, porque no lo entienden. Algunos, porque lo entienden. Y para algunos, tal vez "cuidado" ni siquiera es la palabra correcta, ni siquiera saben que existe. Y como es de esperar, estas personas codifican en consecuencia.

Tal vez me muevo en los círculos equivocados, pero mi experiencia ha sido que las personas que no lo hacen o no pueden o no quieren codificar en el estilo moderno superan a las que podrían hacer por un amplio margen. Y los que podrían hacerlo, generalmente no, porque son superados en número. Su código se reescribe, o se ignora, hasta que comienzan a escribir cosas que otras personas pueden entender. Tal vez esto sea bueno, o tal vez sea malo; en mi opinión, no es relevante, porque el resultado es el mismo: si su experiencia resulta ser como la mía, tiene muchas posibilidades de encontrar el código de hoy que es notablemente similar a lo que habrías visto en 1999.

PS Nicolai Josuttis ha escrito un par de libros que parecían agradarles a los expertos en plantillas residentes de mi último empleador. También pruebe Modern C ++ Design (Alexandrescu) - probablemente un poco anticuado ahora, pero explica muchos de los principios. El C ++ excepcional de Herb Sutter , como recuerdo de una copia de una copia del trabajo, es una buena descripción de algunas técnicas modernas sin volverse demasiado loco en el frente de la plantilla. Y, por supuesto, boost demuestra todo este tipo de cosas (y mucho, mucho más, y luego un poco de material adicional) puesto en práctica sobre una variedad de compiladores.

(Es de esperar que la lista anterior no sea tan antigua; como mi respuesta podría sugerir, he encontrado una necesidad mucho menor de estar al día con las últimas tendencias en C ++ de lo que nunca hubiera esperado).


VS2008 viene con TR1 , una gran adición a std que contiene elementos como matrices estáticas, punteros de conteo de referencias y cosas por el estilo. Aparte de eso, el mayor cambio es que el compilador compila la definición del estándar.