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.
-
¿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.
De todas formas, os dejo mis primeras reflexiones sobre esta relación que publiqué ayer en mi blog personal CocoaMental.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.
En resumidas cuentas, como decía el superhéroe mexicano Kalimán : “Serenidad y paciencia, mucha paciencia”. ;-)
Ver 52 comentarios