Se trata de un nuevo lenguaje inventado por Apple. Lo primero que uno se pregunta, es ¿por qué todas las grandes empresas se encaprichan en inventar nuevos lenguajes? (Sun con java, MS con C#, Apple con Swift, Google con Go, etc…). ¿Acaso no hay bastantes ya? Y eso que quién lo dice es un colector obsesivo-compulsivo de lenguajes de programación. ;-)
Mi primera reacción fue de furia: soy un fan furibundo de Objective-C y cuando tocan a mi lenguaje salto como una leona. ;-) Calmados los ánimos, hay que reconocer que el jovenzuelo recién llegado tiene potencial.
¿Qué tipo de lenguaje es Swift?

Swift parece tomar prestadas ideas de Haskell con una mezcla de tipado fuerte e inferencia de tipos y algunas cosillas de Go, y Python. En resumidas cuentas, está en consonancia con la moda de lenguajes funcionales o con un fuerte componente funcional con tipado fuerte. Curiosamente, un lenguaje actual con el que se parece bastante, es F# de Microsoft. Al final, va a resultar que los extremos se tocan. ;-)
Es un excelente lenguaje y se integra perfectamente, hasta donde he podido ver en estos momentos, con el código pre-existente de Objective-C. Sin embargo, no todo lo que reluce es oro: en ciertos aspectos esenciales, es diametralmente opuesto a Objective-C. Esto, mucho me temo, hará que el pasar de uno a otro se haga cuesta arriba para más de un desarrollador.
Se compila con el mismo LLVM y utiliza algunas de las tecnologías más recientes de Apple como ARC. Las grandes ventajas que nos vende Apple es la interactividad, lo cual es una enorme ventaja con respecto a lenguajes más estándares como Objective-C, y la velocidad. Esto último ya es más difícil de creer.
Según los datos que ofrece Apple, Swift sería bastante más rápido que Objective-C en ciertos casos. Como todos los “benchmarks” éstos hay que tomárselos con calma y mucho escepticismo: el funcionamiento real a menudo, por no decir casi siempre, es distinto de las pruebas de laboratorio, sobre cuando estas son interesadas.
Posiblemente, esa diferencia tan grande de velocidad, se deba a casos específicos donde la inferencia de tipos de Swift proporcione datos vitales al compilador que Objective-C, en pro de la flexibilidad, opta por no dar. Posiblemente sea un caso específico “pesimizado” para la arquitectura de Objective-C y optimizado para Swift.
También se han publicado recientemente otros "benchmarks" donde el rendimiento de Swift es infinitamente peor al de Objective-C. Realmente, no creo que haya que hacer mucho caso a estas pruebas a pequeña escala y con Swift aun recién salido del horno.
Lo importante es entender que el valor que un lenguaje como Swift puede aportar no está en la velocidad del código (que ya es muy buena en las plataformas Apple), dado que el cuello de botella nunca está en el procesador. El cuello de botella está al otro lado del teclado. Por lo tanto, la pregunta vital es ¿Swift permite que saquemos Apps al mercado de forma más rápida?
Los “playgrounds” de Swift
Swift, con sus “playgrounds” y naturaleza interactiva podría reducir de forma drástica el tiempo de desarrollo de Apps, y ahí es donde realmente puede aportar a la comunidad.

UN playground nos permite programar de forma más interactiva.
-
¿Apple va a predicar con el ejemplo y empezar a desarrollar sus propias Apps con Swift? Esto es clave y sin eso, es lenguaje no irá a ninguna parte.
-
¿Cómo se integra con tecnologías clave de Cocoa, como Core Data?
-
¿Qué acogida tendrá entre las grandes empresas de desarrollo?
En mi opinión, veremos una adopción muy rápida de Swift por parte de los desarrolladores “Indie”: tienen menos código pre-existente y pueden ser más arriesgados. En las empresas, con grandes bases de código Objective-C, la adopción debería de ser mucho más lenta, y es de suponer que para puestos senior de desarrollo iOS / OSX, se seguirá exigiendo un conocimiento sólido tanto de Swift como de Objetive-C.
También es posible que Swift, con su aspecto de lenguaje mucho más sencillo que Objective-C y un tipado más convencional, pueda atraer a nuevos desarrolladores a la plataforma.
Y ahora qué ¿Swift u Objective C?
Mu fasil, maifrén: los dos. ;-)
Muchos ahora se cuestionan qué hacer y qué va a pasar: ¿Swift sustituye a Objective-C? ¿Si estoy aprendiendo Objetive-C, debo parar y lanzarme a Swift? ¿Qué crees tú que va a pasar con Swift y Objective C?
Apple ha sido muy clara y el sentido común nos indica lo mismo: Objective-C no va a desaparecer. Ambos lenguajes están destinados a convivir y de hecho, Swift ha sido diseñado para cohabitar bien con Objective-C.
Si vives de desarrollar para iOS u OSX es muy probable que tengas que aprender en el futuro Swift. No obstante, hoy por hoy, el presente es Objetive-C y en el futuro tendrá un nuevo compañero de vuelo.

Objective-C y Swift, volando juntos.
Serenidad y paciencia, mucha paciencia
La historia de Apple lanzando y matando lenguajes no es muy buena (véase la increíble y triste historia de Dylan), sin embargo, algo me dice que de esta vez podría ser diferente. Hay que aprender más sobre Swift a lo largo de la semana y observar a Apple durante los próximos meses. En estos momentos estoy terminando de devorar las 800 páginas del libro y os iré contando mis conclusiones.

Ante la duda, "Serenidad y paciencia" ;-)
Ver 52 comentarios
52 comentarios
wyrmez
Pues después de darme leches contra él varios días... Voy a esperarme al menos a la siguiente beta de Xcode para jugar en serio con él: hay demasiadas cosas rotas.
Ejemplos fáciles (que cualquiera puede probar, y si resulta que estoy equivocado, pues mejor): el desarrollo para aplicaciones OS X ahora usa Storyboards por defecto, y no me hace ninguna gracia. Entiendo la coherencia del movimiento, pero subir el storyboard a un SVN y que otros lo modifiquen no es tan visible como subir el código. Lo mismo con los assets y demás cosas empaquetadas que ahora no hay más remedio que tragar. Determinadas piezas de código que eran muy útiles (como diccionarios con otros diccionarios dentro, en key-value) ahora petan salvajemente Xcode (espero fervientemente que esto lo arreglen rápido). Hay cosas que es obvio están a medio cocinar -NSCollectionView intenta llamar a un tipo de segue, prototype, que no existe aun; es obvio que intenta sustituir a la propiedad de itemPrototype, y joder, me parece genial porque NSCollectionView es un dolor de huevos de programar bien, pero coño, es que ahora mismo es algo inútil- y otras que directamente son un despropósito ahora mismo -el tipado fuerte es una moda muy mona, pero que a largo plazo sólo hace un 'meh': si eres ordenado, ya sabes qué variables -o su ausencia- vas a usar y en qué casos. Es más, no me gustaría que compañeros o colaboradores fliparan y dejaran un código lleno de tipado opcional sólo porque no quieren pensar qué puede salir o no de un método bien cocinado.
En resumen: vale, sí, llevaba años pidiendo una actualización de Obj-C. Muchas gracias, Apple. Pero el PUTO ERROR de CoreData que obliga a recocinar objetos múltiples cuando haces una llamada a un Many-To-Many sigue ahí, y joder, YO puse ese ticket... ¡HACE CINCO AÑOS! ¡Y se arregla con DOS líneas! (Y están puestas en la parrafada de comentarios que cientos de personas han añadido a ese tícket, así que sería copiar y pegar: no es que haya que resolver a Fermat precisamente). Me da miedo lo que encontraré en la versión definitiva...
lordwilliam
En un mercado donde cada vez la multiplataforma es más imprescindible, ambos bandos luchan por conseguir lo contrario.
ric4
Me pierdo con estas reflexiones, que parecen dirigidas a un entorno más técnico. No pretendo entenderlo todo, claro; pero sí que me gustaría saber qué es eso del "tipado fuerte".
ksandra
Para mi es una evolución necesaria y un gran acierto por parte de apple
daviddnet
¿Como hacer para que Xcode tome esa apariencia oscura tipo Sublime Text? Lo que he visto hasta hora, es que si le pongo un tema oscuro, solo cambia la ventana de código, pero el resto de barras y ventanas no cambian.
black_ice
Gran artículo, solo sugeriría ahorrarte tantos guiños, me hace sentir incómodo. ;-)
melibeotwin
El pájaro tiene cara de robot.
spotlight
Yo creo que sí, que acabaré pasándome a Swift. La Beta de Xcode 6 me va fatál, se me cierra al borrar código seleccionado, y el autocompletado funciona cuando le da la gana.
(Buena charla el otro día en #Swiftespañol, aunque al final... problemas del directo!) ;P
Sergi Solanellas
Muy buen artículo Fernando.
DarkDudae
Pese a que el nuevo lenguaje me parece una mejora tremenda sobre la opacidad de Obj.C, a día de hoy sigo usando Delphi, que me brinda la potencia y simplicidad de Pascal con la ventaja de que un mismo código (con mínimas modificaciones) puede ser compilado para iOS, Android, OSX y Windows (Linux también si usamos Lazarus)
punk84
Pues si puedes hacer lo mismo, más rápido y con menos código, bienvenido sea.
Yo me he puesto con Swift desde que salió, y la verdad que me ha resultado muy sencillo, en pocas horas ya me vi haciendo lo que con objetive c me hubiera costado un par de días aprender y entender. (Otra cosa es Cocoa, con el que ya estoy puesto al 100%)
El Playground, una pasada!! puedes crear los objetos, funciones, etc.. que necesites sin tener que estar compilando a cada rato, ves como funciona al instante, que valores toman las variables, los resultados, me encanta! :) Luego pegas el código en el proyecto que tengas para iOS o OS X y tan tranquilo.
Me parece que este nuevo lenguaje acelerará considerablemente el desarrollo de las aplicaciones y acercará a más programadores no muy amigos de objetive c (como yo), además de atraer a aquellos que se habían decantado por soluciones de terceros como Corona SDK, PhoneGap... que muy bonitos, muy fáciles, pero al final te estás poniendo una capa de por medio que te come el rendimiento, además de no poder acceder ni de cerca a todas las APIs que ofrece el SDK original.
Buff, vale lo dejo que ya es parrafada jeje ¿se nota que me entusiasma Swift no? Saludos, ahora a salir un rato, ya pincharemos más código mañana :p
ramirezluis
Hola mi comentario mas que nada es una peticion o consejo, soy estudiante de ciencias en computacion y nos enseñan a programar en C, Python pero me encantaria aprender a programar en Objetive-C. Prodrian recomendarme algun libro de que forma ir aprendiendo. Desde ya MUCHAS GRACIAS..!!! Saludos desde Argentina!!