Fundamentos del lenguaje
27 pasos en 9 series de Julia.
Julia es el lenguaje construido sobre una negativa: que la gente de ciencia no debería prototipar en un lenguaje y reescribir en otro por velocidad. Nacido en el MIT en 2012, compila con JIT el código dinámico y matemático a velocidad de máquina, y su idea insignia — el despacho múltiple, donde el tipo de cada argumento elige el método — resulta ser la razón de que las bibliotecas científicas compongan tan bien. Corre modelos climáticos, ensayos de fármacos y media astronomía cuantitativa.
Este tour teclea el núcleo: ataduras e interpolación, rangos y comprensiones, definiciones de función de una línea y despacho múltiple, bloques do, varargs y argumentos de palabra clave, vectores 1-indexados con mutación marcada por !, Dicts y tuplas con nombre, el punto de broadcasting que vectoriza lo que sea, matrices integradas, structs inmutables y paramétricos con despacho por tipos abstractos, pipes, manejo de errores, y los macros de todos los días de @show a @printf. El Bis es el trío de scripts de siempre en Julia de sabor numérico — argmin, diff y columnas de Printf.
Valores
- La forma del scriptEl Julia más pequeño: ataduras y println, sin ceremonia alguna.
- Variables y tiposLas ataduras no llevan palabra clave; el valor carga el tipo.
- StringsInterpolación con $, concatenación con *, repetición con ^.
Control de flujo
- if, elseif y guardasLos bloques cierran con end; && y || hacen de guardas de una línea.
- Bucles y rangosstart:stop y start:step:stop manejan el for; while guarda.
- ComprensionesArma un arreglo desde una expresión, un rango y un filtro opcional.
Funciones
- Funciones, cortas y largasLas de una línea se definen con =; los bloques function cierran con end.
- Despacho múltipleUn nombre de función; el método se elige por el tipo de cada argumento.
- Funciones anónimas y doFlechas para las descartables; bloques do para argumentos multilínea.
Colecciones
- Vectores1-indexados, crecibles, y el ! marca los mutadores.
- Dicts y SetsPares con =>, membresía con in, deduplicación gratis.
- Tuplas y tuplas con nombrePaquetes de tamaño fijo, con o sin etiquetas.
Broadcasting
- BroadcastingUn punto vectoriza cualquier función u operador.
- map, filter, reduceEl trío funcional, más transformaciones dentro de los pliegues.
- MatricesArreglos 2-D integrados: espacios para columnas, ; para filas.
Tipos
- StructsInmutables por defecto; mutable es una promesa aparte.
- Tipos abstractosNombra la familia, despacha sobre ella, sobreescribe por tipo concreto.
- Tipos paramétricosLa T entre llaves se elige por uso y se acota con <:.
Idiomas del lenguaje
- Pipes|> alimenta de izquierda a derecha; los pipes con punto difunden.
- Varargs y palabras clave... junta argumentos; las palabras clave viven tras el punto y coma.
- Errorestryparse para el fallo esperado, throw/try/catch para el resto.
Macros y formato
Bis
- word_freq.jlUna tabla de frecuencias con split, un Dict de conteo y una clave doble.
- grade_report.jlBoletines desde un roster de structs, guardas de nota y vcat.
- temp_stats.jlUna semana de temperaturas: argmin/argmax, barras y diff.