¿El comité C ++ prueba sus nuevas especificaciones de diseño con algún tipo de compilador prototipo antes de lanzar un nuevo estándar? ¿O lanzan un estándar que es, en efecto, solo teórico hasta que los grandes compiladores lo implementen?
c++
language-design
standards
Matthew James Briggs
fuente
fuente
boost::shared_ptr
=>std::shared_ptr
.boost.lambda
=> C ++ 11 expresiones lambda).Respuestas:
El Comité de Normas de C ++ tiene estatutos y reglas, pero la mayoría de estos se centran en la estructura de la organización, cómo presentar propuestas, votar, publicar la norma, etc. y no tanto en los detalles técnicos de la norma en sí o cómo puede ser probado
Hasta donde yo sé, no existe un requisito formal para "probar" una característica o su diseño. C ++ también es algo único en el sentido de que no hay referencia o implementación "primaria" (por ejemplo, Microsoft CLR, Oracle JDK, Zend PHP). Sin embargo, los miembros del comité consisten en muchas organizaciones con un profundo conocimiento del idioma y la implementación del compilador. Por ejemplo, si sigue ese enlace anterior, verá representantes de Microsoft e Intel que tienen compiladores de C ++ muy respetados. Red Hat y algunas otras compañías que contribuyen a GCC también están involucradas.
Al proponer una nueva característica, los miembros del comité ya tienen una idea bastante buena de si es factible, si puede entrar en conflicto con otras características o hacer que la gramática sea ambigua de una manera que complica el análisis innecesario. ( Aquí hay una buena pregunta sobre la gramática de C ++ )
La respuesta corta es "no, el comité no requiere probar sus diseños usando prototipos". Sin embargo, no hay mucha necesidad porque los miembros del comité son expertos en C ++ que entienden todos los detalles a un nivel que la gran mayoría de los programadores no. Recuerde, estas personas son arquitectos de idiomas expertos en teoría del lenguaje y diseño de compiladores.
Dada la participación de los proveedores de compiladores en el proceso, es factible que uno o más de ellos puedan crear un prototipo de una nueva característica, pero nuevamente, no hay un requisito formal para esto ni es algo de lo que he leído en documentos disponibles públicamente Comité C ++.
También tienden a ser muy conservadores, agregando gradualmente nuevas características que tienen una demanda en el mundo real sin especificar grandes cantidades de nuevas características que pueden resultar riesgosas. De hecho, en los últimos años han agregado nuevas características que existían como extensiones propietarias o bibliotecas de código abierto que ya funcionan en el mundo real. Por ejemplo, C ++ 11 y C ++ 14 incorporan partes de Boost , que ya se ha probado en el mundo real en múltiples compiladores y entornos de ejecución. No hay necesidad de probar algo que ya está probado.
fuente