Cuándo pagar los compiladores de C ++ [cerrado]

19

Recientemente comencé a preguntarme cuándo los desarrolladores deberían pagar por los compiladores. Los compiladores son gratuitos con la mayoría de las plataformas o hay una versión gratuita fácilmente obtenible.

Ejemplo:

OS X - GCC y Clang / LLVM vienen con las herramientas de desarrollo. No hay limitaciones aquí sobre cómo y qué puede resultar con ellos.

Linux - GCC y estoy seguro más. No sé el estado actual de los compiladores de Linux. No hay limitaciones aquí sobre cómo y qué puede resultar con ellos.

Windows: MinGW y Microsoft ofrecen una versión gratuita de Visual Studio. No hay limitaciones con MinGW, pero creo que con Visual Studio gratuito hay limitaciones severas.

Sin embargo, como ejemplo, Intel produce compiladores C / C ++. Son altos en precio. Educativamente, creo que uno puede obtener la versión OS X por $ 49 y Windows / Linux por $ 129 cada uno. Luego ofrecen un producto completo "Studio" también. Obviamente, utilizando los precios educativos hay limitaciones impuestas.

Pero lo que me pregunto es cuándo debería uno realmente considerar pagar por los compiladores. Un ejemplo que se me ocurre es un videojuego. Si está utilizando un compilador que funciona en las plataformas principales, no habría más herramientas de conmutación para la plataforma. Parece que habría un nivel de facilidad para cambiar entre plataformas si las herramientas fueran las mismas.

¿Alguien puede arrojar algo de luz sobre el pago de compiladores como los compiladores Intel y los verdaderos beneficios multiplataforma que uno podría obtener al usarlos? ¿El código de uno se vuelve menos portátil, incluso tratando de no hacer técnicas específicas de la plataforma?

Jason
fuente
29
No confunda Visual Studio con los compiladores de Microsoft, los compiladores están disponibles de forma gratuita y son los mismos en las ediciones normales y Express de Visual Studio. Incluso puede obtenerlos sin Visual Studio, a través del SDK de Windows .
Yannis
66
@Rig Bueno, Microsoft es parcialmente el culpable de esto, nunca hicieron un esfuerzo real para anunciar el hecho de que su compilador C ++ está disponible gratuitamente. Solo el hecho de que no puede descargarlo solo (sin el SDK de Windows o Visual Studio Express) es suficiente para confundir a las personas sobre su disponibilidad.
Yannis
55
@ Rig exactamente. Tienen un ejército evangélico en el terreno que anuncia Visual Studio Express (un IDE) y Windows SDK (una colección de varias herramientas), y no mencionan en absoluto su compilador de C ++ (ni siquiera aparece en el sitio web del SDK de Windows). para descargar solo el compilador y nada más.
Yannis
3
@YannisRizos: si no me equivoco, los compiladores de C ++ ya no forman parte del SDK de Windows: msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx ¿lo son?
Codificador
1
@JeffO - SDK . Descarga gratuita e incluye las herramientas de C ++. Puede haber una versión más nueva, pero eso es lo que encontré primero.
Bobson

Respuestas:

25

En mi experiencia, la capacidad de plataforma de host cruzado es una consideración menor para elegir un compilador. De hecho, todo lo contrario. Las personas eligen mucho más frecuentemente un compilador por su soporte superior para una plataforma de destino específica.

Tome el compilador de Intel, por ejemplo. Por lo general, las personas lo compran cuando quieren obtener hasta el último rendimiento del último chip Intel. Después de todo, es difícil diseñar un compilador mejor que los chicos que pueden caminar por el pasillo y hablar con los chicos que diseñaron los chips.

Es la misma razón por la que las personas compran herramientas de Microsoft para desarrollar en plataformas de Microsoft. Ese es el primero que tiene el apoyo.

Karl Bielefeldt
fuente
1
Ack Es por eso que el campo de la informática de alto rendimiento es un mercado importante para los compiladores comerciales. Porque el rendimiento y las capacidades de ajuste son realmente importantes cuando el tiempo de cálculo se asigna (y a veces se factura) por hora.
mschuett
Para ampliar esto, en algunas situaciones simplemente no hay un compilador gratuito disponible. Por ejemplo, para el desarrollo del kernel de Windows (Win8 +) la única opción es usar MSVC con el compilador WDK integrado.
SomeWittyUsername
19

Después de haber trabajado en un compilador de pago, creo que la razón principal para pagar un compilador es el contrato de soporte. Si el cliente tiene un problema con su código y sospecha que hay un error del compilador, puede pedirle al proveedor del compilador que investigue las posibles soluciones (en el centavo del proveedor, no en el suyo), posiblemente con una fecha límite para una respuesta / solución. Esto se puede hacer sin tener que publicar públicamente el código fuente para proyectos que pueden contener información confidencial, y generalmente el contrato obliga al vendedor a guardar secreto sobre cualquier código fuente compartido. En general, las empresas más grandes están dispuestas a pagar por este nivel de soporte, mientras que las tiendas más pequeñas no lo ven como valioso o simplemente demasiado caro.

Además, los proveedores quieren complacer a los clientes (que pagan mucho), por lo que las solicitudes de funciones tienen prioridad según los clientes que las deseen. También es posible que los clientes sugieran características más adaptadas a sus necesidades, cosas más específicas de la compañía que no serían ampliamente utilizadas. Esto no es posible para los usuarios de GCC u otros compiladores de código abierto donde las características se implementan por aquellos dispuestos a hacerlo en el orden que sientan en su propio horario.

Chemball masticable
fuente
77
"Esto no es posible para los usuarios de GCC u otros compiladores de código abierto donde las características se implementan por aquellos dispuestos a hacerlo en el orden que sientan en su propio horario". Pero, por otro lado, si el cliente desea la función lo suficiente, puede asignar a los desarrolladores que la implementen por su cuenta y luego pueden compartirla o no con otros. (Recuerde que la GPL se trata de distribución , no de uso ). Con el software propietario, deben convencer al proveedor para que implemente dicha función, así como conocer y describir con suficiente detalle para obtener realmente lo que desean.
un CVn
1
Si la compañía tiene desarrolladores con experiencia y familiaridad con los compiladores y la base de código específica, entonces sí, pero eso es un gasto adicional, probablemente más que comprar el compilador. Además, se sorprendería de lo vagas que pueden ser las solicitudes de funciones. Si un cliente está pagando, no se necesita mucho para convencer a una empresa de hacer algo, especialmente cuando paga mucho dinero. No discutiré ninguna de las partes, solo diré que algunos consideran que este nivel de apoyo vale la pena.
Chewy Gumball
1
Estoy de acuerdo en que un compilador de ninguna manera es una pieza de software trivial. Agregar una característica es ciertamente una tarea no trivial, especialmente para alguien que no está familiarizado con la base del código. Pero decir que "no es posible" tener características implementadas en un compilador de código abierto, pero es posible en un propietario es, en el mejor de los casos, un argumento defectuoso. Si la empresa no tiene la experiencia requerida internamente, puede contratar a un consultor para que lo haga por ellos. Con el software propietario, si el vendedor dice que no (independientemente de la razón), entonces no tiene suerte para todos los efectos.
un CVn
Dicho todo esto, voté a favor porque creo que responde bien a la pregunta.
un CVn
1
No creo que haya tratado realmente con el soporte de software "comercial". Es una experiencia completamente diferente de lo que usted describe.
James Anderson
1

A veces no es el compilador por el que la gente paga, es el tiempo de ejecución que funciona con él. Intel en particular tiene la tradición de proporcionar excelentes bibliotecas para cosas como subprocesamiento múltiple, soporte de medios (SSE, etc.) y matemática de precisión extendida.

TMN
fuente
Tienes razón, Polyverse vende distribuciones de Linux protegidas por la defensa del objetivo en movimiento. Con la compra de una de sus distribuciones, compra simultáneamente su compilador que aplica la defensa del objetivo móvil a todos los archivos binarios del sistema operativo.
T. Salim
0

He trabajado con algunas personas que usaron un compilador pagado.

Estaban haciendo un serio procesamiento de datos en un clúster. Supuestamente, el compilador Intel logró producir un código un poco más rápido para ellos, y pagar por el compilador fue más barato que ejecutar más nodos. Tengo entendido que la diferencia era muy pequeña, pero multiplicada por los costos de electricidad que se consideraron valió la pena.

En ese sentido, no me sorprendería si la mayoría de las supercomputadoras HPC se ejecutan en compiladores especializados proporcionados por los fabricantes de chips.

Señor Fox
fuente
-4

Estoy con Karl Bielefeldt en esto.

En realidad no confiaré en los compiladores que ofrecen capacidades multiplataforma. Porque, para ser sincero, todos sabemos que las herramientas / compiladores nativos y específicos siempre tienen ventajas como conocer mejor la plataforma de destino.

Y creo que, cuando su software se vuelve complejo y se necesita rendimiento, puede comenzar a pensar en cambiar a compiladores pagados.

Y además de eso, creo que los compiladores de Microsoft son bastante buenos. Y como todos los demás dijeron, son libres para siempre.

Semih Masat
fuente
2
¿Entonces no confías en GCC? ¿Qué pasa con los compiladores de Android e iOS?
-17

El compilador libre de GNU (gcc) viene con una licencia de GNU (GPL), lo que significa que solo puede usar para proyectos de código abierto. Soportado por grandes nombres en software.

Clang (gratis) es un intento de evitar las limitaciones de GPL creando un buen compilador. Además, es compatible con Apple, Google y muchos otros.

VC ++ Express (gratis) está limitado a la plataforma de Windows (por cierto, lo hicieron gratis en el último momento, porque muchas personas de la comunidad Open Source les preguntaron al respecto) y carece de la mayoría de las herramientas y características profesionales. Como el perfilador, por ejemplo.

Por lo tanto, todas estas herramientas son gratuitas para nosotros, pero cuentan con el respaldo de la industria.

Intel (comercial), como Karl mencionó, para proyectos que tienen como objetivo el mayor rendimiento en las plataformas Intel.

SChepurin
fuente
17
Mucha información errónea aquí. VC ++ Express es gratuito, aunque dudo que sea porque la comunidad de código abierto (¿quién?) Lo solicitó, pero eso no tiene nada que ver con el compilador de C ++, como @YannisRizos menciona en los comentarios anteriores. En segundo lugar, aunque GCC en sí mismo es GPL, puede usarse para compilar código que no sea GPL. Ver aquí stackoverflow.com/questions/9772616/…
Avner Shahar-Kashtan
Increíble, muchas personas (y yo estoy entre otras) pidieron que VC ++ 2012 para Desktop sea gratuito. No quiero hablar de GPL.
SChepurin
55
Sí, estoy seguro de que muchas personas les pidieron que lo liberen. Eso no significa que fuiste el detonante de esto. Fue una decisión de negocios. De hecho, estoy bastante seguro de que la reacción contra los precios originales de los paquetes VSExpress ($ 25, creo) fueron de aficionados y desarrolladores comerciales que querían algo para usar en casa, no necesarios desarrolladores de sistemas operativos, y ciertamente no como comunidad.
Avner Shahar-Kashtan