¿Por qué tanta gente elige C ++ como primera lengua?

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?).

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 ++.

La primera vez que supe de la programación, fue para concursos de programación de resolución de problemas. Esa vez usé a Pascal. La programación de resolución de problemas requiere una gran cantidad de algoritmos y la implementación de la estructura de datos. Un concurso de programación típico también requiere que sea rápido en la codificación (algo así como 4 problemas en aproximadamente 5 horas en la Olimpiada Internacional de Informática)

A medida que iba aprendiendo con Pascal como mi arma, descubrí que era una pérdida de tiempo codificar un algoritmo trivial como el ordenamiento rápido, la cola de prioridad con el montón, etc. Luego descubrí C ++ con su potente biblioteca de plantillas estándar que simplifica esas cosas. Algunos podrían argumentar que Java también tenía esas cosas. La razón por la que elijo C ++ sobre Java en este caso es porque los códigos típicos de C ++ se ejecutan más rápido que los códigos de Java, y en el concurso de programación de resolución de problemas, esta desventaja en Java puede llevar al “límite de tiempo excedido”.

¿Por qué a las personas eligen C ++ primero? Porque no saben nada mejor.

C ++ es un lenguaje grande, poderoso y de múltiples paradigmas que es la herramienta elegida para muchas tareas de programación. Debido a su utilidad, es común ver muchas vacantes de trabajo que lo requieren. Los novatos verán todas las ofertas de trabajo y asumirán que deben aprender C ++ para salir adelante. Así que, fuera de completa ingenuidad, saltan en la parte más profunda y comienzan con C ++.

Ahora, eso no significa que aprender C ++ no es algo bueno. Probablemente no obtendrás esos trabajos en C ++ sin C ++. Pero dada la complejidad de aprender a usar la herramienta correctamente, sugiero que es mejor comenzar con un lenguaje más simple y luego trabajar hacia arriba. No intente hacer una cirugía cerebral con un bisturí antes de aprender a esparcir mantequilla de maní con un cuchillo plástico para picnic.