¿Julia reemplazará a python por tecnologías de dimensiones de ciencia de datos cuántos bitcoins puedes explotar en un día?

Para aquellos de ustedes que no lo saben, julia es un lenguaje de programación de paradigma múltiple (totalmente imperativo, parcialmente funcional y parcialmente orientado a objetos) diseñado para computación científica y técnica (lectura numérica). Ofrece ganancias significativas de rendimiento sobre python (cuando se usa sin optimización y computación vectorizada usando cython y numpy). El tiempo de desarrollo se reduce en un factor de 2x en promedio. El rango de ganancias de rendimiento en el rango de 10x-30x sobre python (R es incluso más lento, por lo que no lo incluimos. R no se creó para la velocidad). Los informes de la industria en 2016 indicaron que julia era un lenguaje con un alto potencial y posiblemente la posibilidad de convertirse en la mejor opción para la ciencia de datos si recibía apoyo y adopción por parte de la comunidad. Bueno, dos años después, la versión 1.0 de julia salió a la venta en agosto de 2018 (versión 1.0), y cuenta con la defensa de la comunidad de programación y la adopción por parte de varias compañías (consulte https://www.Juliacomputing.Com) como el idioma preferido para muchos dominios, incluida la ciencia de datos.

Básicamente, julia es un lenguaje compilado, mientras que python y R se interpretan. Eso significa que el código julia se ejecuta directamente en el procesador como código ejecutable. Hay optimizaciones que se pueden hacer para la salida del compilador que no se puede hacer con un intérprete. Podría argumentar que python, que se implementa en C como el paquete de cython de bitcoin crash 2016, puede optimizarse a niveles de rendimiento similares a julia, también puede optimizarse si conoce bien el idioma. Pero la respuesta real a la pregunta sobre el rendimiento es que Julia le ofrece una velocidad similar a la de C sin optimización y técnicas de creación de perfiles hechas a mano. Si dicho rendimiento está disponible sin optimización en primer lugar, ¿por qué elegir Python? Juia bien podría ser la solución a todos tus problemas de rendimiento.

Dicho esto, Julia aún es una adolescente en lo que respecta a la madurez del crecimiento y el desarrollo como lenguaje de programación. Ciertas operaciones como I / O hacen que el rendimiento disminuya bastante si no se administra adecuadamente. Por experiencia, sugiero que si planea implementar proyectos en julia, opte por las libretas jupyter que ejecutan julia 1.0 como núcleo. El IDE de juno en el editor atom es el entorno recomendado, pero la falta de un depurador es un inconveniente masivo si desea utilizar el código julia en producción en un entorno similar a un estudio visual. Jupyter le permite desarrollar su código una característica a la vez, y acceder fácilmente a cualquier variable y valores de matriz que necesite “observar”. El ecosistema julia tiene una comunidad entusiasta y amplia que lo está desarrollando, pero como la actualización a 1.0 fue hace menos de seis meses, no todos los paquetes en julia desde la versión 0.7 se han migrado completamente, por lo que podría encontrar el problema de versiones de paquetes impares. Al instalar los paquetes necesarios para su proyecto.

Esto está directamente relacionado con el rendimiento. El soporte de GPU se maneja de forma transparente mediante algunos paquetes como tensorflow.Jl y mxnet.Jl. Para los desarrolladores en 2018 que ya utilizan gpus extremadamente potentes para varias aplicaciones con CUDA o minería de criptomoneda (solo para tomar dos ejemplos comunes), esta es una gran ventaja, y los aumentos de rendimiento pueden ir de 100x a 1000x para ciertas operaciones y configuraciones. Si desea cierta capacidad de GPU específica, julia le ofrece acceso a los mejores sitios de compra de bitcoins con bibliotecas como cublas.Jl y cudnn.Jl para proveedores específicos y cudanative.Jl para programación y soporte de GPU hechos a mano. La programación CUDA de bajo nivel también es posible en julia con cudadrv.Jl y la biblioteca de tiempo de ejecución cudart.Jl. Claramente, julia ha evolucionado mucho más allá del soporte y las capacidades estándar de GPU. E incluso mientras lees este artículo, una comunidad activa está trabajando para extender y perfeccionar el soporte de GPU para julia.

Julia es notablemente fácil de aprender y agradable de usar. Si eres un programa de python, te sentirás como en casa usando julia. En julio, todo es una expresión y hay un soporte de programación funcional básico. Las funciones de orden superior son compatibles con la asignación simple (=) y el operador de función -> (lambda en python, => Cía#). El soporte de matriz multidimensional es excelente: las funciones para los paquetes BLAS y LINPACK se incluyen en el paquete linearalgebra de la biblioteca estándar. Las filas se separan con el delimitador de coma (,) y las columnas con el punto y coma (;) durante la inicialización. La transposición de matrices, el adjunto, la factorización, la división de matrices, la identidad, la segmentación, la resolución de sistemas de ecuaciones lineales, la triangulación y muchas más funcionalidades están a solo una función. Incluso está disponible el soporte de matriz multidimensional irregular. Falta, nada, cualquier, todo, isdef, istype, oftype, hash, base como clase principal para cada objeto julia, isequal e incluso undef (para representar valores sin inicializar) son solo algunas de las muchas palabras clave y funciones disponibles para aumentar La legibilidad de su código. Otras características notables incluyen soporte incorporado para aritmética de precisión arbitraria, números complejos, diccionarios, conjuntos, cadenas de bits, bitarrays y tuberías. Acabo de arañar la superficie aquí. La amplia funcionalidad incorporada es una de las mejores características de julia, con muchos módulos más fácilmente disponibles y bien documentados.

Esta es una característica central del lenguaje de programación julia. El envío múltiple o la funcionalidad de método múltiple básicamente significa que las funciones pueden llamarse dinámicamente en tiempo de ejecución para comportarse de diferentes maneras dependiendo de algo más que los argumentos pasados ​​(lo que se denomina sobrecarga de funciones) y, en cambio, pueden variar sobre los objetos que se le pasan dinámicamente En tiempo de ejecución en vivo el precio de bitcoin. Este concepto está fundamentalmente vinculado a los patrones de diseño de plantillas y plantillas en la terminología orientada a objetos. Podemos variar el comportamiento del programa dependiendo de cualquier atributo, así como del objeto que llama y los objetos que se pasan a la función en tiempo de ejecución. Esta es una de las características principales de julia como lenguaje. Es posible pasar cualquier objeto a una función y, por lo tanto, variar dinámicamente su comportamiento dependiendo de cualquier variación mínima en su implementación, y en muchos casos, la biblioteca estándar se basa en este concepto. Algunas estadísticas de investigación indican que el promedio de líneas del código de placa de caldera requerido en un sistema complejo se reduce en un factor de tres o más (!) Por esta opción de diseño de idioma. Esto simplifica el desarrollo en sistemas de software altamente complejos de forma considerable y limpia, sin ningún comportamiento impredecible o errático. Por lo tanto, no es de extrañar que Julia esté recibiendo la plantilla de bitcoin, la aclamación ahora que merece.

Julia admite la computación paralela y distribuida utilizando múltiples topologías de forma transparente. Hay soporte para las rutinas, como en el lenguaje de programación go, que son funciones de ayuda que operan en paralelo en arquitecturas multinúcleo. Existe un amplio soporte para subprocesos y las primitivas de sincronización han sido cuidadosamente diseñadas para maximizar el rendimiento y minimizar el riesgo de condiciones de carrera. A través de simples macros de texto y decoradores / anotaciones como @parallel, cualquier programador puede escribir código que se ejecute en paralelo. El soporte de OpenMP también está presente para ejecutar código paralelo con directivas de compilación y macros. Desde el principio de su existencia, julia fue un lenguaje diseñado para soportar computación de alto rendimiento con múltiples procesos de trabajo ejecutándose simultáneamente. Y esto hace que sea mucho más fácil de usar para la computación paralela que (por ejemplo) python, que siempre ha tenido el GIL (bloqueo de intérprete global para subprocesos) como un grave problema de rendimiento.

Julia puede llamar a código C, go, java, MATLAB, R y python usando funciones de envoltura nativas; de hecho, todos los lenguajes de programación comúnmente usados ​​hoy en día tienen compatibilidad de interoperabilidad con julia. Esto hace que trabajar con otros idiomas sea infinitamente más fácil. La única diferencia importante es que en julia, los índices de matrices comienzan en 1 (como R), mientras que en muchos otros idiomas comienzan en 0 (C, C ++, java, python, C # y muchos más). El soporte de interoperabilidad hace que la vida como desarrollador de julia sea mucho más simple y más fácil que si estuviera trabajando en Python o C ++ / java. En el mundo real, llamar a otras bibliotecas y paquetes es parte de la rutina diaria del científico de datos, parte de la rutina diaria de un desarrollador. Los paquetes de código abierto son una ventaja aquí ya que pueden modificarse según sea necesario para su dominio de problema. La interoperabilidad con los principales lenguajes de programación es uno de los puntos de venta más fuertes de julia.

Julia aún se está desarrollando a pesar de la versión 1.0. El rendimiento, el gran punto de venta, se ve afectado gravemente por el uso de variables globales y la primera ejecución de un programa siempre es lenta, en comparación con la ejecución posterior a la primera. Los desarrolladores principales del lenguaje julia deben trabajar en su sistema de administración de paquetes, y de manera crítica, la migración de todos los mejores lugares de terceros para comprar bibliotecas de bitcoins del Reino Unido a la versión 1.0. Dado que esto es algo que ocurrirá con el tiempo con la participación activa de la comunidad (algo así como la migración de Python 2.7 a 3.6, pero con mucha menos dificultad), este es un problema que se resolverá solo a medida que pase el tiempo. Además, debe haber más coherencia en el lenguaje para el rendimiento en dispositivos más antiguos. Los sistemas heredados sin calidad gpus podrían encontrar dificultades en la ejecución de julia con solo el poder de procesamiento de la CPU. (No se requieren gpus, pero son muy recomendables para ejecutar julia y para que el desarrollador sea óptimamente productivo, especialmente para bibliotecas de aprendizaje profundo como knet (biblioteca de julia para redes neuronales y aprendizaje profundo)). La inclusión de soporte para Unicode 11.0 puede ser una sorpresa para aquellos que no están acostumbrados a él, y la manipulación de cadenas puede ser un dolor de cabeza. Debido a que julia necesita madurar un poco más como idioma, también debe asegurarse de usar un generador de perfiles para identificar y manejar los posibles cuellos de botella en el rendimiento de su código. Conclusión

Por lo tanto, podría hacerse una pregunta: si es una empresa que dirige cursos en R y python, ¿por qué publicar un artículo que abogue por otro idioma para la ciencia de datos? Sencillo. Si eres nuevo en la ciencia y la programación de datos, aprender Python y R es la mejor manera de comenzar tu exploración en la industria actual de inmediato (es como aprender C antes que C ++). Y python y R no irán a ninguna parte pronto. Dado que existe tanto una base de código masiva como una tonelada de marcos existentes y código de producción que ejecuta paysafecard a bitcoin en python y en un nivel menor, en R, la demanda de científicos de datos que tienen experiencia en python se extenderá hacia el futuro. Así que sí, vale la pena dedicar tiempo a aprender python y R. Además, julia aún no se ha adoptado en toda la industria (aunque hay muchos evangelistas de julia que lo promueven activamente – e.G. Consulte www.Stochasticlifestyle.Com). Durante al menos diez años más, espere que Python sea el jugador principal en lo que se refiere a la ciencia de datos.

Además, los lenguajes de programación nunca se extinguen por completo. COBOL fue diseñado por un comité dirigido por Grace Hopper en 1959 y sigue siendo el lenguaje de referencia para la programación de mainframe cincuenta años después. Teniendo en cuenta eso, espere que el pitón y la R de uso ubicuo sean fuerzas del mercado durante al menos dos décadas más. Incluso si más del 70% de la comunidad de ciencia de datos se convirtió en julia como la primera opción para la ciencia de datos, el código base existente en python y R no desaparecerá en el corto plazo. Julia también requiere más madurez como lenguaje (como ya se mencionó); algunas funciones se ejecutan más lentamente que python, donde la implementación no ha sido óptima y bien probada, especialmente en dispositivos más antiguos. Por lo tanto, la madurez de julia como lenguaje de programación aún podría estar a uno o dos años de distancia. Entonces, al leer este artículo, comprenda que python y R son habilidades muy necesarias para convertirse en científicos de datos profesionales en este momento. Pero, explora julia un poco en tu tiempo libre. ¡Todo lo mejor!

banner