¿Cuál es su opinión sobre el lenguaje de programación Julia?

Julia es un lenguaje de nicho para la informática científica y numérica.

Actualmente tiene ~ 7,000 estrellas en Github y el doble del número de confirmadores que los idiomas populares como Scala .

La gente ha comenzado a prestar atención, especialmente a la comunidad científica. Los científicos de datos también comenzaron a jugar con él. IntelLabs lanzó recientemente un motor de procesamiento basado en Julia, HPAT.jl que “es mucho más rápido” que Apache Spark.

Su capacidad para funcionar bien con otros idiomas ha demostrado ser una característica muy importante.

Parece que Julia eventualmente debería ganar en mi opinión. Tiene muchas ventajas, aunque todavía es demasiado joven. Creo que los científicos, centros de investigación, matemáticos, físicos y cualquier persona que esté haciendo cálculos científicos se trasladarán a Julia en 2–4 años.

Tiene un futuro muy brillante por delante.

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.

Todavía es una especie de nicho, pero es realmente bueno como plataforma para escribir y usar paquetes numéricos científicos. La mayoría de los lenguajes utilizados para esa tarea solo son buenos para usarlos (Python, R, Matlab, etc.) pero son terribles para escribirlos, o están bien para escribirlos (C ++) pero no son muy ergonómicos para usarlos.

Julia tiene la ventaja de ser increíblemente expresiva para escribir paquetes numéricos rápidos, y al menos tan buena como cualquier otro lenguaje de script para usarlos. Mientras mantenga una comunidad decentemente grande durante el tiempo suficiente, eventualmente tendrá un ecosistema más grande de paquetes de calidad simplemente porque escribirlos en Julia y exponer una buena interfaz a los usuarios es mucho más fácil. Ya tiene los mejores paquetes de su clase para algunos dominios específicos, y la situación probablemente seguirá mejorando a medida que llegue a su versión 1.0.

También obtiene una mayor capacidad de compilación entre paquetes y es más fácil escribir paquetes que dependen de otros paquetes (por ejemplo, un paquete de ecuaciones diferenciales puede usar tipos flotantes personalizados de alta precisión de otro paquete sin ningún cambio en su código siempre que se implementen todos los métodos requeridos).

La versión simple: Julia, en mi opinión, está diseñada principalmente como un lenguaje por científicos informáticos que en realidad tiene el potencial de servir tanto a desarrolladores como a principiantes.

Si eso suena mal, entonces permítanme calificarlo: los diseñadores tienen bastante claro con su etiqueta sub 1.0 de la versión que todavía no está lista, y eso está bien para mí. No lo uso porque, al menos para mí, no me siento cómodo con la estabilidad de los entornos de desarrollo que he probado, pero está bien.

Lo que Julia parece estar buscando es “Python hecho bien”, en el sentido de que existe un entorno de evaluación que es cómodo para los principiantes, pero también que los usuarios más avanzados no tienen que usar C para obtener rendimiento. Personalmente, no creo que esté allí todavía, sin duda basado más en mis experiencias de hace más de doce meses, pero realmente puedo verlo como el idioma principal de instrucción en la academia dentro de unos cinco años en algunos lugares que marcan tendencia .

En otras palabras, a medida que avanza hacia 1.0 parece estar evitando los errores tradicionales, como las guerras terrestres en Asia. Claramente, no tendrá fallas después de 1.0, perdóneme mi doble negativa, pero será fuerte tanto para la enseñanza, la informática y el desarrollo real. ¿Ambos? ¿Fidelidad? Diablos, si puedo tener negativos dobles también puedo tener ambos ternarios. ¡Y así es exactamente como trabaja Julia! Puede tener tres opciones para una función determinada y tener un poco de magia para ayudarlo a usted y al compilador a decidir cuál usar.

Sí, Julia parece un lenguaje increíble. Desde la perspectiva del lenguaje, tiene mucho en común con R, ya que es principalmente un paradigma funcional y el uso de funciones genéricas estilo OO. Pero obviamente se ha implementado con un enfoque mucho mayor en el rendimiento. Todavía es muy joven, pero creo que veremos grandes cosas de él.

Sin embargo, como con Python, dudo mucho que Julia reemplace a R para muchas personas. Espero ver algo como RJulia (análogo a RCpp) donde podría implementar algoritmos de aprendizaje automático de alto rendimiento en Julia, y luego exponerlos fácilmente a los usuarios de R.

Trabajé con él todo el verano del año pasado en un laboratorio nacional. Llegué a hacer 0.5.2 y para cuando me fui, estábamos en 0.6.1, así que sí … está activo, pero la compatibilidad con versiones anteriores es bastante buena.

Tenía mucha experiencia en python, por lo que Julia fue fácil de aprender y obtener los scripts básicos que necesitaba ejecutar.

Pero más tarde, probé lo que era posible cuando empiezas a pensar más como un informático. Con la ayuda de mi mentor, en una tarde obtuvimos mejoras de velocidad 4X al ser más explícitos con los tipos para que el compilador JIT no tuviera que hacer su conjetura (increíblemente inteligente).

Entonces me di cuenta: este es el futuro.

No sé cuánto tiempo pasará antes de que reemplace a Python (o si lo hará … tal vez solo permanezca en el ámbito académico), pero, ¡el potencial está ahí!

Es rápido, limpio y funciona como su propio administrador de paquetes. Se interconecta con otros idiomas / paquetes muy bien. No está empantanado por una gran cantidad de opciones de GUI / IDE que ofuscan el verdadero proceso de aprender un idioma para nuevos usuarios.

No puedo decirte cuánto tiempo perdí aprendiendo Python viniendo de Matlab. Pensé que los IDEs eran cómo obtuviste el idioma en tu computadora … Solo cuando los eliminé aprendí que todo es solo un montón de archivos de texto.

Julia vive en una carpeta. Maneja todo por allí. Ver eso realmente me enseñó mucho sobre programación en general.

Cuando recogí a Conda nuevamente después, me di cuenta de lo que era (espera … ¿No necesito volver a descargar Anaconda cada vez que quiero una versión diferente?), Y comencé a usarla correctamente.

El potencial de aprendizaje que Julia ofrece en el nivel de facilidad de uso es increíble. No puedo esperar a la versión principal 1.0. Luego les diré a todos los que conozco que lo tomen como primer idioma en lugar de Python.

Creo que en unos años comenzará a difundirse desde los Laboratorios Nacionales hasta las Universidades. Personalmente no podría estar más emocionado. Me queda mucho por aprender, sin duda, pero estoy enganchado. Solo ser paciente por el momento.

Buenas respuestas aquí ya. Mis dos centavos se basan en mi experiencia personal reciente con Julia (subí a bordo con 0.6). Ejecuté algunas simulaciones numéricas muy grandes en Julia después de recibir algunos golpes duros con R / Rcpp. No solo el tiempo de ejecución del código era comparable con la versión Rcpp, sino que también me dio dolores de cabeza mucho menores al leer mi propio trabajo. Como programador aficionado, entender mi propia base de código es realmente importante ya que normalmente trabajo en el mismo código durante un largo período de tiempo con varios descansos en el medio. Esta es la razón por la cual tidyverse es una parte crucial de mi flujo de trabajo de análisis de datos.

Lo que realmente me gustó de Julia es que realmente podría ir directamente a la fuente en caso de duda y volver a comprender la lógica central de un vistazo. Encuentro esto tremendamente estimulante, especialmente porque no poseo las habilidades o la capacitación de un desarrollador de paquetes. Mirar el código fuente de los paquetes que uso regularmente y comprender realmente los bits difíciles que no escribí es realmente satisfactorio. Siento que esto es un resultado de no tener que lidiar con el ‘problema de dos idiomas’.

Sí, por el momento, Julia es un club un poco “exclusivo para expertos”. Para los compañeros programadores aficionados que quieren probar a Julia (¡nadie te obliga a hacerlo, todavía no!), Tengo el siguiente consejo. Si puede ser un poco paciente, ingrese al club y lea mucho sobre Julia. Espere en las alas e intente mirar los profundos debates divisivos. Las animadoras tienen mucho coraje y su corazón está en el lugar correcto. Una vez que comprenda algo razonablemente bien, contribuya con un tutorial o dos (mi experiencia muestra que gana más de lo que cree que ganaría).

¿Creo que tendrá un gran futuro, posiblemente? ¿Creo que se convertirá en un favorito para los idiomas necesarios para aprender, no realmente? Funciona como el hijo súper inteligente de Python y Ruby; su sintaxis es similar a ambos idiomas, pero su uso de funciones de “despacho múltiple” y soporte unicode lo hacen realmente amigable para los humanos. Su potencial está en la física y las matemáticas, ya que también se basa en MatLab y hace que sea más fácil visualizar las funciones que está ingresando como algo que escribiría en papel en lugar de ajustarse a las reglas de C para ingresar declaraciones matemáticas.

# Por ejemplo, en lugar de poner
f (x) = 2 * x ** 2 + 3 * x – 4
# Podrías poner
f (x) = 2x ^ 2 + 3x – 4

Entonces, es genial si te gusta el álgebra lineal, la física, básicamente cualquier cosa que requiera matemáticas de alto nivel, pero en cuanto a proporcionar funcionalidades como Python o una amplia usabilidad como Ruby, no tanto.

Recogí a Julia hace un tiempo, como dos años, y luego intenté hacer algo serio y volví a dejarlo.

EDITAR: Alguien se molestó tanto por mi respuesta que está empezando a enviarme sugerencias de edición, ya que inhabilité los comentarios. Multa. Mi respuesta es objetivamente inexacta. Ahora lo editaré para que sea fácticamente exacto.

Hecho. Cuando hice el equivalente de Julia de npm install o pip install, traté de hacer un origen git pull en los repositorios de github. Esto fue un problema para mí porque no tenía suficiente acceso en mi empresa para hacerlo. Estaba pasando por el proxy HTTP. El proxy HTTP se configura mediante un script JavaScript. No me gustaba hablar con github, así que tuve que configurarlo manualmente para usar un proxy.

Todo esto fue para llegar a un entorno básico donde puedo hacer un desarrollo basado en pruebas. Cuando terminé, dije: “¿Para qué demonios quiero aprender este idioma?”

Se veía bastante impresionante, pero simplemente no puedo.

Julia todavía es bastante joven, pero me gusta lo que veo y aprecio lo que los creadores intentan hacer con él.

Que esté tratando de ser el “único” lenguaje que necesitará puede ser difícil, pero a Julia se le ocurrió esta idea. Me gusta que se puedan “llamar” a otros idiomas para poder seguir utilizando funciones útiles fuera de Julia.

Recuerdo cuando me topé con Python cuando era relativamente joven. Me gustó el idioma y me quedé con él. Teniendo en cuenta su popularidad hoy, me alegro de haberlo hecho.

Creo que lo mismo puede ser cierto para Julia. Realmente aprecio el énfasis en el rendimiento, algo que falta en Python de manera significativa.

Julia todavía se equivoca con la matriz multidimensional. Tratar el escalar 0-D, los vectores 1-D, las matrices 2-D … como casos especiales, en lugar de solo una porción de una representación universal de dimensión infinita, hace que las cosas se hinchen innecesariamente y sean poco elegantes.

Además, siento que Julia se está volviendo demasiado complicada para que un científico de datos promedio como yo pueda dominarla. No es mucho más fácil que C ++ (que conozco algunos). Teniendo en cuenta que quiere atraer a personas con antecedentes de Matlab … creo que de alguna manera derrotó el propósito.

Es un lenguaje interesante, para estar seguro. Pero creo que difiere demasiado de los idiomas convencionales de las últimas décadas. No es el idioma más fácil de aprender por este motivo.

La mayoría de nuestra industria no está preparada para abandonar la OOP convencional para administrar la complejidad de grandes programas; el envío múltiple nunca se pondrá al día. Esto limitará el atractivo de Julia.

No espero que Julia se convierta en la corriente principal. Pero ya veremos, ¿no?

Intenta resolver un problema que creo que muchos programadores tienen. Escribir código de manera rápida sin tener el inconveniente de código lento.

En mi opinión, lo hace bastante bien. También es interesante para la informática científica donde normalmente necesita algunas bibliotecas adicionales que no son realmente parte del lenguaje como numpy y python. Julia tiene en mente el objetivo de la velocidad desde el principio. Algunos problemas pueden ser que es bastante nuevo y aún no está disponible en la versión 1.0. Eso tiene cambios importantes para todas las bibliotecas escritas hasta ahora.

De todos modos, escribí un paquete en Julia y disfruté trabajando con él. Trabajar con un idioma donde no hay nada en el desbordamiento de la pila tiene algunos problemas (aumenta el tiempo de codificación)

Ventajas: Julia se ve muy limpia y elegante. Juega bien con otros como Python y C. Diseñado para la velocidad. Es el ‘Ju’ en el cuaderno Jupyter. Desventajas: chico nuevo en el bloque.