Todo el que empieza a desarrollar para iOS se lo ha preguntado alguna vez: «¿Por qué Apple creó Swift desde cero en lugar de seguir usando el Objective-C que ya dominaba?»
Cuando creé mi primera app con Swift, también pensé que su sintaxis era muy limpia, pero al investigar su historia descubrí un relato bastante interesante.
En resumen, Swift es un lenguaje que un ingeniero llamado Chris Lattner empezó a crear casi en solitario y en secreto en 2010. Quería resolver desde la raíz los problemas de seguridad de Objective-C, que llevaba más de 30 años prácticamente sin cambios.
Hoy repasaremos tranquilamente cómo llegó Swift al mundo.
¿Cuándo y quién creó Swift?
El desarrollo de Swift comenzó en julio de 2010.
El protagonista fue Chris Lattner. Puede que su nombre no te resulte familiar, pero si eres desarrollador, ya utilizas su trabajo a diario.
Él creó los compiladores LLVM y Clang, tecnologías fundamentales que sostienen las herramientas de desarrollo de Apple.
Al principio, parece que fue un proyecto exclusivamente de Lattner. Es famosa la historia de cómo perfeccionaba el diseño en silencio después del trabajo y durante los fines de semana.
A partir de 2011, otros ingenieros de Apple se unieron y el proyecto se convirtió en un trabajo de equipo en toda regla.
Finalmente, se presentó al mundo en la WWDC de junio de 2014. Los desarrolladores presentes quedaron atónitos, una reacción que todavía se recuerda, porque nadie esperaba aquel anuncio.
En septiembre de ese mismo año se distribuyó oficialmente junto con Xcode 6, y cualquiera pudo utilizarlo.
¿Por qué Chris Lattner sustituyó Objective-C?
Hubo una sola razón principal.
Objective-C se diseñó a principios de la década de 1980, por lo que carecía de mecanismos de seguridad modernos.
En pocas palabras, Objective-C es una estructura que añade mensajería al lenguaje C. Heredó la flexibilidad de C, pero esa flexibilidad también podía ser peligrosa.
Un ejemplo representativo es el problema de gestionar nil (un valor vacío).
En Objective-C, enviar un mensaje a un objeto nil no bloquea la app. Simplemente no ocurre nada.
Puede parecer práctico, pero es una trampa. Los errores provocados por la ausencia de un valor quedan ocultos en silencio y terminan apareciendo más adelante en otro lugar.
Mientras creaba LLVM y Clang, Lattner ya había lidiado durante años con la seguridad de memoria de Objective-C. Al final, según se cuenta, llegó a esta conclusión.
«En lugar de seguir parcheando el lenguaje existente, creemos uno nuevo que impida cometer errores desde el principio».
La idea no era solo detectar errores, sino hacer imposibles los errores en sí.
¿Qué cambió exactamente en Swift?
El cambio más simbólico que introdujo Swift fue el concepto de opciones (Optional).
Obliga a indicar a nivel sintáctico que «este valor puede estar vacío», para que el desarrollador gestione siempre los casos en los que falta un valor.
El siguiente código muestra claramente la diferencia de filosofía entre ambos lenguajes.
En Objective-C, aunque sea nil, simplemente se continúa.
// nameSi esto es nil, ¿entonces? No ocurre nada y la ejecución continúa en silencio
NSString *name = [user fetchName];
NSUInteger len = [name length]; // El resultado es 0, fácil pasar por alto los errores
Swift, en cambio, pregunta explícitamente al desarrollador si el valor puede no existir.
// namees String? un tipo — el tipo indica explícitamente que el valor puede no existir
let name: String? = user.fetchName()
if let name = name { // Usarlo de forma segura solo cuando exista un valor
print(name.count)
}
Es un código breve, pero deja clara la diferencia entre «dejar los errores sin atender» y «prevenirlos».
Además, Swift ganó popularidad gracias a la inferencia de tipos, la sintaxis concisa y la rápida ejecución. Por cierto, Swift se diseñó tomando como referencia los puntos fuertes de varios lenguajes, entre ellos Rust, Haskell, Python y Ruby, además de Objective-C.
¿Qué ocurrió con Swift después?
Swift se consolidó rápidamente tras su presentación.
Estos son, en resumen, sus principales hitos.
| Momento | Acontecimiento |
|---|---|
| Julio de 2010 | Chris Lattner comienza el desarrollo |
| Junio de 2014 | Presentación oficial en la WWDC |
| Septiembre de 2014 | Distribución oficial junto con Xcode 6 |
| Diciembre de 2015 | Publicado como código abierto (Apache 2.0) |
| Enero de 2017 | Lattner deja Apple y se incorpora a Tesla |
Resulta interesante que Lattner, el padre del lenguaje, dejara Apple en 2017. Ted Kremenek asumió después el liderazgo del proyecto Swift.
Aun así, Swift sigue firmemente establecido como el lenguaje central del ecosistema de Apple. Al convertirse en código abierto, también se expandió a Linux y al desarrollo del lado del servidor.
Me impresiona que un proyecto iniciado discretamente por un ingeniero durante los fines de semana se convirtiera en un lenguaje utilizado por desarrolladores de todo el mundo durante más de una década.
Como nació de una sola pregunta, «¿por qué?», cada elemento de la sintaxis de Swift se ve de otra manera cuando conoces su historia.
Si acabas de empezar con Swift, comprender bien los opcionales ya te dará una idea de por qué el lenguaje se diseñó así. Espero que el artículo de hoy sea tu primer paso.
Material de referencia
- Swift (programming language) - Wikipedia
- Chris Lattner - Wikipedia
- Apple’s top secret Swift language grew from work to sustain Objective C - AppleInsider

