typestar

Fundamentos del lenguaje

27 pasos en 9 series de Odin.

Odin es un lenguaje de sistemas en el espíritu de la claridad de Go y la franqueza de C, construido por Bill Hall (gingerBill) desde 2016 por el gusto de programar: sin flujo de control oculto, orientado a datos por temperamento, y con baterías como matemática vectorial y conjuntos de bits donde la gente de juegos y herramientas las quiere. Impulsa EmberGen y el resto de la suite de VFX en tiempo real de JangaFX, que es exactamente el trabajo que le dio forma.

Este tour cubre el núcleo tal como lo compila el Odin actual: los tres operadores de declaración, for como único bucle, switch con rangos, procedimientos con valores por defecto y retornos múltiples con nombre y grupos de sobrecarga explícitos, arreglos fijos y dinámicos y maps, structs y enums y unions, defer, el idioma de errores con or_return, el context implícito y su allocator temporal, tipos distinct, polimorfismo paramétrico, bit_set, y los paquetes core:strings, core:slice y core:fmt. El bis entrega programas completos. Cada fragmento pasa odin check y corre.

Empieza este tour

Valores

  • La forma del programaEl programa Odin más pequeño: una línea de package, un import y main atado con ::.
  • DeclaracionesTres formas de declarar: := infiere, un : solo toma tipo, :: ata una constante.
  • Tipos básicosEnteros y floats con tamaño, un rune y un bool para el diario del faro.

Control de flujo

  • if y whenif con sentencia inicial acota la lectura del viento; when ramifica en compilación.
  • Bucles forfor es el único bucle de Odin, con tres disfraces: rango, estilo C y for-in.
  • switchDos switch: uno sobre un valor con listas y rangos, uno pelado como escalera if-else.

Procedimientos

  • ProcedimientosUna calculadora de propina con parámetro por defecto y argumentos con nombre.
  • Retornos múltiplesCajas y sobrantes en una llamada: resultados con nombre y el return pelado que los manda.
  • Grupos de procsLa sobrecarga es explícita: un grupo de procs lista exactamente quiénes comparten nombre.

Colecciones

  • Arreglos y slicesUna semana fija de temperaturas y un slice que toma prestados tres días.
  • Arreglos dinámicos[dynamic] crece con append y devuelve la memoria a través de delete.
  • MapsUn registro portuario en un map: make, indexar, el idioma del ok e iteración.

Structs, enums y unions

  • StructsUn struct de kayak armado por nombre de campo y por posición, descrito por un proc común.
  • EnumsUn enum de carga, el atajo .Nombre e iteración sobre el tipo mismo.
  • UnionsUna lectura, dos formas: temperatura cuando el sensor funciona, razón cuando no.

Idiomas del lenguaje

  • deferLa limpieza declarada junto a lo que limpia: defer corre al salir del ámbito, en reversa.
  • or_return y or_elseEl idioma de errores de Odin: los errores son valores comunes, y dos operadores acortan la plomería.
  • El sistema de contextCada proc carga un context implícito; el allocator temporal es su truco más barato.

Tipos y genéricos

  • Tipos distinctCelsius y Fahrenheit comparten memoria pero se niegan a mezclarse — distinct acuna tipos nuevos.
  • Polimorfismo paramétricoUn solo largest() para enteros y floats: $T recibe el tipo de elemento al compilar.
  • bit_setDías de mercado empacados en bits: literales de conjunto, +=, membresía, card y complemento.

La biblioteca core

  • core:stringsPrefijo, búsqueda y conteo sobre un lema de taller, partido por un iterador sin reservas.
  • core:slicemax, contains y un sort en el lugar desde el paquete de utilidades de slices.
  • Los verbos de core:fmtLos verbos de printf, sabor Go: %d y %f, binario y hex, y %v para lo que sea.

Bis

  • word_freq.odinUna tabla de frecuencia de palabras con iterador de split, un map, un sort y un gráfico.
  • grade_report.odinLos puntajes de quiz se pliegan en promedios y calificaciones, y luego en un reporte.
  • temp_stats.odinUna semana de máximas diarias reducida a mínima, máxima y media, con una barra por día.

Los otros tours de Odin