¿Qué impide que Node supere a Python para la ciencia de datos?

Como sugirieron otras respuestas, la comunidad Node aún no ha proporcionado una línea de base bien conocida para la ciencia de datos. Sin embargo; También hay algunas limitaciones técnicas.

Node todavía está sujeto a limitaciones del motor de JavaScript subyacente, que a partir de este escrito, sigue siendo solo V8. Hay algunos límites de memoria física (creo que son 32 GB) que no se pueden exceder sin escribir un sistema más complejo. Para muchos conjuntos de datos, este no es un problema importante, pero si realmente se trata de grandes datos o requiere una gran cantidad de almacenamiento temporal para algoritmos de varios pasos, esa RAM se puede comer muy rápido. Por ahora, esto requiere producir su propio sistema de procesamiento paralelo, que generalmente no es el foco principal de la ciencia de datos. Simplemente actúa como una barrera innecesaria (en comparación con otras soluciones).

ES 2017 y más allá colocó algo en la especificación llamada “Memoria compartida”, que es básicamente multihilo para JavaScript. Probablemente no aterrizará en JS Engines hasta 2018/2019, pero eliminará una de las principales barreras para tratar con grandes datos en JavaScript. Una vez que se proporciona un marco / plataforma simplificado para esto, puede hacer que Node sea una herramienta más lucrativa para la ciencia de datos.

Existen dos obstáculos principales que impiden que Node.js y, en general, JavaScript logren una mayor participación mental en las comunidades de ciencia de datos y computación numérica.

El primer obstáculo es la comunidad. Si bien la comunidad de JavaScript es enorme, el subconjunto de personas dentro de esa comunidad que hacen cosas interesantes en computación numérica es pequeño. Por lo tanto, si desea hacer computación numérica en JavaScript y Node.js, encontrar recursos para ayudarlo en el camino puede ser difícil y puede parecer un esfuerzo solitario.

Luego, la ausencia de bibliotecas comparables (pollo y huevo: se necesitan bibliotecas para atraer a los autores de la biblioteca y se necesitan autores para escribir buenas bibliotecas). No hay razones técnicas por las cuales las bibliotecas no se pueden escribir en JavaScript o aprovechar Node.js (por ejemplo, a través de complementos nativos). Lo sé, ya que he escrito muchas bibliotecas de computación numérica en JavaScript. Entonces, si bien la computación numérica es posible en JavaScript, el problema se debe a la incapacidad de atraer a los desarrolladores que tienen la experiencia suficiente y son capaces de dedicar el tiempo y el esfuerzo necesarios para escribir implementaciones de computación numérica de alta calidad.

Mi creencia personal es que alguna forma de computación numérica es inevitable en JavaScript y Node.js. Las ventajas (ubicuidad, distribución, rendimiento) y las aplicaciones potenciales (computación de borde, integración del aprendizaje automático, visualización de datos) son demasiado fuertes de las fuerzas evolutivas para no admitir aplicaciones de ciencia de datos, al menos a un nivel básico.

Divulgación : Yo y otros estamos trabajando actualmente en un proyecto que tiene como objetivo proporcionar instalaciones de computación numérica en JavaScript y Node.js.

Lo que hay que tener en cuenta es que estas personas son científicos, no programadores. No quieren pasar por la molestia de aprender un idioma completamente nuevo, cuando están perfectamente bien con Python, a menos que haya un beneficio muy tangible al hacerlo. Nodo probablemente nunca proporcionará eso. Probablemente tampoco otro idioma, al menos idiomas que no están desarrollados específicamente para científicos.

Además de los problemas de infraestructura mencionados en otras respuestas, sospecho que muchos usuarios orientados a las matemáticas y la ciencia evitarán algunas características del lenguaje JS. Muy … generoso … el alcance y la coerción de tipo silencioso son aún más inquietantes para una aplicación de computación científica que para los usuarios comunes y, a diferencia del mundo más flexible del desarrollo web, no confieren ventajas en este contexto.