Encontré una pregunta de 2012 que tenía una muy buena discusión sobre Julia como una alternativa a R / Python para varios tipos de trabajo estadístico.
Aquí se encuentra la pregunta original de 2012 sobre la promesa de Julia
Desafortunadamente, Julia era muy nueva en ese entonces y los juegos de herramientas necesarios para el trabajo estadístico eran algo primitivos. Se estaban solucionando errores. Las distribuciones fueron difíciles de instalar. Etcétera.
Alguien hizo un comentario muy acertado sobre esa pregunta:
Dicho esto, pasarán 5 años antes de que esta pregunta pueda ser respondida en retrospectiva. En este momento, Julia carece de los siguientes aspectos críticos de un sistema de programación estadística que podría competir con R para los usuarios cotidianos:
Eso fue en 2012. Ahora que es 2015 y han pasado tres años, me preguntaba cómo la gente piensa que Julia lo ha hecho.
¿Existe una experiencia más rica con el lenguaje en sí y el ecosistema general de Julia? Amaría saber.
Específicamente:
- ¿Recomendaría a los nuevos usuarios de herramientas estadísticas aprender Julia sobre R?
- ¿En qué tipo de casos de uso de Estadísticas le recomendarías a alguien que use a Julia?
- Si R es lento en una tarea determinada, ¿tiene sentido cambiar a Julia o Python?
Nota: Publicado por primera vez el 14 de junio de 2015.
Respuestas:
Me he cambiado a Julia, y aquí están mis razones pragmáticas:
Dicho esto, todavía amo a Rstudio, pero el nuevo Juno en Atom es realmente agradable. Cuando ya no está en desarrollo pesado y es estable, puedo verlo mejor que Rstudio debido a la facilidad de los complementos (ejemplo: tiene un buen complemento para adaptarse a las pantallas hidpi). Así que creo que Julia es un buen idioma para aprender ahora. Me ha funcionado bien hasta ahora. YMMV.
fuente
Creo que "aprender X sobre Y" no es la forma correcta de formular la pregunta. De hecho, puede aprender (al menos lo básico) sobre ambos y decidir sobre la herramienta adecuada dependiendo de la tarea concreta que tenga entre manos. Y dado que Julia heredó la mayor parte de su sintaxis y conceptos de otros lenguajes, debería ser realmente fácil de entender (al igual que Python, aunque no estoy seguro de que se pueda decir lo mismo sobre R).
Entonces, ¿qué idioma es más adecuado para cada tarea? Según mi experiencia con estas herramientas, las clasificaría de la siguiente manera:
Para la investigación estadística pura que se puede hacer con REPL y un par de scripts, R parece ser la opción perfecta. Está específicamente diseñado para estadísticas, tiene el historial más largo de herramientas y probablemente el mayor conjunto de bibliotecas estadísticas.
Si desea integrar estadísticas (o, por ejemplo, aprendizaje automático) en el sistema de producción , Python parece una alternativa mucho mejor: como lenguaje de programación de propósito general, tiene una increíble pila web, enlaces a la mayoría de las API y bibliotecas literariamente para todo, desde desechar la web hasta crear juegos en 3D .
Los algoritmos de alto rendimiento son mucho más fáciles de escribir en Julia . Si solo necesita usar o combinar bibliotecas existentes como SciKit Learn o e1071 respaldado por C / C ++, estará bien con Python y R. Pero cuando se trata de un backend rápido, Julia se convierte en un verdadero ahorro de tiempo: es mucho más rápido que Python o R y no requiere conocimientos adicionales de C / C ++. Como ejemplo, Mocha.jl se reimplementa en el marco de aprendizaje profundo Julia Caffe , originalmente escrito en C ++ con un contenedor en Python.
Además, no olvide que algunas bibliotecas están disponibles solo en algunos idiomas. Por ejemplo, solo Python tiene un ecosistema maduro para la visión por computadora, algunos algoritmos de adaptación de formas y transformación se implementan solo en Julia y he oído hablar de algunos paquetes únicos para estadísticas en medicina en R.
fuente
Problemas dimensionales y computacionales intensivos.
Multiprocesamiento Las capacidades paralelas de nodo único de Julia (
@spawnat
) son mucho más convenientes que las de Python. Por ejemplo, en Python no puede usar un mapa para reducir el grupo de multiprocesamiento en el REPL y cada función que desea paralelizar requiere mucha repetitiva.Cluster de computación. El
ClusterManagers
paquete de Julia le permite usar un clúster de cómputo casi como lo haría con una sola máquina con varios núcleos. [He estado jugando para hacer que esto se sienta más como un script en ClusterUtils ]Memoria compartida. Los
SharedArray
objetos de Julia son superiores a los objetos de memoria compartida equivalentes en python.PyCall
módulo de Julia le da acceso al ecosistema de Python sin envoltorios, por ejemplo, lo uso parapylab
. Hay algo similar para R, pero no lo he probado. También existeccall
para las bibliotecas C / Fortran.GPU Las envolturas CUDA de Julia están mucho más desarrolladas que las de Python (las R eran casi inexistentes cuando las verifiqué). Sospecho que este seguirá siendo el caso debido a lo fácil que es llamar bibliotecas externas en Julia que en Python.
Ecosistema. El
Pkg
módulo usa github como backend. Creo que esto tendrá un gran impacto en la mantenibilidad a largo plazo de los módulos de Julia, ya que hace que sea mucho más sencillo ofrecer parches o que los propietarios pasen la responsabilidad.Escribir código rápido para problemas grandes dependerá cada vez más de la computación paralela. Python es inherentemente paralelo hostil (GIL), y el multiprocesamiento nativo en R es inexistente AFAIK. Julia no requiere que bajes a C para escribir código de rendimiento, mientras retiene gran parte de la sensación de python / R / Matlab.
La desventaja principal de que Julia proviene de python / R es la falta de documentación fuera de la funcionalidad principal. Python es muy maduro, y lo que no puedes encontrar en los documentos generalmente está en stackoverflow. El sistema de documentación de R es bastante bueno en comparación.
Sí, si se ajusta a los casos de uso en la parte (b). Si su caso de uso implica mucho trabajo heterogéneo
fuente