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:
- Rendimiento : Básicamente se reduce a la rapidez con que el lenguaje multiplica la matriz, ya que esa es más o menos la tarea más importante en la ciencia de datos.
- Escalabilidad : al menos para mí personalmente, esto se reduce a la facilidad de construir un sistema distribuido. Aquí es donde los idiomas
Julia
realmente brillan.
- Comunidad : con cualquier idioma, realmente estás buscando una comunidad activa que pueda ayudarte cuando te quedes atrapado usando cualquier herramienta que estés usando. Aquí es donde
python
se encuentra muy por delante de la mayoría de los otros idiomas.
- Flexibilidad : nada es peor que estar limitado por el idioma que usa. No sucede con mucha frecuencia, pero tratar de representar estructuras gráficas
haskell
es un dolor notorio, y Julia
está lleno de muchos dolores arquitectónicos de código como resultado de ser un lenguaje tan joven.
- Facilidad de uso : si desea usar algo en un entorno más grande, debe asegurarse de que la configuración sea sencilla y se pueda automatizar. Nada es peor que tener que configurar una compilación delicada en media docena de máquinas.
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 funcione python
, y la cuda
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.