portable para online mejor dev descargar c++ compiler-construction mission-critical

para - dev c++ portable 2018



¿Cuál es el mejor compilador de C++? (9)

¿Puede un compilador de C ++ producir un binario no tan bueno? Puede pensar aquí en la robustez y el rendimiento de la salida. ¿Hay algo así como el "mejor" compilador de C ++ para usar? Si no, cuáles son los puntos fuertes y, por supuesto, los puntos no tan fuertes (errores conocidos y problemas), de los compiladores conocidos (g ++, compilador Intel C ++, Visual C ++, etc.).

¿Hay casos documentados cuando un compilador produjo resultados incorrectos que resultaron en una falla de software de misión crítica?


¿Cuál es la plataforma que estás usando? Por ejemplo, Visual C ++ no te será de utilidad en Linux.

En realidad, los tres que mencionas son los tres que habría escogido, por estas razones.

gcc / g ++: fuente abierta, comprobada, refinada por años de experiencia colaborativa en muchos sistemas Linux y UNIX. El punto no tan fuerte es simplemente que es una herramienta de línea de comandos independiente. Puede hacer, o posiblemente encontrar, su propio entorno de estilo IDE pero no se "envía" de esa manera, por así decirlo.

Visual C ++: bien soportado por Microsoft, cargas de ejemplos de código y documentación (MSDN), naturalmente se engancha en las API de Windows. El punto no tan fuerte es que no es especialmente, bueno, "visual". Si está acostumbrado a Visual Basic (por ejemplo), encontrará que Visual C ++ no funciona de la misma manera.

Compilador de Intel C ++: por desgracia, no tengo experiencia con el compilador de Intel, pero creo que admite el paralelismo y cuenta con bibliotecas numéricas de alta precisión.

Otro que vale la pena mencionar es el generador de C ++ de Borland. Se convierte en una ventaja para ser un entorno de desarrollo de aplicaciones rápido con una gran cantidad de controles complementarios a través de la compatibilidad con VCL de Delphi, pero a la inversa, el código desarrollado en C ++ Builder no es fácilmente transferible a otros compiladores de C ++.


En primer lugar, la plataforma que está utilizando generalmente dicta qué compiladores usar.

En segundo lugar, su pregunta sobre la solidez y el rendimiento. No estoy seguro de lo que quiere decir con robustez. pero si se refiere a la corrección de los binarios compilados, tendría que decir que siempre que use una versión estable de cualquiera de los compiladores que mencionó no se encontrará con problemas de "robustez". Estos compiladores son todos muy maduros y se han utilizado en innumerables proyectos de la vida real. Entonces no me preocuparía por la robustez en absoluto.

En cuanto al rendimiento, es difícil de responder porque cada compilador tiene diferentes técnicas de optimización que teóricamente podrían producir un rendimiento diferente. Espero que haya alguien más entendido que yo que pueda contarte sobre esto.

En realidad, dado que los compiladores que mencionas son de alta calidad y compiladores maduros, las preguntas que deberías formular no son qué compilador es más sólido, sino:

  • ¿Cuál es el compilador que admite mi plataforma de destino?
  • ¿Cuál es el compilador que funciona bien con mi entorno de desarrollo y herramientas?
  • Con qué compilador está mi equipo de desarrollo e integradores más familiarizados.

Sin embargo, la cuestión de las técnicas de optimización es una pregunta abierta, y es una pregunta no trivial. Espero que algunos puedan arrojar algo de luz sobre eso.


G ++ parece ser el más popular. Es gratis, portátil y bastante bueno. El puerto de Windows (MinGW) realmente estaba fechado la última vez que lo usé (tal vez hace un año).

El compilador Intel C ++ se considera como el que genera el código más rápido (sin embargo, se sabe que genera un código SIMD incorrecto para los procesadores AMD). Puede usarlo libremente en GNU / Linux bajo condiciones bastante restrictivas.
Lo he usado por un tiempo y me gustó el hecho de que emite advertencias inteligentes que otros no.

VC ++ a menudo se considera como el mejor IDE de C ++, y por lo que he oído, el compilador también es bastante bueno. Es gratis (como en cerveza gratis) y solo está disponible en Windows, por supuesto.
Si está interesado en la programación de Windows, sugeriría este compilador, porque siempre está actualizado y proporciona funciones más avanzadas para este fin.

Sugeriría VC ++ en Windows, G ++ para otros sistemas operativos. Pruebe la versión gratuita de I ++ usted mismo, para ver si vale la pena el dinero.

¿Hay casos documentados cuando un compilador produjo resultados incorrectos que resultaron en una falla de software de misión crítica?

Sí, probablemente, pero yo diría que la mayor parte del tiempo es probablemente culpa del programador. Por ejemplo, si alguien no sabe cómo funciona la aritmética de coma flotante, es fácil escribir un código no confiable. Un buen programador también debe saber qué se garantiza que funciona con el estándar C ++ y qué no. También debe saber cuáles son los límites del compilador, por ejemplo, qué tan bien implementa el estándar y qué tan agresivamente optimiza.


Además de la respuesta de Bastien Léonard: existe un compilador de C ++ multiplataforma más: Comeau . Es el compilador de C ++ que cumple con los estándares. La última versión tiene compatibilidad con el lenguaje central de C ++ 0x.


Dado que usted menciona "como parte de un sistema de avión comercial" en un comentario, puede valer la pena mirar los compiladores proporcionados por las compañías que realmente mantienen la certificación en ese espacio u otros espacios de productos de seguridad crítica. Green Hills Software es uno. Wind River es otro.


El objetivo de un compilador de optimización es generar un programa optimizado que sea funcionalmente equivalente al original. El equivalente funcional tiene que ver con efectos observables, por supuesto; el estado, naturalmente, no sería el mismo. Cualquier compilador que pueda generar una traducción incorrecta es malo, en mi opinión, aunque supongo que podría relajar ciertos problemas en diferentes situaciones. Una ventaja de un compilador convencional es que los errores se solucionan más rápido.

En cuanto al rendimiento, los compiladores generalmente hacen dos tipos de optimizaciones: optimizaciones independientes de la plataforma (a nivel de fuente / árbol de sintaxis / representación intermedia) y específicas de la plataforma.

Supongo que las mejores optimizaciones independientes de la plataforma probablemente se encuentren en varias modificaciones académicas de compiladores existentes (pero probablemente una optimización diferente y cada uno). Estas optimizaciones finalmente se reconocen y eventualmente llegan a la corriente principal.

En cuanto a las optimizaciones específicas de plataforma, creo que las compañías que crean estas plataformas a menudo tienen las mejores optimizaciones (por ejemplo, los compiladores internos de Intel), pero aún no están integradas en compiladores de disponibilidad general y, finalmente, también se filtran.


Encontré problemas al utilizar Cygwin, un código que no se compila pero que genera una falla de segmentación dentro del compilador. El mismo código funciona con MinGW.

[editar] Aquí está el informe del compilador:

lista.h: In constructor `Lista<Dado>::Lista() [with Dado = int]'': principal.cpp:15: instantiated from here lista.h:13: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://cygwin.com/problems.html> for instructions.

Ya no tengo el código fuente que generó el error, así que no puedo enviar un informe.

[/editar]



http://www.compilers.net/Dir/Free/Compilers/CCpp.htm

Microsoft tiene un buen compilador gratuito, pero si trabajas en Unix o Mac eso no te servirá de nada.

Borland también tiene un buen compilador gratuito.

He probado varios compiladores gratuitos y me siento más cómodo con el Dev-C ++. El paquete total es relativamente pequeño y viene en ventanas y sabores de Linux. Para mí, es perfecto para probar los límites del lenguaje C ++. Se compila rápido y facilita la experimentación.

Te recomiendo este software llamado Compilador Digital C / C ++ de Mars, y puedes obtenerlo desde http://www.brothersoft.com/digital-mars- ... es un compilador libre de C / C ++ para Win32, Win16, DOS32 y entorno DOS.