Capacitación en diseño de pájaros Beida Jade: ¿Cuáles son las ventajas del lenguaje de programación Julia?
Hoy les presentaré brevemente un lenguaje de programación que tiene más ventajas que Python.
Matemáticas en Julia En general, las matemáticas en Julia tienen el mismo aspecto que las matemáticas en otros lenguajes de programación.
Sus números son todos "números reales". Por ejemplo, Float64 es un número de coma flotante de 64 bits o similar a "doble" en lenguaje C.
Vector{Float64} tiene el mismo diseño de memoria que la matriz doble del lenguaje C y puede interoperar fácilmente con el lenguaje C (de hecho, en cierto sentido, "Julia está construida sobre la capa del lenguaje C") , lo que resulta en un mayor rendimiento.
Estabilidad de tipos e introspección de código La estabilidad de tipos significa que un método sólo puede generar un tipo posible.
Por ejemplo: *(::Float64, :Float64) El tipo de salida es Float64.
No importa qué parámetros le des, devolverá un Float64.
Aquí se utiliza el envío múltiple: el operador "*" llama a diferentes métodos según el tipo que ve.
Por ejemplo, cuando ve un flotador, lo devolverá.
Julia proporciona una macro de introspección de código para ver en qué se ha compilado el código.
Entonces, Julia no es solo un lenguaje de secuencias de comandos ordinario, sino también un lenguaje de secuencias de comandos que le permite procesar ensamblador. Como muchos otros lenguajes, Julia se compila en LLVM (LLVM es un formato ensamblador portátil).
El envío múltiple permite que el lenguaje envíe llamadas a funciones con tipos estables.
Esta es la idea central de Julia. Ahora tomemos un tiempo para entenderlo.
Si la función es de tipo estable (es decir, cualquier llamada a función en la función también es de tipo estable), entonces el compilador conocerá el tipo de variable en cada paso y podrá optimizar completamente la función en la compilación. tiempo, para que obtengamos El código es básicamente el mismo que el del lenguaje C o Fortran.
Aquí puede entrar en juego el envío múltiple, lo que significa que "*" puede ser una función de tipo estable: tiene diferentes significados para diferentes entradas.
Sin embargo, si el compilador conoce los tipos de A y B antes de llamar a "*", entonces sabe qué método "*" usar, por lo que conoce el tipo de salida de c=a*b. él.
De esta manera, se puede transmitir información de tipo y lograr una optimización integral.
Prueba comparativa de Julia La prueba comparativa proporcionada por el sitio web oficial de Julia solo apunta a la velocidad de ejecución de los componentes del lenguaje de programación y no dice que pruebe una implementación rápida, por lo que hay un gran malentendido aquí.
Curso de Changsha ja/Siento que los programadores del lenguaje R miran la función de Fibonacci implementada en el lenguaje R y dicen: "Este es un código terrible. El lenguaje R no debería usar la recursividad porque la recursividad es muy lenta. "
Pero, de hecho, la función de Fibonacci se utiliza para probar la recursividad, no la velocidad de ejecución del lenguaje.