Apple_Swift_Logo

La gran traca final del WWDC 2014: El Lenguaje Swift

Las no-novedades del WWDC 2014

Seamos sinceros, en mi opinión, no ha habido grandes sorpresas en la Keynote del WWDC 2014. Apple es una empresa que vive de vender hardware y no hemos visto nada de hardware nuevo. Sí que ha habido algunas novedades, pero se basan en la mayoría de los casos en ponerse al día con lo que ofrece la competencia o lo que habían inventado desarrolladores de Apps ajenos a Apple.

La verdadera  Gran Novedad y una excelente noticia para todos los desarrolladores iOS,  pasó casi desapercibida y  te aseguro que  no es la que estás pensando. 😉

El lenguaje Swift de Apple

La  traca final de la Keynote ha sido un nuevo lenguaje llamado Swift que ofrece una nueva alternativa para crear Apps para iOS. Ya teníamos Objective-C, Ruby gracias a RubyMotion, Lua con Corona, C# con Xamarin e incluso Python con Kivy. Para el que no había encontrado aún un lenguaje que le gustase, he aquí una alternativa más.

Muy distinto no es, que digamos.

Muy distinto no es, que digamos.

Bombín está para bombón, como cojín está para …

La relación de Objective-C con Swift es muy similar a la que tiene Java con los otro muchos lenguajes que han sido inventados o portados a la JVM: Jython, Scala, Clojure, Groovy y un largo etcétera. Ninguno de éstos te exime de conocer Java y sus librerías de clases, pero te permite usar un sintaxis diferente y en algunos casos algunas ventajas y desventajas sustanciales. Por ejemplo, Scala y Clojure aportan ciertas ventajas notables en la programación concurrente y Scala “aporta” una sintaxis potencialmente demoníaca.

Es decir, Swift está para Objective-C como Scala está a Java. Es una alternativa más para hacer lo mismo.

Algunos lenguajes de la JVM han tenido un éxito notable en ciertos nichos, como es el caso de Scala y Clojure, mientras que la mayoría vive en la calle del Olvido. ¿Qué le ocurrirá a Swift? Es todavía muy temprano para decirlo.

Algunos hechos sobre Swift

Es un lenguaje con componentes funcionales y orientados a objeto, con un tipado muy estricto (en esto es muy distinto de Objetive-C). Recuerda bastante a Scala en las ideas en las que se basa (buenas, discutibles y malas). Lo más curioso es que es un lenguaje que va a contra-pelo de Objetive-C y eso podría ser un problema a la hora integrarse bien con la tecnología en la que se basa Swift , que es Cocoa.

¿Swift sustituye a Objective-C?

No. Para manejar Swift, se requiere conocer Cocoa y Objetive-C. El 100% del código para Cocoa, tanto de Apple como de terceros que existe en el mundo, en gitHub o donde sea está en Objective-C.

Si quieres programar para iOS y OSX, a fecha de hoy y en el futuro próximo tendrás que saber Cocoa y Objetive-C.

Es una posible alternativa para aquél que ya conoce Cocoa y Objetive-C y desea una sintaxis diferente o un control muy estricto del tipado.

Digo posible, porque está por ver varias cosas:

  • ¿Cómo se integra con las principales tecnologías de Apple?
  • ¿Cómo funciona con toda la base de código Objective-C existente?
  • ¿Apple lo va a usar para escribir sus sistemas operativos y aplicaciones?

Esto último es de vital importancia para que un lenguaje despegue. Si el cocinero no se come su propia comida, mal asunto. Veo complicado que Apple pegue un cambiazo, teniendo en cuenta la inercia enorme que tiene todo su código Objetive-C y sus ingenieros acostumbrados y preparados para dicho lenguaje.

También hay que tener en cuenta que Apple tiene un mal historial de crear lenguajes, darle mucho al bombo y luego tirarlos a la basura. Tanto los que peinamos canas como los que ya no peinan nada, recordamos a Dylan. Un lenguaje muchísimo más interesante que Objetive-C y Swift juntos, que Apple lanzó, infló y abandonó poco tiempo después.

¿Si estoy aprendiendo Objetive-C, debo parar y lanzarme a Swift?

No. Swift no sustituye a Objective-C, es una alternativa más y presupone conocimiento conocimiento de Objetive-C y de Cocoa. Todo lo que hay por debajo sigue siendo lo mismo, y es precisamente lo que cuesta aprender. Swift es simplemente una forma nueva de expresar tu conocimiento como desarrollador iOS (u OSX).

Si vives de desarrollar para iOS u OSX es muy probable que tengas que aprender en el futuro Swift. No obstante, hoy por hoy, es Objetive-C y en el futuro puede que haya un nuevo jugador relevante en el mercado. No hace falta ser un visionario para darse cuenta que los millones de Apps que hay son 100% Objetive-C, así que si Swift termina convirtiéndose en la alternativa dominante, no va a ser mañana.

Por si fuera poco, no sabemos lo que va a hacer Apple con él. Hoy por hoy no hay ninguna demanda de desarrolladores Swift y…

NADIE va a contratar a un programador Swift que NO sepa Objetive-C y Cocoa

por la sencilla razón que TODO el código existente, empezando por el de Apple está en Objetive-C.

Sigue con tu aprendizaje de Objetive-C y de Cocoa, que eso te va a servir en el presente y futuro próximo (y no tan próximo, me atrevería a decir), pero no pierdas por competo de vista a Swift.

¿Qué crees tú que va a pasar con Swift y Objective C?

Creo que Apple va a empujar muy fuerte Swift para los desarrolladores Indie pero no lo va a usar internamente para sus grandes proyectos: sistemas operativos y Apps. Swift se posicionará como lenguaje de entrada, y para puestos senior se exigirá el conocimiento de ambos. Algo parecido a lo que ocurre con VB.NET y C# en el mundillo .NET.

De todas formas, hay que  estar abiertos al futuro e ir conociendo a Swift. Sin embargo, la clave está en que haga Apple con el lenguaje en los próximos meses.

Jobs, oh Jobs ¿qué hago entonces?

Como bien decía el superhéroe de radionovelas mexicanas, Kalimán,

Serenidad, mucha serenidad

Serenidad, mucha serenidad

Serenidad y paciencia, mi querido Solín, mucha paciencia.

De momento sigue con Objective-C y vete conociendo a Swift. Aprender Swift, sabiendo Objetive-C y Cocoa es cosa rápida. Vamos, que es cosa de un fin de semana friki, no sé si me seguís. };-)

Mientras tanto, echad en vistazo al webinar “SWIFT & WWDC2014: Primeras Impresiones con Swift” , parte I, que hicimos el pasado miércoles, 11 de junio/14 con  @frr149, @gonzalezreal, @carlosicaza, @zjorge, @RCachATX, @luisobo y la participación especial de @aral. Fue un ¡éxito rotundo con más de 1200 desarrolladores de habla hispana de todo el mundo conectados!

 

¿Qué vais a hacer en Agbo Training?

Estamos destripando Swift de arriba a abajo e iremos compartiendo con vosotros lo que vayamos descubriendo mediante una serie de artículos en este blog. Iremos analizando cada uno (Objetive-C vs Swift) punto por punto y viendo para qué casos es mejor uno u otro.

Ahora, si prefieres una formación estructurada y completa sobre el tema, podrás unirte a la primera edición de nuestro más nuevo Curso Fundamentos iOS con Swift que impartiré en septiembre/2014. Solicita más información aquí.

¡Estad al loro, que pronto habrá mucha información!

¿Y si Swift no ha sido la verdadera novedad, cual ha sido?

Algo que la mayoría aha pasado por alto. Apple finalmente ha despertado ante el potencial enorme que representan las Apps corporativas, aquellas que jamás verás en la App Store, pero que generarán muchísimo m´s dinero para los desarrolladores. Muy especialmente las del sector educativo y sanitario, mercados donde el iPad es rey y que están estallando.

Así que mírate Swift, pero mira con más cariño todavía las sesiones de HealthtKit y de mercado empresarial. Esas son las que pagarán tus facturas, y algo más.

Acerca de Fernando Rodriguez

Fundador & Editor Jefe de justcodeit, Fernando Rodríguez (@frr149 & Linkedin) es desarrollador & un experto en la enseñanza de máxima calidad en programación y desarrollo para dispositivos iOS, Cocoa Touch, Objective C, Swift, Python, entre otros, aunque su mejor carta de presentación, es la opinión de sus alumnos: http://keepcoding.io/es/testimonio/ CLO en KeepCoding & Arunovo. Instructor de iOS Avanzado del Big Nerd Ranch. Profesor Asociado de la U-tad, autor invitado de revistas como iPhoneWorld, Applesfera.com & ponente habitual en conferencias dentro y fuera de España (iOSDevUK, CodeMotion, BCNDevCon, etc). En sus vidas anteriores fue un nerd de Python y Django, mago de Smalltalk, y para su pesar, galeote de C++ y un gran cocinero.

Share this:

Leave a comment