Parece que la mayoría de los idiomas tienen cierto número de bibliotecas informáticas científicas disponibles.
- Python tiene
Scipy
Rust
tieneSciRust
C++
tiene varios incluidosViennaCL
yArmadillo
Java
tieneJava Numerics
yColt
además de varios otros
Sin mencionar lenguajes como R
y Julia
diseñados explícitamente para la informática científica.
Con tantas opciones, ¿cómo elige el mejor idioma para una tarea? Además, ¿qué idiomas serán los más eficaces? Python
y R
parece tener la mayor tracción en el espacio, pero lógicamente un lenguaje compilado parece que sería una mejor opción. ¿Y algo superará alguna vez Fortran
? Además, los idiomas compilados tienden a tener aceleración de GPU, mientras que los idiomas interpretados tienen gusto R
y Python
no. ¿Qué debo tener en cuenta al elegir un idioma, y qué idiomas proporcionan el mejor equilibrio entre utilidad y rendimiento? ¿También hay idiomas con recursos informáticos científicos importantes que me haya perdido?
fuente
Respuestas:
Esta es una pregunta bastante masiva, por lo que no pretende ser una respuesta completa, pero con suerte esto puede ayudar a informar a la práctica general sobre la determinación de la mejor herramienta para el trabajo cuando se trata de ciencia de datos. En general, tengo una lista relativamente corta de calificaciones que busco cuando se trata de cualquier herramienta en este espacio. En ningún orden en particular son:
Julia
realmente brillan.python
se encuentra muy por delante de la mayoría de los otros idiomas.haskell
es un dolor notorio, yJulia
está lleno de muchos dolores arquitectónicos de código como resultado de ser un lenguaje tan joven.Hay una gran cantidad de artículos sobre rendimiento y escalabilidad, pero en general se verá un diferencial de rendimiento de aproximadamente 5-10x entre idiomas, que puede o no importar según su aplicación específica. En lo que respecta a la aceleración de GPU,
cudamat
es una forma realmente fluida de hacer que funcionepython
, y lacuda
biblioteca en general ha hecho que la aceleración de GPU sea mucho más accesible de lo que solía ser.Las dos métricas principales que uso tanto para la comunidad como para la flexibilidad son mirar el administrador de paquetes del idioma y las preguntas de idioma en un sitio como SO. Si hay una gran cantidad de preguntas y respuestas de alta calidad, es una buena señal de que la comunidad está activa. El número de paquetes y la actividad general en esos paquetes también pueden ser un buen indicador de esta métrica.
En cuanto a la facilidad de uso, creo firmemente que la única forma de saberlo es configurarlo usted mismo. Hay mucha superstición en torno a muchas herramientas de Data Science, específicamente cosas como bases de datos y arquitectura informática distribuida, pero no hay forma de saber realmente si algo es fácil o difícil de configurar e implementar sin solo construirlo usted mismo.
fuente
Scala
yGo
vale la pena mencionar.El mejor idioma depende de lo que quieras hacer. Primer comentario: no te limites a un idioma. Aprender un nuevo idioma siempre es algo bueno, pero en algún momento tendrás que elegir. Las instalaciones que ofrece el lenguaje en sí son algo obvio a tener en cuenta, pero en mi opinión lo siguiente es más importante:
Soy consciente de que la mayoría de mis puntos favorecen los idiomas establecidos. Esto es desde una perspectiva de "hacer las cosas".
Dicho esto, personalmente creo que es mucho mejor dominar un idioma de bajo nivel y un lenguaje de alto nivel:
fuente
Primero debe decidir qué quiere hacer, luego busque la herramienta adecuada para esa tarea.
Un enfoque muy general es usar R para las primeras versiones y ver si su enfoque es correcto. Le falta un poco de velocidad, pero tiene comandos muy potentes y bibliotecas de complementos, que puede probar casi cualquier cosa con él: http://www.r-project.org/
La segunda idea es que si desea comprender los algoritmos detrás de las bibliotecas, es posible que desee ver las Recetas numéricas. Están disponibles para diferentes idiomas y de uso gratuito para el aprendizaje. Si desea usarlos en productos comerciales, debe comprar una licencia: http://en.wikipedia.org/wiki/Numerical_Recipes
La mayoría de las veces el rendimiento no será el problema, sino encontrar los algoritmos y parámetros correctos para ellos, por lo que es importante contar con un lenguaje de script rápido en lugar de un programa monstruo que primero necesita compilar 10 minutos antes de calcular dos números y sacar el resultado.
Y una gran ventaja en el uso de R es que tiene funciones integradas o bibliotecas para casi cualquier tipo de diagrama que pueda necesitar para visualizar sus datos.
Si tiene una versión funcional, es casi fácil portarla a cualquier otro idioma que considere más eficiente.
fuente