¿Cómo estás usando C++ 11 hoy?
c++11 standards (15)
Esta es una pregunta en dos partes, la primera es la más importante y la preocupación ahora:
- ¿Sigues el diseño y la evolución de C ++ 11? ¿Qué blogs, grupos de noticias, documentos de comités y otros recursos sigues?
- Incluso cuando no está utilizando ninguna función nueva, ¿cómo han afectado sus elecciones actuales?
- ¿Qué nuevas funciones está utilizando ahora, ya sea en producción o de otra manera?
La segunda parte es un seguimiento, en relación con el nuevo estándar una vez que sea definitivo:
- ¿Esperas usarlo inmediatamente? ¿Qué está haciendo para prepararse para C ++ 11, aparte de lo que se indica en las preguntas anteriores?
- Obviamente, el soporte del compilador debe estar allí, pero todavía hay compañeros de trabajo, herramientas auxiliares y otros factores a considerar. ¿Qué afectará más tu adopción?
Edición: El original realmente era demasiado argumentativo; sin embargo, todavía estoy interesado en la pregunta subyacente, por lo que he tratado de limpiarla y, con suerte, hacerla aceptable. Esta parece una vía mucho mejor que la duplicación: aunque algunas respuestas respondieron al tono argumentativo, aún se aplican en la medida en que respondieron a las preguntas, y todas las respuestas son propiedad de la comunidad que deben limpiarse según corresponda, también.
Aprender sobre las características de C ++ 0x fue interesante, en particular cuando me di cuenta de que ya estaba usando algunas de ellas a través de C ++ TR1. Hasta ahora, el extendido for
("foreach"), static_assert
y las mejoras en <functional>
son los que más uso en los programas C ++ 0x.
También me ha enseñado un poco sobre la reutilización de código. Tratar de reducir la cantidad de código que tengo que cambiar para adaptarme a C ++ 0x, y al mismo tiempo preservar el código compatible con C ++ - pre-0x tanto como puedo (por ejemplo: material de la biblioteca) me ha enseñado para integrar algunos arreglos y elementos de C ++ 0x en mi caja de herramientas pre-C ++ 0x; en particular, extendiendo numeric_limits<>
para incluir const_ miembros, agregando nullptr emulation , agregando default_delete
y construcciones similares, y haciendo uso de (aparentemente a menudo olvidado, ya que no he encontrado código que lo use aparte del mío) [slist|forward_list]
.
Yo diría que el uso de C ++ 0x hoy me ha ayudado a continuar utilizando C ++ - pre-0x hoy . No estoy seguro de que vaya a dar el salto a C ++ 0x "completo" en el corto plazo, considerando que Boost ayuda a cubrir algo de terreno allí. Y que no tengo la intención de tocar expresiones regulares o subprocesos con C ++ en mucho, mucho tiempo.
Depende Me estoy preparando para usar ciertas funciones de C ++ 0x en mi tesis de maestría (aunque hasta ahora me he quedado con los compiladores de C ++ 03 principalmente mientras espero VS2010b2)
Sin embargo, todavía no lo usaría en el trabajo de producción profesional real. Para eso, me gustaría esperar hasta que el estándar haya sido finalizado, y al menos en el caso de MSVC, hasta que el compilador haya sido lanzado en una versión no beta.
Estoy usando TR1 (regex, unordered_map, unordered_set ...) y algunas características de impulso que estarán en el próximo estándar como (con suerte) lexical_cast ... todos los días, no solo hoy :)
Estoy usando static_assert, decltype y, ocasionalmente, referencias de valor r
Estoy usando un montón de C ++ 0x, en particular plantillas y funciones variadas, auto y decltype, y rvalue referencias.
Si bien las cosas pueden ser un poco divertidas, con g ++ 4.5 y Visual Studio 10, estas características ahora son bastante estables y funcionan de la misma manera en ambos compiladores.
Los proyectos de software que estoy empezando ahora probablemente no se lanzarán en un año o así, y para entonces espero que estos nuevos compiladores estén disponibles como estándar.
No estoy usando C ++ 0x hoy, porque llevará a la pérdida de la portabilidad del código. Porque no hay C ++ 0x Standard hoy.
Respuesta: No
Razón: portabilidad de código
No puedo adivinar cuántos están interesados en el nuevo C ++ 0x y estoy bastante seguro de que todos los que conocen C ++ y lo utilizan tienen curiosidad y muchas ganas de recibir más noticias al respecto.
Comencé a usar todo lo nuevo de C ++ 0x tan pronto como se implementó desde g ++. Todavía para pequeños proyectos no portátiles. ¿Por qué? - La gente me dice constantemente que me olvide de c ++ y cambie totalmente a un lenguaje de scripting para obtener un desarrollo de código más rápido y que se olvide de la administración de la memoria. Sin embargo, mi mejor experiencia y conocimiento es en c ++. Sé RAII y uso la biblioteca Boost todos los días. Ahora, las nuevas características me hacen escribir mucho más rápido que antes. Sabiendo que los valores están aquí, los punteros (incluso los inteligentes) desaparecieron del código. Los algoritmos de STL con las lambdas, el rock y las listas de iniciadores me hacen muy feliz. La palabra clave auto es furiosa.
Por lo tanto, mi principal razón para usar C ++ 0x ahora es la velocidad de desarrollo .
No, pero me gustaría, especialmente por la funcionalidad lambda.
No, porque no está completamente implementado en los compiladores que uso.
Cuando salga C ++ 0x, y Visual Studio 2010 se publique por completo, junto con un g ++ "coincidente", usaré C ++ 0x cuando pueda. Esto es probable porque frecuentemente comienzo nuevos proyectos (hago juegos).
Aunque tengo una base de código existente, cambia cada vez que encuentro una manera de hacer algo mejor; El cambio no es un obstáculo para mí. Tomar ventaja de C ++ 0x sería otro cambio.
Encontrarás opiniones diferentes con bases de código más grandes. Algunos lugares prefieren que el código parezca uniforme, y eso significa que el irregular C ++ 0x no es una opción: tendrían que convertir todo el material para aprovechar C ++ 0x, o no usarlo.
Otros lugares podrían fomentar el uso de las funciones de C ++ 0x y, en el tiempo libre, tratar de corregir el código anterior para que coincida.
Y otros lugares, como yo, podrían querer aprovechar de inmediato todo lo que C ++ 0x tiene para ofrecer.
La respuesta es, depende.
No, sigo usando VC6 la mayor parte del tiempo :(, no iré a C ++ 0x hasta 2020 como muy pronto (¿quizás deba cambiar de compañía?)
No.
Todo mi software de aplicación está desarrollado en Java. Todo mi código rápido y sucio se hace en Python. Todo mi trabajo de bajo nivel se realiza en C. Generalmente no uso C ++ (por lo tanto, no me ha afectado).
Si usara C ++, trataría a c ++ 0x como si tratara a C1x. Me estoy asegurando de que mi código no se rompa, pero no voy a usar las nuevas funciones hasta que el estándar esté terminado y eliminado. .
En cuanto a si usaré nuevas funciones tan pronto como el estándar lo ratifique, no. El proceso será gradual. A medida que se extienda el mantenimiento para mis aplicaciones actuales, puedo agregarlo, dependiendo del beneficio probable.
Incluso las nuevas aplicaciones que escribo requerirán la necesidad de las nuevas características de idioma antes de considerar usar esas características.
Nuevo trabajo este año, así que cambié voluntariamente el lado de .NET / C #. La mayoría de las quejas que tuve con C ++ son simplemente inexistentes en C #. Hicieron muchas cosas bien (¡oh! Yo alabando a MS)
Creo que C ++ se ha convertido en un monstruo, y la última vez que lo miré, C ++ 0x pareció hacer crecer al monstruo en lugar de adelgazar al subconjunto realmente necesario.
Solo mis dos centavos por una pregunta subjetiva;)
Sí, cuando estoy jugando en mi propio código que no tiene la pretensión de salir a la naturaleza.
No cuando codifico algo que algunas personas usarán en compiladores más antiguos.
por ahora, todo lo que estoy usando es auto y decltype, ya que la mayoría de mi código no usa nada que requiera referencias de valor r o cosas por el estilo, y estoy bastante satisfecho con el auto por ahora (los latidos declaran un iterador de un vector de mapas)
unordered_map
. Debería haber sido obvio cuando el map
se especificó originalmente que no todos querrían pagar el costo de ordenar sus claves de contenedor asociativas, pero bueno, al menos finalmente tenemos un contenedor STL completamente estandarizado para ello.
También estoy usando la biblioteca de hilos y otras cosas. Jaja, soy un adoptante temprano! No tengo empleo y no trabajo directamente con nadie, así que básicamente puedo hacer lo que me gusta con estas cosas. :)