Swift incrustado en la Raspberry Pi Pico
El creciente alcance de Swift más allá de las plataformas de Apple está despertando un interés renovado, desde su ejecución en microcontroladores como la Raspberry Pi Pico hasta el desarrollo de apps para Windows y código del lado del servidor. Los comentaristas elogian sus enums con valores asociados, pattern matching y concurrencia estructurada, comparándolos favorablemente con Dart, Kotlin, Rust y .NET, pero señalan concesiones en el manejo de null, la complejidad de la sintaxis y las semánticas de copy-on-write. Muchos ven Swift como técnicamente sólido, pero limitado por lagunas en las herramientas y un ecosistema relativamente delgado en plataformas que no son de Apple, especialmente para UI y adopción a gran escala.
Características del lenguaje Swift y enums / pattern matching
- Muchos comentaristas elogian los enums de Swift con valores asociados (sum types) y el
switchexhaustivo como algo simple pero potente. - Se comparan con los clásicos “tagged unions” / discriminated unions de ML, OCaml, F#, etc.; algunos sostienen que Swift básicamente está redescubriendo ideas de larga data.
- Algunos sienten que otros lenguajes principales (especialmente los más antiguos como Python, Java, C# históricamente) llegan tarde a adoptar estas construcciones o añaden variantes más débiles.
Nullability, optionals y narrowing de tipos
- Gran subhilo sobre
if let/guard letde Swift frente al análisis de null basado en flujo al estilo Dart/TypeScript. - Postura pro-Swift: una sintaxis de enlace separada evita usos indebidos como “comprobar y luego forzar el desempaquetado”, hace más seguros los refactors futuros y fomenta un código explícito y legible en la “ruta feliz”.
- Postura pro-Dart/TS: la promoción de tipos por control de flujo es más simple y menos verbosa; usar el mismo
if x != nullque los desarrolladores ya esperan resulta más natural. - Algunos ven los optionals omnipresentes como un “color nuevo” de función, potencialmente sobreusado y propagando la incertidumbre por el código.
Comparaciones con otros lenguajes
- Los enums de Kotlin se consideran más limitados que los de Swift; las sealed classes de Kotlin se acercan más, pero son más verbosas.
- Dart 3 incorpora patterns, sealed classes y exhaustiveness; algunos dicen que se está acercando a características al estilo Swift, pero con más ceremonialidad.
- ML/F#/OCaml se citan repetidamente como antecedente para pattern matching y unions.
- Swift se describe como situado entre Rust y C++ en ergonomía, con tipos fuertes, concurrencia estructurada y ARC frente al borrow checker de Rust.
Swift más allá de las plataformas de Apple
- Las experiencias en Linux y Raspberry Pi suelen ser positivas para herramientas sin GUI y servidores; algunos reportan un uso fluido con frameworks como Vapor.
- Existe soporte para Windows y Android, pero se describe como tosco o de nicho; siguen faltando depuración y huecos en el ecosistema.
- Embedded Swift (por ejemplo, Raspberry Pi Pico, Zephyr) se beneficia de la interoperabilidad con C/C++ y de la integración con CMake; aún está en una fase temprana, pero es prometedor.
Ecosistema, UI y viabilidad
- Hay una fuerte preocupación de que Swift esté estrechamente acoplado a las pilas de UI de Apple; en otras plataformas, la falta de un framework de UI de primera clase y un ecosistema de bibliotecas reducido se ven como grandes barreras.
- Algunos sostienen que un lenguaje solo es tan útil como su ecosistema; aunque Swift es de código abierto, la gestión a largo plazo fuera de Apple es incierta.
Herramientas y experiencia de desarrollo
- Las opiniones sobre Xcode y las herramientas de Swift divergen mucho: algunos informan estabilidad y buena productividad, otros describen caídas frecuentes y una experiencia frustrante.
- El soporte de VS Code y LSP mejora, pero no está al nivel de Xcode; los ecosistemas de .NET y Java se ponen como ejemplos de mayor madurez para trabajo multiplataforma.