1 votos

Cuando la gente dice que C++ es demasiado complicado, ¿también lo es su aplicación en las finanzas Quant?

Los programadores suelen criticar a C++, calificándolo de lenguaje excesivamente complicado y moribundo.

No me importa si esto es cierto o no. Mi pregunta es, considerando el argumento que apoya esta afirmación ¿se aplica ese argumento también a la forma en que un quant utiliza C++, y no algunos desarrolladores generales en la industria de la ingeniería de software habitual?

En otras palabras, ¿es C++ un lenguaje complicado si sólo se desea utilizarlo para fines de finanzas cuantitativas? ¿Y está muriendo C++ dentro de la industria de la Cuántica (y si es así, a cambio de qué)?

Nótese que las palabras utilizadas aquí son obviamente exageradas. "Excesivamente complicado" es una valoración sesgada, y "moribundo" es una hipérbole. Por lo tanto, no te atasques con esos detalles y proporciona una respuesta fácil como "la respuesta de herpderp es claramente no". Sé NUANTO.

2voto

user1011471 Puntos 133

Tal vez esta afirmación se basa en la observación de que hay opciones más amigables por ahí, siendo Python una de ellas. Quiero hacer dos observaciones sobre esta afirmación:

  1. "amigable" aquí es una palabra muy vaga. Si has utilizado C++ en el pasado y ya estás familiarizado con su potencia, también podrías afirmar que Python es "demasiado complicado". Creo que hay muchas ventajas de usar C++ sobre Python en algunos casos, Por ejemplo el uso de MPI (Message Passing Interface) y el nivel de eficiencia que se puede alcanzar con él es sorprendente.

  2. Utilizo intencionadamente Python porque también es orientado a objetos . Esto demuestra que si C++ está "muriendo" no es porque este paradigma de programación en particular esté siendo reemplazado por alguna nueva técnica novedosa. En mi opinión, Python está tomando el relevo sólo porque es más rápido para desarrollar y enviar productos. Sin embargo, muchas bibliotecas utilizadas por Python están implementadas en C/C++

2voto

YviDe Puntos 18

Para hacer una analogía poco precisa, C++ es a Python lo que un violín es a una guitarra. La guitarra es más accesible para el principiante, mientras que el violín permite al experto un control tremendo.

La elección del lenguaje de programación implica un compromiso. Algunas son:

  1. Velocidad de ejecución del código
  2. Velocidad de escritura del código
  3. Facilidad de uso (es decir, años de experiencia en el desarrollo de software para no apestar)

Como esta respuesta ¡describe, C++ permite altos niveles de abstracción de la programación (para la productividad) pero sin penalizaciones de rendimiento! En cierto sentido, C++ prioriza (1), (2) y luego (3). Varias bibliotecas (p. ej. quantlib ) donde el rendimiento es importante están escritos en C++. Actualizaciones de la norma C++ han añadido varias características para modernizarlo.

Por otro lado, (2) y (3) en la práctica son quizás más importantes que (1) la velocidad para muchos, si no la mayoría, de los propósitos. Python ha crecido enormemente En parte, por su accesibilidad a los profesionales que no han estudiado informática. En Python con numpy y pandas En este caso, se llama a las bibliotecas escritas en C, C++ u otros lenguajes compilados para los componentes críticos de velocidad, mientras que se utiliza el lenguaje interpretado de Python para todo lo demás. (Nota: Numpy, de hecho, utiliza LAPACK escrito en Fortran).

Ejemplo: Los punteros son una gran diferencia en C, C++ frente a Java, etc.

Para codificar bien en C y C++, es necesario perfectamente entender cómo punteros trabajar; debes entender la distinción entre un objeto y la dirección de memoria de un objeto.

En C++, es necesario pensar explícitamente en la gestión de la memoria para no fastidiar, mientras que se puede sobrevivir en algunos lenguajes de alto nivel como Python y Java simplemente ignorando o agitando la mano. ¿Pandas me dio una copia o una vista de un marco de datos? Uno puede producir código útil sin entender todos los matices mientras que en C++, probablemente estarías muerto.

¿Un paradigma común?

  • Utilizar un lenguaje como Python o Java para los componentes no críticos para la velocidad
  • Escribir bibliotecas y componentes importantes y sensibles a la velocidad en C++

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X