La ontología de Swift
El mapa mental del lenguaje: el modelo de tipos y valores, protocolos y genéricos, macros y result builders, memoria y ownership, concurrencia estricta, y Swift fuera de Apple.
Swift se presenta al mundo como “el lenguaje de las apps de iPhone” y esa etiqueta le hace un flaco favor. Por debajo hay un lenguaje de sistemas con un sistema de tipos de primer nivel, semántica de valor con copy-on-write, un modelo de concurrencia que el compilador verifica, y desde hace poco un sistema de ownership emparentado con el de Rust. Este track deja las apps a un lado —eso vive en el track de iOS— y se ocupa del lenguaje en sí: por qué está diseñado así y hasta dónde llega.
- Ver el mapa mental completo del lenguaje Swift.
- Entender la semántica de valor y el modelo de tipos como eje central.
- Situar macros, result builders, ownership y concurrencia estricta.
- Reconocer que Swift es un lenguaje de sistemas, no solo de apps.
El territorio, de un vistazo
mindmap
root((Swift))
Tipos
Value y reference
Structs y enums
Protocolos
Genericos
some y any
Sintaxis
Control de flujo
Opcionales
Closures
Errores
Metaprogramacion
Property wrappers
Result builders
Macros
Memoria
ARC
Copy on write
Ownership
Unsafe
Concurrencia
async y await
Actores
Sendable
Distributed
Plataforma
SPM
Testing
Servidor
Embedded
CompiladorLas ideas clave
El valor es el ciudadano de primera
En Swift lo normal es struct, no class. Un valor se copia, no se comparte, y por eso no hay aliasing sorpresa. Copy-on-write hace que esa copia casi nunca cueste lo que parece.
Los protocolos con genéricos
Swift no hereda de clases: compone con protocolos y los combina con genéricos. some y any son dos formas distintas de abstraer, con costes de rendimiento muy distintos.
La concurrencia la verifica el compilador
Desde Swift 6, un data race no es un bug que descubres en producción: es un error de compilación. Actores, Sendable y el aislamiento son parte del sistema de tipos.
El lenguaje se extiende a sí mismo
Property wrappers, result builders y macros permiten construir dentro de Swift cosas que en otros lenguajes exigirían cambiar el compilador. SwiftUI entero es un DSL hecho con esas piezas.
Por qué importa
Hay un eje incómodo en el diseño de lenguajes: cuanto más garantiza el compilador, más papeleo suele exigir. C te deja hacer cualquier cosa y no te protege de nada; Rust te protege de casi todo y te cobra en anotaciones de lifetime y en peleas con el borrow checker. Swift intentó algo difícil: quedarse con buena parte de las garantías sin la ceremonia. Los opcionales eliminan el null sin obligarte a razonar sobre memoria; ARC gestiona la vida de los objetos sin recolector de basura ni lifetimes explícitos; copy-on-write te da semántica de valor sin pagar la copia; y el aislamiento de actores convierte los data races en errores de compilación sin que tengas que anotar cada préstamo. El resultado no es magia y tiene costuras visibles —el retain/release tiene coste, los existenciales hacen dispatch dinámico, la migración a concurrencia estricta ha sido dura para muchos equipos—, pero la apuesta explica casi todas las decisiones del lenguaje. Cuando en el nivel 21 llegues a borrowing, consuming y los tipos no copiables verás la misma tensión llevada al extremo: Swift bajando al territorio de Rust para quien lo necesite, sin obligar a todos a vivir ahí. Entender esa apuesta —seguridad por defecto, control bajo demanda— es entender por qué Swift es como es.
El camino
- Niveles 1–3 · Fundamentos — el toolchain, tipos y opcionales, el modelo de tipos (structs, enums, protocolos, genéricos), y la concurrencia moderna.
- Niveles 4–10 · El lenguaje a fondo — sintaxis y control, strings y Unicode, colecciones, opcionales, closures, valor vs referencia y enums avanzados.
- Niveles 11–18 · Abstracción — protocolos, genéricos avanzados,
some/any, property wrappers, result builders, macros y errores tipados. - Niveles 19–23 · Memoria y bajo nivel — ARC, copy-on-write, ownership, unsafe e interoperabilidad con C y Objective-C.
- Niveles 24–28 · Concurrencia — Swift 6 y el aislamiento, actores, AsyncSequence, concurrencia estructurada y actores distribuidos.
- Niveles 29–39 · Ecosistema y maestría — SPM, testing, servidor, embedded, multiplataforma, el compilador, rendimiento, diseño de APIs y síntesis.
- Estudia el mapa mental y localiza qué ramas te resultan familiares y cuáles son terreno nuevo.
- Abre un proyecto Swift tuyo y cuenta cuántas
classhay frente astruct. La proporción dice mucho de tu modelo mental. - Si vienes de otro lenguaje: anota qué esperas que Swift haga como tu lenguaje anterior. Ahí estarán tus sorpresas.
- Comprométete con la idea central: valor por defecto, referencia cuando la identidad importa.