Voy a abordar esta pregunta desde la perspectiva de un científico aplicado.
tl; dr: Físicos y matemáticos aplicados parecen preferir C ++ porque proporciona la velocidad, escalabilidad y sofisticación que ningún otro lenguaje en la década de 1980 (o quizás incluso hoy) tenía.
Básicamente, creo que muchos físicos dieron el salto de FORTRAN 77 y otros idiomas en la década de 1980 y aún tienen que encontrar otro idioma que mejore significativamente la velocidad, el Álgebra Lineal (es decir, todos todavía usan LAPACK de una forma u otra) y la escalabilidad. Entiendo que muchas otras aplicaciones de programación pueden tener que asignar manualmente la memoria y realizar una recolección de basura como una tarea pesada y que requiere mucho tiempo; sin embargo, en el análisis numérico y la computación de alto rendimiento, uno realmente necesita un control total de cómo el programa interactúa con el hardware para obtener otro cálculo integral o valor propio. Lo que uno gana en facilidad de uso de otros lenguajes como Python, Java y Scala puede traducirse en un gran éxito de rendimiento (numérico). Por ejemplo, uno de los otros internos en un acelerador de partículas en el que trabajé decidió que escribiría un código en Java que manejaría pequeños scripts en C ++ que realizarían cálculos físicos semi-clásicos (por ejemplo, resolviendo las ecuaciones de Hamilton [ODE]). A pesar de que Java solo estaba haciendo el trabajo administrativo, el mayor cuello de botella en su flujo de trabajo fue el script Java que escribió . En lugar de tomar aproximadamente una hora para analizar el terabyte de datos de colisión, como lo hizo su último script en C ++, su programa tomó doce horas. Tal vez esto fue una casualidad, pero en base a mis interacciones con muchos físicos aplicados y matemáticos aplicados, he encontrado que el rendimiento de C ++ parece ser inigualable. Muchas de las personas con las que he trabajado han usado MATLAB o Mathematica para probar cálculos a pequeña escala, luego escalan encontrando una forma de realizar el cálculo en C ++.
Ahora, ¿por qué C ++ sobre FORTRAN y otros competidores? Entre los físicos y los matemáticos aplicados, creo que C ++ es bastante popular porque, francamente, contiene todo lo que FORTRAN no tenía. Si bien C ++ puede no ser tan fácil de usar como los lenguajes de hoy, tiene una sintaxis relativamente fácil de usar y es fácil para alguien que sabe C o incluso algunos scripts de shell básicos para aprender C ++ (a diferencia de FORTRAN). Además, mientras que la mayoría de los códigos de física y matemática aplicados intentan realizar una tarea ardua y única, uno requiere alguna organización básica; como tal, C no era adecuado debido a su falta de verdadera orientación al objeto. Una cosa a tener en cuenta: FORTRAN todavía se usa mucho porque es un poco más rápido que C ++. Sin embargo, sigue siendo un poco torpe y tiene una curva de aprendizaje más pronunciada (FORTRAN i / o, ¿alguien?).
- ¿Es difícil aprender a jugar un MPC?
- ¿Qué cosas creativas se pueden ejecutar durante un período de 30 días?
- ¿Cuál es / fue tu estrategia para aprender en una clase universitaria?
- Adobe InDesign: ¿cuál es la mejor manera de aprender a usar Adobe InDesign y / o Photoshop? Estoy cambiando mis materiales de marketing de Publisher a InDesign, y contrataré a alguien para crear las plantillas básicas, pero necesito tener un conocimiento práctico de InDesign.
- ¿Cuáles son algunos consejos para sacar el máximo provecho de Quora?
El testimonio final del amor del físico por C ++ es ROOT (http://root.cern.ch/drupal/) que la colaboración de Atlas en el CERN utiliza para intercambiar terabytes de datos. Visite el sitio web y obtendrá una idea del amor de los científicos por C ++.