7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Swift

Qué esperar de Swift 3

Scroll to top
Read Time: 11 mins

Spanish (Español) translation by Andrea Jiménez (you can also view the original English article)

Probablemente sepas que Swift 3 llegará a finales de este año. Es el primer lanzamiento que incorpora el arduo trabajo de una comunidad fantástica. Se presentaron docenas de propuestas desde que Apple abrió el código abierto Swift en 2015 y docenas fueron aceptadas después de una cuidadosa consideración por parte del equipo central. En este artículo, revisamos algunos de los cambios importantes en Swift 3.

¿De qué se trata Swift 3?

El equipo central tiene un objetivo muy claro en mente con el lanzamiento de Swift 3, creando una base sólida para el lenguaje de programación Swift. En WWDC 2016, Chris Lattner enfatizó que Swift 3 introduce una serie de cambios importantes con la intención de acertar con los fundamentos. Ese es el tema común de la próxima versión. Esto significa romper las características existentes, eliminar algunas características y mejorar la base del lenguaje.

El proyecto Swift evolution ha sido una verdadera historia de éxito para todos los involucrados en la comunidad Swift. El compromiso ha sido tremendo y el resultado es Swift 3. Apple es transparente sobre el proceso de lanzamiento y las fotografías de Swift 3 están disponibles en el sitio web de Swift y se incluyen en Xcode 8, que se encuentra en versión beta al momento de escribir este artículo.

Más que Swift

La versión Swift 3 no solo se centra en el lenguaje de programación Swift, sino que también incluye cambios sustanciales en la cadena de herramientas, la biblioteca estándar y la interoperabilidad del lenguaje con Cocoa. Recuerda que Swift es más que un idioma. Cuando hablamos de Swift, generalmente solo pensamos en el lenguaje, pero también incluye la biblioteca estándar y el administrador de paquetes.

Compatibilidad de origen

Si ya trabajaste con Swift, entonces sabes que migrar un código base de una versión a otra no es una tarea fácil. Desafortunadamente, migrar un proyecto a Swift 3 no será diferente.

Dicho esto, el objetivo principal de Swift 3 es asegurarse de que la transición de Swift 3 a futuras versiones del lenguaje no sea así. La compatibilidad de origen es un punto de enfoque clave de Swift 3.

Genialidad

Swift fue diseñado para ser un lenguaje de programación moderno, pero era igualmente importante crear un lenguaje que se viera bien y fuera... bueno... asombroso. Con Swift 3, el equipo continúa "optimizando el lenguaje para la genialidad" como dice Chris Lattner.

Si bien hay muchos cambios importantes, el resultado neto es un lenguaje que se siente y se ve muy bien. Es un placer usar Swift 3. Los cambios en Core Graphics y Grand Central Dispatch, que discutiremos en un momento, son buenos ejemplos.

¿Qué está cambiando?

Suficiente sobre lo asombroso que es Swift y lo mucho más asombroso que será Swift 3. En el resto de este artículo, me gustaría centrarme en algunos de los cambios clave introducidos en Swift 3. Ten en cuenta que Swift 3 continúa evolucionando hasta el lanzamiento oficial a finales de este año.

API

Legibilidad

Se dedicó mucho tiempo y energía a mejorar la API del lenguaje Swift. Los cambios son significativos, no se puede negar. Pero el resultado es muy, muy bonito. Con Swift 3, el equipo principal tiene como objetivo una API que se centre en la legibilidad y la accesibilidad.

Si bien muchos de nosotros nos acostumbramos a la verbosidad de Objective-C, la nueva API de Swift adopta un enfoque diferente al enfatizar y centrarse solo en lo esencial. Revisa el siguiente ejemplo de Swift 2.2.1. Este ejemplo debería parecerte familiar si ya pasaste algún tiempo con Swift... u Objective-C.

En Swift 3, este fragmento de código se ve ligeramente diferente como puedes ver a continuación.

La comunidad de Swift se dio cuenta de que no es necesario incluir una referencia a lo que se va a presentar ya que esa información ya está incluida en el primer parámetro. Como resultado, el nombre del método se vuelve más legible y más conciso. Una mejora definitiva si me preguntas.

Este es un hilo conductor en Swift 3. Varias de las propuestas que fueron aceptadas e incluidas en Swift 3 se centran en la simplificación y la eliminación de cruft del lenguaje. La API de Swift estuvo inicialmente muy influenciada por la naturaleza detallada de Objective-C. La legibilidad es excelente, pero Swift 3 reduce la verbosidad sin comprometer la legibilidad.

La comunidad Swift es de la opinión de que el diseño de una API siempre debe tener en cuenta el uso de la API y eso es claramente visible en los cambios que se introducen en Swift 3. Estoy seguro de que estás de acuerdo en que la API renovada se ve, y lee, genial.

Parámetros de etiquetado

Otro cambio importante que muchos desarrolladores agradecen es la firma coherente de funciones y métodos al incluir la primera etiqueta de parámetro de forma predeterminada. Así es como se ve una función típica en Swift 2.2.1. De forma predeterminada, la primera etiqueta de parámetro se omite cuando se invoca la función.

Eso ya no es cierto en Swift 3. El primer parámetro ya no recibe un tratamiento especial, lo cual es un cambio muy bienvenido.

Debido a este cambio, podrías mejorar aún más el ejemplo anterior omitiendo la referencia a la vista en el nombre de la función.

Importar como miembro

Trabajar con API C en Swift siempre se ha visto y se ha sentido torpe. Las funciones de Core Graphics, por ejemplo, se importan como funciones globales, lo que no es una gran solución y, como resultado, usar Core Graphics en Swift no se siente bien.

Lo mismo se aplica a Grand Central Dispatch. En el siguiente ejemplo, usamos Grand Central Dispatch para enviar de forma asincrónica una tarea a una cola en segundo plano.

En Swift 3, la API se parece mucho más a una API Swift nativa. Las funciones se importan como métodos, lo que da como resultado la siguiente sintaxis en Swift 3.

Eliminación de características

La comunidad de Swift también acordó la eliminación de una serie de funciones, algunas de las cuales han provocado algunas discusiones fuertes. Me gustaría señalar cuatro de ellas.

Bucles for de Estilo C

¿Te resulta familiar?

Los bucles for de estilo C ya no están disponibles en Swift 3. Espera. ¿Qué? ¿Por qué? Es una muy buena pregunta. Puedes leer la propuesta, presentada por Erica Sadun, en GitHub. Esto nos lleva al siguiente cambio polémico.

Dile adiós a ++ y --

Poco después de abrir Swift, Chris Lattner, el creador de Swift, presentó una propuesta para eliminar los operadores de incremento y decremento del lenguaje. En su propuesta, menciona que estos operadores se agregaron, "sin mucha consideración", al principio del desarrollo de Swift. Para limpiar la API de Swift y evitar confusiones, ++ y -- ya no están disponibles en Swift.

Sin embargo, no te asustes. La solución es sencilla. No hay necesidad de preocuparse.

No más parámetros var

Si estás familiarizado con las funciones de Swift, entonces sabes que los parámetros de una función son constantes de forma predeterminada. Puedes cambiar este comportamiento anteponiendo un nombre de parámetro con la palabra clave var. Para los parámetros variables, se pasa una copia variable del parámetro a la función.

Pero, ¿en qué se diferencia esto de los parámetros marcados como inout? Correcto. Eso es exactamente lo que muchos de nosotros nos hemos estado preguntando y es la motivación para eliminar parámetros variables del lenguaje.

Desde la perspectiva de la función, no hay diferencia, es decir, la función recibe una copia local mutable del valor del parámetro. Sin embargo, como su nombre lo indica, un parámetro marcado como inout escribe su valor en la variable original.

Para evitar cualquier confusión, los parámetros var ya no están disponibles en Swift 3. Afortunadamente, los parámetros inout llegaron para quedarse.

Hablando de parámetros inout, en Swift 3, la palabra clave inout está integrada en la sintaxis de tipo de los parámetros de función. Revisa los siguientes ejemplos para comprender mejor este cambio.

Comportamiento implícito de Tuple Splat

A pesar de que Swift es todavía muy nuevo, hay muchas características que son bastante avanzadas. ¿Sabías que puedes pasar una tupla a una función en lugar de una lista de parámetros? Sin embargo, no hay necesidad de celebrar. Esta característica se va a eliminar en Swift 3.

Chris Lattner se refiere a este comportamiento como "lindo" en su propuesta para eliminar la función. Si bien este comportamiento puede ser útil de vez en cuando, parece tener bastantes consecuencias. El motivo de plantear esta propuesta es resaltar el objetivo principal del equipo central, simplificar la sintaxis y la API del lenguaje.

Puedo ver cómo esta característica se veía bien al principio, pero, a medida que el lenguaje creció, ganó en complejidad y más personas comenzaron a usarla, características como esta están agregando un valor limitado al lenguaje a cambio de lo que parece ser una lista de complicaciones, incluidos los problemas de rendimiento durante la compilación y la complejidad del verificador de tipos que podrían evitarse omitiendo la característica.

¿Cuál es el trato con Swift 2.3?

La semana pasada, escribí sobre Xcode 8. En ese artículo, mencioné que Xcode 8 es compatible con Swift 2.3 y Swift 3. Pero, ¿qué es Swift 2.3 y cómo se compara con Swift 2.2?

Swift 2.3 es una actualización menor pero importante de Swift. La principal diferencia con Swift 2.2.1, la versión incluida en Xcode 7.3.1, es la compatibilidad con los SDK para los nuevos sistemas operativos de Apple, iOS 10, tvOS 10, watchOS 3 y macOS Sierra (10.12).

Esto significa que puedes usar y construir contra los nuevos SDK sin dar el salto a Swift 3. Con Xcode 8, puedes enviar aplicaciones a la App Store utilizando Swift 2.3 o Swift 3. El equipo de Swift sabe y entiende que la migración a Swift 3 tiene un impacto significativo en los proyectos existentes que incluyen Swift. Swift 2.3 se asegura de que puedas migrar tus proyectos cuando lo consideres oportuno.

Herramientas

Lo que también me gusta del proyecto Swift es que las herramientas se desarrollan junto con el lenguaje. Esto significa que las herramientas también reciben una actualización sustancial cuando Swift 3 se lance a finales de este año.

Documentación

Durante la WWDC, ya vimos un poco de los cambios realizados en la documentación. Si bien esto puede parecer trivial, ¿alguna vez consideraste cuánto tiempo pasas navegando por la documentación? Tengo debilidad por detalles como este y aprecio el esfuerzo que el equipo ha puesto para hacer que la documentación sea más accesible. Los cambios son aún más dramáticos en Xcode 8 como escribí la semana pasada.

Xcode

Por ahora, la gran mayoría de los desarrolladores de Swift usan Xcode como su caballo de batalla. Esto puede cambiar en el futuro a medida que el lenguaje gane terreno en otras plataformas. ¿No tenía Google planes para usar Swift en Android?

En Xcode 8, la integración de Swift ha mejorado mucho. Navegar por la biblioteca estándar, por ejemplo, es más intuitivo. En una de las sesiones de WWDC 2016, Ewa Matejska ilustra cómo las interfaces sintetizadas son ahora más intuitivas y fáciles de entender. Esto hace que navegar por la biblioteca estándar sea menos abrumador.

Esto nos lleva a la compilación y optimización. Es posible que hayas oído hablar de la optimización de todo el módulo. Esta característica ahora está habilitada de forma predeterminada en Xcode. Afecta al rendimiento de la aplicación y Apple recomienda tener esta característica habilitada en producción. Si quieres obtener más información sobre la optimización de todo el módulo, te recomiendo que leas este artículo de Keith Harrison.

Si bien la optimización de todo el módulo aumenta el tiempo de compilación cuando creas un proyecto por primera vez, los resultados valen la pena. Las compilaciones posteriores se ven menos afectadas gracias a la compilación incremental.

Conclusión

Swift 3 es un hito importante para todos los involucrados en la comunidad Swift. Aunque a nadie le gustan los cambios importantes, la dirección que está tomando el lenguaje se está volviendo más clara, lo que hace que la plataforma sea más robusta y esté lista para cambios futuros sin comprometer la compatibilidad de fuentes.

En este artículo, destaqué algunos de los cambios más importantes que puedes esperar en Swift 3. Para obtener una lista completa de los cambios, te animo a visitar la guía de migración en el sitio web de Swift.

También puedes visitar el proyecto Swift evolution en GitHub para leer más sobre las propuestas que se aceptaron y en las que aún se está trabajando. No te asustes. Las propuestas suelen ser fáciles de entender. De hecho, el objetivo del proyecto Swift evolution es que todos puedan contribuir a la discusión. ¿Qué te detiene?

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.