"Veremos un sistema operativo universal que unifique el desarrollo, no la experiencia": Entrevista a Julio César Fernández, desarrollador y formador de Swift

"Veremos un sistema operativo universal que unifique el desarrollo, no la experiencia": Entrevista a Julio César Fernández, desarrollador y formador de Swift

10 comentarios Facebook Twitter Flipboard E-mail
"Veremos un sistema operativo universal que unifique el desarrollo, no la experiencia": Entrevista a Julio César Fernández, desarrollador y formador de Swift

Desde que nació el ordenador personal, la informática ni se crea ni se destruye. Solo se transforma. Y nosotros lo hacemos con ella. Hace no tanto tiempo, solo podíamos recurrir a una única herramienta para satisfacer nuestras necesidades informáticas. Ahora tenemos varias a nuestra disposición, hasta el punto que los conceptos de "trabajo" y "productividad" ya no son tan estancos como antes.

Responder a un email de un cliente desde el iPhone mientras voy en transporte público, ¿se considera trabajo? Revisar una presentación en un iPad con conectividad celular en la sala de espera del AVE, ¿me ayuda a ser más productivo? Confirmar una reunión a través del Apple Watch, ¿ahorra tiempo al no distraerme de lo que estoy haciendo?

Es evidente que el jugo que saquemos a un dispositivo depende de nosotros, la situación y de la tarea a realizar. Lo que para algunos usuarios no es tan valioso, para otros supone una mejora sustancial. Esto ha hecho que se dé una situación nunca vista antes en la historia de la computación personal: el ordenador ha dejado de ser el protagonista indiscutible de nuestra vida informática diaria.

Un vistazo a…
Este es el nuevo iPad Pro 2021

Entrevista a Julio César Fernández, desarrollador y formador de Swift

mbp

Como consecuencia de este desplazamiento en la atención del usuario, el iPhone se ha erigido en el dispositivo insignia de Apple. Tanto es así que el Mac también ha perdido su importancia dentro de la compañía. Hasta el punto en que en los últimos meses se ha iniciado un debate acerca del futuro del Mac y de macOS.

Hoy tenemos la oportunidad de hablar con alguien que está vigilando muy de cerca los cambios en el mundo de Apple. Es Julio César Fernández, desarrollador de iOS con varios años de experiencia a sus espaldas, autor del libro Aprendiendo Swift 3 y responsable de la web Apple Coding enfocada en el desarrollo en el mundo Apple.

Creo que muchos usuarios de Mac están preocupados por la situación actual de la plataforma: ¿Apple está dejando de lado el Mac? 

Apple está evolucionando el concepto del Mac: evoluciona el concepto del ordenador tal como lo conocemos hoy día. Hace 10 años un smartphone era “no muy inteligente” (según palabras de Steve Jobs) y hoy día ha revolucionado nuestra sociedad. Hasta el día antes de la presentación del iPhone nadie podía imaginar lo que hemos vivido en los últimos 10 años. Apple solo se prepara para el siguiente paso de la informática (no solo del Mac): la desaparición del concepto del ordenador que nos ha acompañado los últimos 40 años. Pero no dejará la herramienta, que va a transformarse y evolucionar a un nuevo concepto.

En el fondo, no resulta raro que esto suceda ya que el Mac es una plataforma y un paradigma que lleva varias décadas con nosotros. iOS apenas va a cumplir diez años en 2017, por lo que resulta más sencillo innovar aquí. ¿Significa esto que veremos desaparecer macOS y el Mac en el futuro?

Veremos la transformación de macOS y el Mac a un paradigma universal de Unidad Central de Proceso. Hoy día tenemos un dispositivo para cada tipo de pantalla: iPhone, iPad, Apple Watch, Apple TV o el Mac. Cada uno tiene una placa lógica propia y un almacenamiento. Pero ese no es el futuro. Lo es una única central de proceso que vaya con nosotros (probablemente algo parecido a un smartphone) y un almacenamiento en la nube.

"Veremos la transformación de macOS y el Mac a un paradigma universal de Unidad Central de Proceso"

Esta CPU se conectará a cualquier pantalla o dispositivos de entrada inalámbricamente, para trabajar en diferentes experiencias. Si cogemos una pantalla media, experiencia tablet táctil. Si nos sentamos en una mesa con teclado y trackpad, una experiencia ordenador. Pero el ordenador como tal no existirá. Ya estamos andando hacia ello y esa es la evolución que veremos progresivamente durante los próximos 10 años.

swift3

Y si necesitamos potencia extra para determinados procesos, existirán procesos en cloud, tanto en servidores de internet como en las oficinas, que se encargarán de realizar estas tareas más rápida y eficientemente, evolucionando el cloud-computing y consiguiendo que no sea preciso que llevemos con nosotros toda la potencia del mundo en nuestra CPU.

El artículo de Mark Gurman daba algunas indicaciones preocupantes para el futuro del Mac, como la desaparición del equipo de desarrollo de macOS. Muchos lo interpretan como una señal de las intenciones de Apple, ¿qué está pasando realmente? ¿Cuáles son los planes de Apple?

Apple se prepara para el cambio que hemos comentado y comienza a dar sus primeros pasos. El más lógico es que deje de existir un equipo de desarrollo de macOS y otro de iOS (y sus variantes). Lo lógico es que haya un solo equipo cuyas sinergias enriquezcan a los 4 sistemas de Apple y que estos vayan de la mano evolucionando, sin perder su esencia y su experiencia de usuario.

"La experiencia de usuario no va a cambiar, porque no se puede cambiar algo que funciona. Evolucionará y se universalizará alrededor de un nuevo concepto"

Creo que es el punto más importante que la gente ha de entender: la experiencia de usuario no va a cambiar, porque no se puede cambiar algo que funciona. Evolucionará y se universalizará alrededor de un nuevo concepto a la hora de definir qué experiencia será la idónea: el tamaño de la pantalla. Pero las librerías y el código que da servicios a las apps o los sistemas ha de ser el mismo y compartido.

En un artículo reciente, comentas que la fusión de iOS y macOS está próxima. ¿Esta fusión significa que macOS se convertirá en iOS?

winpho

Apple y Steve Jobs dijeron claramente: lo táctil en un portátil o sobremesa no funciona. Microsoft le ha dado la razón, porque la experiencia táctil de una Surface Book es cuando la sacamos de su base y la de Surface Studio cuando inclinamos la pantalla. Era obvio. Pero está más que probado que según el trabajo a realizar, una experiencia táctil no es tan eficiente o tal vez no lo sea una experiencia de puntero y teclado.

¿Qué es entonces lo mejor? Fusionar ambas plataformas en su núcleo y en la forma en que se desarrolla, pero no así en su experiencia e interfaz que seguirá siendo la más idónea para cada tamaño de pantalla. Al igual que una experiencia watchOS, iPad, iPhone o tvOS son diferentes, la experiencia macOS también lo será sin perder su esencia. Y la fusión vendrá de la mano del desarrollo: de una plataforma única y Universal que no distinga sistemas, como la que Microsoft ya usa con Windows Universal. Un solo diseño, un solo código, todas las plataformas.

¿Qué implicaciones tiene para un desarrollador? 

A mi modo de ver, todas positivas. El número de usuarios iOS es muy superior, lo que supone más oportunidades para los desarrolladores de apps profesionales de macOS. Y por otro lado iOS se enriquecerá de apps profesionales (lo que convertirá al iPad en un verdadero Pro). MacOS, a su vez, verá llegar muchas apps interesantes. Por otro lado, está es la lógica evolución al tener una única plataforma de desarrollo.

"Los desarrolladores podremos ofrecer modelos de suscripción de software que permitan a los usuarios pagar exactamente por aquellas herramientas que se usen y probar nuevas sin coste alguno"

Y es que el futuro del desarrollo está en el software como servicios (ya lo estamos viendo) y los desarrolladores podremos ofrecer modelos de suscripción de software que permitan a los usuarios pagar exactamente por aquellas herramientas que se usen y probar nuevas sin coste alguno. Y esto hará que nuestras herramientas tengan un ciclo de vida sostenible para los desarrolladores y permitirán más y mejores funciones. Las apps tendrán una versión Universal con un solo binario, que se actualizará a la vez (tendrá un mismo ciclo de vida) y se usará en los 4 sistemas.

Eso supondrá más ingresos y, sobre todo, más repartidos. Y además, más trabajo porque enriquecerás todas las plataformas que podrán ser programadas en un único desarrollo y con las mismas librerías para todos. Y obviamente para los desarrolladores mayor facilidad pudiendo abarcar más plataformas en un solo proyecto.

Hacer un desarrollo único que se adapte a varias plataformas diferentes (Mac, iPhone, iPad, Apple Watch, Apple TV) es un objetivo que otras compañías como Microsoft y Google aspiran alcanzar. ¿Qué ventajas y desventajas tiene Apple aquí?

Apple tiene algo muy positivo a su favor: todos sus sistemas comparten el núcleo Darwin, por lo que en cierta forma, desde el primer día el iPhone (y el resto de dispositivos) ya era un Mac. La diferencia era la arquitectura en que se ejecutaban (ARM y no x86) y que iOS creó versiones específicas de las librerías del entonces OS X y creó nuevas para propósitos concretos. Pero hoy día ya existen apps universales que comparten todo el código en watchOS, iOS y tvOS y un mismo identificador y ciclo de vida para estas. Pero macOS es el único sistema que queda sumar a la ecuación, porque éste usa Cocoa y el resto lo que se denomina Cocoa Touch.

win
"Ya hay apps con versiones preliminares de esa adaptación en Mac: la app Fotos"

Pero hoy, librerías como SpriteKit (de juegos casuales 2D de la propia Apple) ya permiten juegos que Apple llama “cross-platform” (plataforma cruzada) donde un solo desarrollo engloba los 4 sistemas, incluido macOS. Solo queda dar un paso más, renovando la librería UIKit, núcleo de todas las interfaces de iOS y que Cocoa y Cocoa Touch dejen de ser librerías diferentes: crear una fusión del actual AppKit (la librería que da soporte a las apps de macOS) y de UIKit (la que da soporte a iOS).

Ya hay apps con versiones preliminares de esa adaptación en Mac: la app Fotos. Esta usa una vista de colección de iOS y vistas apiladas. Y funciona con ratón y teclado perfectamente, como podemos comprobar por nosotros mismos.

Por lo tanto, con todas estas herramientas en su mano, Apple tiene todas las ventajas para realizar este paso y fusionar sus sistemas. Lleva años en ello aunque no nos hayamos dado cuenta. Su única desventaja es conseguir abrir las mentes de quien no ve lo positivo en lo que sería un salto tan drástico con respecto a los últimos 40 años de informática. El mismo problema al que se enfrenta Microsoft con Windows Universal, más o menos.

Si Apple tuviera en su punto de mira tener una plataforma de desarrollo unificada, ¿qué pasos debería dar para conseguirlo? ¿Hay alguno que ya hayamos visto?

Yo tengo claro que es su objetivo y los pasos que han dado son claros: primero han creado un nuevo lenguaje de programación que permite generar una especificación más moderna para las herramientas de construcción de apps [Swift], y que permite otros paradigmas de desarrollo más evolucionados como la programación orientada a protocolos, programación funcional o la reactiva-funcional. Sin olvidar la orientación a objetos, obviamente.

Luego cuenta con la infraestructura LLVM que ya es capaz de generar binarios para diferentes arquitecturas y App Thinning que se encarga de dar a cada tipo de dispositivo el binario y los recursos específicos para el mismo sin incluir aquello que no usará. Tienen herramientas como el diseño adaptativo que permiten dar un look & feel diferente y específico a cada plataforma y llevan años trabajando en secreto para conseguir que macOS se sume en una única solución junto al resto de sistemas.

Tenemos delante nuestra todas las pruebas que nos indican que macOS terminará siendo parte de los otros 3 sistemas (desde su mismo cambio de nombre). Solo hay que saber interpretarlas.

¿Qué papel juega y jugará Swift en este futuro unificado?

swift

La aparición de Swift como elemento de unión, como lenguaje de propósito general, es uno de los pasos más importantes. Steve Jobs no creó Objective-C, pero sí puso sobre él una enorme cantidad de librerías donde el lenguaje quedaba en segundo plano y el objetivo era manejar los objetos de las implementaciones de AppKit o FoundationKit (las dos librerías originales creadas para el NeXT). Swift, invierte esto y ahora el lenguaje recupera su capacidad y versatilidad, así como su independencia de las librerías que construyen las apps, juegos y demás, consiguiendo una entidad propia, algo que Objective-C (como lenguaje usado en desarrollo de Apple) nunca ha tenido.

Y Swift no se para ahí y consigue ir incluso más allá de Apple, permitiendo algo tan interesante como crear procesos de lado servidor con una potencia que supera a soluciones muy asentadas como Node.JS. Swift es la base de la nueva librería Universal. Por eso Apple ha insistido tanto en que aprendamos el lenguaje y en la última WWDC no hubo una sola ponencia en Objective-C (a pesar que sigue habiendo nuevas librerías que siguen desarrolladas en Objective-C, por tener que tratar con el código ya existente).

Hacer Swift de código abierto fue un paso clave, porque obligó a separar la Fundación que era indivisible de las librerías de desarrollo de apps para todos los sistemas (incluso macOS). No puedes crear un lenguaje de propósito general sin incluir gestión de hilos, desarrollo enfocado a pruebas (TDD) o algo tan básico como las cadenas, donde Objective-C usaba un tipo de Cocoa (NSString) para ellas ya que C no tiene un tipo cadena como tal sino una colección de caracteres. Y obviamente, Cocoa y Cocoa Touch no van a liberarse, por lo que había que dividir y extraer de ellas todo lo necesario para dar entidad propia al lenguaje. Ha sido un paso enorme el que ha dado Apple de evolución en ese sentido. Ha separado lenguaje y librerías dándoles una entidad clara a cada una.

swift2
"Comienza una etapa muy interesante de renovación e innovación, en que todos saldremos beneficiados. 2017 sin duda, será un año muy interesante"

Luego, con Swift 3, otro cambio clave: el cambio en la especificación a la hora de llamar a la actual librería usando las directrices de creación de APIs que se han creado para Swift y que cambian completamente la forma en que se invocaban muchas de las partes de Cocoa en Swift. Han cambiado la forma literal y excesivamente sintáctica de Objective-C a la hora de llamar a los objetos (y que Swift había heredado) por formas más prácticas, limpias e intuitivas.

Swift es el futuro del desarrollo Apple, más allá de la propia Apple y que incluso ha llegado al mercado empresarial. Ya está presente en IBM Bluemix, pronto lo estará en los servidores IBM-LinuxOne, ya está presente en Ubuntu… el salto al resto de sistemas (inclusive Android o Windows) está ya marcado y es cuestión de tiempo que vaya llegando a ellos.

Y ojo, como aclaración, no quiere decir que se puedan crear apps de Android en Swift. Podrá hacerse cuando alguien adapte la SDK de Android o cree una capa intermedia que permita manejarla desde Swift, al igual que ahora a través de Visual Studio para Mac puede programarse con las librerías nativas de Apple en C# (lenguaje que no soporta Xcode). Y ojo, Microsoft ya dijo en su día que Swift sería un lenguaje a poder usar en Visual Studio para Windows.

En resumen, comienza una etapa muy interesante de renovación e innovación, en que todos saldremos beneficiados. 2017 sin duda, será un año muy interesante y Swift es la herramienta esencial de Apple para toda esta nueva infraestructura que está creando y esta evolución que empieza por el desarrollo.

Contacto | Twitter.

En Applesfera | El futuro de Swift: versión 3.1 en primavera y enfoque posterior en la versión 4.

En Xataka | El sueño se podría convertir realidad: emular programas x86 en ARM64 para 2017 en Windows 10.

Comentarios cerrados
Inicio