Quiero que me guste, pero …
Julia tiene un punto de venta PRINCIPAL , y es la especialización de tipo [matemática] ^ 1 [/ matemática]. Es el hijo del amor de la mecanografía dinámica y estricta. Significa rendimiento de código C y rendimiento de codificación Python. Significa que alguien finalmente hizo lo obvio …
Honestamente, no hay forma de que no puedas querer esto. Cada vez que mi IDE de Python me patea debido a errores de tipo inferidos, sé que también podría tener un rendimiento en C (en realidad, sé que no puede). Cada vez que escribo C ++ con su disfraz infantil de punk rock new age, sé que también podría tener la brevedad de Python.
Y Julia hace las dos cosas. Es conciso. Es rápido. Es nativo tanto de la máquina nativa como del código humano. No tengo idea de cómo alguien no podría querer eso.
Entonces, Julia es rápida. Me gusta, muy rápido. Y, erm, ¿mencioné que es rápido? Probablemente lo quieras porque es, ya sabes, rápido. Sí, claro, Julia, ese es el lenguaje que hace todo lo que lo hace rápido, ¿verdad? Y, erm … también … err … ¡mira, una supercomputadora! ¡Rápido!
Puede encontrar algunas buenas discusiones / publicaciones sobre esto, pero básicamente se reduce a: tiene una inmutabilidad de primera clase. Demasiado para los puntos fuertes …
Ahora, Julia, el idioma no es nada con lo que quisiera trabajar (a partir de julia 0.6). No como Go (no soy tan viejo / joven) o Perl (¡en serio, es Perl!) O Haskell (qué actitud, ¿verdad?), Pero siempre hay otro idioma que usaría en su lugar. Julia simplemente hace lo suficiente como para no ser un buen lenguaje en mi opinión (no exhaustivo):
- La sintaxis se siente como si intentara no ser como los lenguajes convencionales. Sinceramente, a veces no puedo decir cómo se unen las palabras clave y las expresiones.
- Hay un alias para, como, todo. Incluso las construcciones centrales como
for
tienen diferentes variantes. Hay toneladas de dialectos posibles que debes poder entender. Diviértete con grep
.
- Tener solo múltiples métodos de envío es un desastre con múltiples dominios problemáticos. Sí, el compilador puede desenredarlos, pero los espacios de nombres son una gran idea para los simples mortales.
- El sistema de tipos es rendimiento primero, segundo rápido, tercero rápido y enésimo uso. Sin herencia, sin propiedades [matemáticas] ^ {F1} [/ matemáticas], tres metaclases, … Definir tipos es la antítesis completa para usarlos.
- Para cada característica faltante / fea, hay una macro para arreglarlo. Es broma, probablemente hay una docena. Buena suerte escogiendo lo mejor.
Honestamente, estoy harto de los lenguajes modernos y geniales que en realidad son tiempos de ejecución modernos y geniales junto con una prosa mediocre en la parte superior.
[matemática] ^ 1 [/ matemática] Esa es una manera ingeniosa de decir que cada nombre tiene una plantilla y se completa a través de restricciones de tipo estático, inferencia de tipos y / o compilación JIT.
[matemática] ^ {F1} [/ matemática] Esto se admite en la última versión de Julia como getproperty(:type, :symbol)
(consulte La documentación del lenguaje Julia, gracias al usuario de Quora por señalarlo).
- Coincide con el uso en lenguajes como C # o Swift.
- No coincide con las propiedades de Python, lo que sería más parecido a
getproperty(self: property, instance: any, owner: type)
. En cambio, corresponde al __getattr__
de Python.