- C++0x
-
C++0x
C++0x Es el nombre no oficial del nuevo estandar para el lenguaje de programacion C++.
Se planea que remplace el estandar actual ISO/IEC 14882, que fue publicado en 1998 y actualizado en 2003; estas versiones preliminares son conocidas como C++98 y C++03. El nuevo estandar incluira adiciones al nucleo del lenguaje y extendera la biblioteca estandar. Incluira caracteristicas del Reporte Tecnico 1[1] como es la libreria de computo cientifico, exceptuando la de funciones matematicas especializadas.
Debido a que el estandar aun no es finalizado, este articulo puede no reflejar el mas reciente estado del documento, el bosquejo mas recientemente publicado, N2914, fue en junio de 2009.
Directivas y lineamientos
Las modificación para C++ incluyen tanto el núcleo del lenguaje como la biblioteca estándar.
En el desarrollo de cada utilidad del nuevo estándar, el comité ha aplicado algunas directivas:
- Mantener la estabilidad y la compatibilidad con C++98 y posiblemente con C.
- Preferir la introducción de nuevas caracteristicas a través de la biblioteca estándar en lugar de extender el lenguaje.
- Preferir cambios que puedan evolucionar la técnica de programación.
- Mejorar C++ para facilitar el diseño de sistemas y bibliotecas en lugar de introducir nuevas caracteríticas útiles solo para aplicaciones específicas.
- Incrementar la seguridad de los tipos de datos, suministrando alternativas a las técnicas actuales.
- Incrementar el rendimiento y la habilidad de trabajar directamente con el Hardware.
- Proveer soluciones apropiadas para problemas del mundo real.
- Implemenar el principio de zero-overhead [a] (soporte adicional requerido para algunas utilidades sólo si es usado).
- Hacer C++ fácil de aprender y enseñar sin remover utilidad alguna requerida por programadores expertos.
Se pondrá atención especial a los programadores principiantes, debido a que ellos comprenden la mayoria de los programadores computacionales y debido a que muchos de ellos no intentan expandir su conocimiento sobre C++, se limitan a operar en los campos en los que se especializan. [cita requerida]. Adicionalmente y considerando lo basto del lenguaje y su usabilidad (que incluyen diferentes areas de aplicación y estilos de programacion), incluso los programadores mas experimentados pueden volverse principiantes en un nuevo paradigma de programación.
Extensiones al núcleo del lenguaje
El objetivo principal para el comité del nuevo estándar es el desarrollo del núcleo del lenguaje; la publicación final del documento depende del progreso de esta parte.
Varias áreas de la base del lenguaje serán significativamente mejoradas, esto incluye soporte para aplicaciones multihilo, programación genérica, inicialización uniforme y mejoras al rendimiento.
Para propósitos de este articulo, las características y los cambios son agrupados en 4 secciones generales.
- Mejoras al rendimiento en tiempo de ejecución.
- Mejoras en el rendimiento en tiempo de compilación.
- Mejoras en usabilidad.
- Nuevas funciones.
Algunas características pueden pertenecer a múltiples grupos, pero solo serán mencionadas en aquellas que más las representan.
Mejoras al rendimiento en tiempo de ejecución
Mejoras en el rendimiento en tiempo de compilación
Plantilla externa (extern template)
En estandar C++, el compilador debe instanciar una plantilla donde quiera que se encuentre dentro de la unidad de traslación. Esto puede incrementar el tiempo de compilación dramaticamente, particularmente si la plantilla está en muchas unidades de traslación usando los mismos parámetros, y no hay manera de decirle al compilador que no cree una instancia de una plantilla.
C++0x intronducira la idea de plantillas externas; C++ ya cuenta con la sintaxis para forzar al compilador a instanciarla en un lugar en particular:
template class std::vector<MyClass>;
Con el codigo anterior el compilador instanciará la plantilla en la unidad de traslación del codigo fuente. C++0x simplemente extenderá la sintaxis a:
extern template class std::vector<MyClass>;
Esto le dira al compilador que no cree una instancia de la plantilla en esta unidad de traslación.
Mejoras en usabilidad
Nuevas funciones
Caracteristicas que fueron movidas o no incluidas
Movidas a otro reporte:
- Módulos
- Tipos Decimales
- Funciones Matemáticas Especializadas
Pospuestas:
- Conceptos
- Recolector de basura
- Reflexión
- Macro Scopes
Véase también
Notas
- a El principio zero-overhead se basa en que una instrucción no tenga costo en ciclos de reloj, es decir que toda la operación se lleva acabo en un solo ciclo de procesador, aumentando el rendimiento del sistema.
Referencias
- ↑ Technical Report 1, Reporte Tecnico 1, en ingles
Enlaces externos
- The C++ Standards Committee, comite encargado de los estandares del lenguaje C++, en ingles.
- Bjarne Stroustrup's homepage, página personal del creador de C++, con información sobre la evolución del lenguaje, en ingles.
Categoría: Software en desarrollo
Wikimedia foundation. 2010.