2010-06-18 20 views
8

Uso principalmente C++ para hacer informática científica, y últimamente me he restringido a un subconjunto muy similar a C de características C++; es decir, no hay clases/herencia, excepto complejas y STL, plantillas que solo se usan para buscar/reemplazar tipos de sustituciones, y algunas otras cosas que no puedo expresar con palabras en la parte superior de mi cabeza. Me pregunto si existen subconjuntos oficiales o bien documentados del lenguaje C++ que podría ver como referencia (así como también fundamento) cuando voy a elegir y elegir qué funciones usar.Subconjuntos oficiales de lenguaje C++

+7

¿Cuál es tu razón para definir un subconjunto de C++? ¿Por qué no utilizar las funciones que lo ayudan y dejar las funciones que no lo hacen?Es potencialmente mucho trabajo definir un subconjunto consistente de características; ¿Cuál es la ganancia? –

+1

No mucho, solo tenía curiosidad por saber si este tipo de cosas ha sido bien definida alguna vez. Me gusta mantener las cosas fácilmente conectables con C y Fortran, y quería las opiniones de otras personas sobre algunas de las características del idioma. –

Respuesta

3

Hay Embedded C++. Suena en su mayoría similar a lo que estás buscando.

+3

C++ incrustado nunca atrapado; una vez que hayas matado el lenguaje tanto, no tiene ventajas sobre C. –

+2

@Mike, algunos dirían que nunca lo hizo. –

0

Bueno, los últimos desarrollos (TR1, C++ 0x) en C++ lo hicieron mucho más genérico, lo que le permite realizar programación imperativa, OOP o incluso (limitada) en C++. Bibliotecas como Boost también le permiten hacer una metaprogramación basada en plantillas declarativa.

Creo que Boost es lo primero que se debe probar en C++. Es una biblioteca completa, que también incluye varios módulos que le permiten programar en estilo funcional (Boost.Functional) o realizar metaprogramación declarativa en tiempo de compilación (Boost MPL).

+3

Subconjuntos, no superconjuntos. –

+0

Bueno, depende de lo que usted llame un conjunto; si solo STL, entonces Boost es un superconjunto de hecho. Pero mi punto fue que Boost.Functional y Boost.MPL son subconjuntos de C++ como un lenguaje. –

+0

Originalmente me refería al subconjunto como a un subconjunto de las características del lenguaje. Boost parece requerir un conjunto muy completo de características de C++. –

2

Los desarrolladores de GCC están a punto de permitir algunas características de C++. Aún no conozco ninguna guía oficial, pero estoy bastante seguro de que definirán algunas. Eche un vistazo a initial report en la lista de correo.

3

No hace mucho escuché este podcast de SE-Radio - Episode 152: MISRA with Johan Bezem, que presenta MISRA, directrices estándar para C y C++ para garantizar una mejor calidad, intente verlo.

3

Google publica su guía interna de estilo C++, que a menudo se denomina subconjunto: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml. Ben Maurer, cuya empresa reCAPTCHA fue adquirida por Google, lo describe de la siguiente manera in this post on Quora:

Es, básicamente, se puede pensar en subconjunto C++ de Google como C, más un poco de azúcar:

La posibilidad de agregar métodos para estructurar

Herencia simple básica.

Collection y de cadena clases de manejo de recursos basado

ámbito de aplicación.

También publican una herramienta de pelusa, cpplint.py.

-1

OpenCL ha estado utilizando C para la escritura de granos, pero se han añadido recientemente (o pronto añadirá) C++ fijaciones y quizá Java. OpenCL omite una serie de características de robo de rendimiento de C. Excluidas son cosas como indicadores de función y recursión. Los indicadores inteligentes y el polimorfismo también crean gastos generales.

Restricciones en C: SIMD programming languages

ligeramente fuera de tema: He aquí una buena discusión comparando con OpenCL CUDA C usando OpenCL or CUDA Which way to go?

+0

Mi punto es que OpenCL limita lo que se le permite usar en C y C++. Muchas características se eliminan o no son compatibles, o ofrecen soporte limitado. Aún así, estos subconjuntos de esos idiomas todavía son bastante útiles y le permiten escribir todo tipo de simulaciones y software para su uso en GPGPU, DSP, FPGA y CPU multinúcleo. – Max