Swift: Lo bueno y lo malo

Si decide optar por el desarrollo nativo en lugar de las soluciones multiplataforma.  Tiene que decidir qué idioma utilizar: el antiguo Objective-C o el nuevo Lenguaje Swift.

Con más de mil millones de dispositivos en uso iOS es la segunda plataforma móvil más popular del mundo. En algunas regiones, incluidos los EE. UU., El Reino Unido y Francia, los dispositivos de Apple continúan superando a Android en cuanto a las ventas de teléfonos inteligentes .

Es por eso que muchas empresas centran sus productos de software principalmente y, a veces, únicamente en la plataforma iOS como una oportunidad de inversión clave y un beneficio estratégico.

Si usted es uno de esos dueños de negocios inteligentes que siguen la ruta de desarrollo de aplicaciones de iOS , probablemente la decisión más importante que tomará es elegir la tecnología adecuada para su producto.

 

¿Qué es el lenguaje Swift y por qué debería utilizarlo?

Swift es un lenguaje de programación compilado para aplicaciones iOS, macOS, watchOS, tvOS y Linux.

Creado por Apple en 2014.

Respaldado por una de las compañías de tecnología más influyentes del mundo. Swift se convertirá en el lenguaje dominante para el desarrollo de iOS.

Fuente abierta.

Los creadores de Swift reconocieron el hecho de que para construir un lenguaje de programación definitorio, la tecnología debe estar abierta para todos. Entonces, dentro de sus tres años de existencia Swift adquirió una gran comunidad de apoyo y una gran cantidad de herramientas de terceros.

Seguro.

Su sintaxis alienta a escribir un código limpio y consistente que a veces incluso puede parecer estricto. Swift proporciona medidas de seguridad para evitar errores y mejorar la legibilidad.

Rápido. 

Swift fue construido pensando en el rendimiento. Su simple sintaxis lo ayuda a desarrollarse más rápido, también hace honor a su nombre: como se indica en apple.com , Swift es 2.6x más rápido que Objective-C y 8.4x más rápido que Python.

En demanda.

Fue en marzo de 2018 el 12º lenguaje más popular superando a Objective-C, Go, Scala y R. Con más de 40K estrellas en GitHub y 187K StackOverflow.

Sigue leyendo para aprender más sobre la tecnología o visita los siguientes enlaces si quieres saltar directamente al desarrollo con Swift:

Descargar y leer la documentación en la página web Oficial de la Comunidad Swift
descarga Xcode IDE para comenzar con Swift en MacOS
repositorio Visita Swift en GitHub para contribuir o sumergirse en los detalles técnicos del uso del lenguaje
Aprender Swift a través de Parques infantiles Swift interactivos en IPAD
Conectar con otros desarrolladores, al hacer y respondiendo preguntas rápidas en StackOverflow

Lenguaje Swift: Breve historia

Creación y lanzamiento

Presentado por primera vez en la Conferencia Mundial de Desarrolladores de 2014 (WWDC). El lenguaje de programación Swift ha generado un debate considerable desde entonces. Chris Lattner , Director Senior de Apple, Departamento de Herramientas para Desarrolladores, comenzó a diseñar los conceptos básicos del nuevo lenguaje en 2010.

No fue hasta 2013 que el equipo pudo resolver una pregunta estratégica sobre cómo el nuevo lenguaje encajaría con el ecosistema existente de Objective-C.

Forzar a todos los desarrolladores de iOS a pasar a un nuevo idioma podría haber tenido un gran efecto disruptivo en la comunidad.

Por lo tanto, la compañía decidió continuar invirtiendo en Objective-C y al mismo tiempo comprometerse con el desarrollo de este nuevo ” lenguaje de programación seguro ” 

Un año más tarde, los desarrolladores registrados de Apple pudieron echar mano a la versión beta del nuevo idioma. En el primer mes posterior a su lanzamiento como parte de las herramientas de Xcode, se descargó más de 11 millones de veces, según Tim Cook .

Las reacciones iniciales al lenguaje Swift se mezclaron en el mejor de los casos. Algunos desarrolladores estaban encantados con sus características, flexibilidad y simplicidad, mientras que otros lo criticaron.

Sin embargo, la mayoría de ellos estuvo de acuerdo en que era demasiado pronto para utilizar Swift. El lenguaje evolucionó rápidamente: se introdujeron cambios importantes con cada nueva versión.

Sin embargo, esto no impidió que Swift se convirtiera en la tecnología “más querida”, según la Encuesta de Desarrolladores de StackOverflow de 2015 .

Al mismo tiempo, el leguaje swift se incluyó entre las 10 tecnologías más buscadas.

Convertir a código abierto

Desde que Apple decidió hacer de Swift un lenguaje de código abierto en 2015, su crecimiento ha sido tremendo. Más de 60,000 personas  tomaron un clon del proyecto Swift en la primera semana después del anuncio.

Ahora, 2 años después,el lenguaje Swift es oficialmente el idioma de más rápido crecimiento en la historia.

De acuerdo con el Índice TIOBE : el idioma alcanzó el top 10 en marzo de 2017:
lenguaje swift indice tiobe
Índice TIOBE

El lenguaje se implementa activamente en el desarrollo de iOS, al crear aplicaciones de escritorio para OSX, o incluso como una tecnología de servidor gracias a IBM.

Una de las razones por las que el lenguaje Swift se ha vuelto tan popular en tan poco tiempo es probablemente el hecho de que fue creado por Apple.

Cuando una empresa con tal reconocimiento de nombre global y un ejército multimillonario de seguidores leales hace algo. Lo más probable es que esté destinado al éxito (o al menos a una buena cobertura de la prensa).

Ahora, echemos un vistazo más de cerca a los beneficios críticos e inconvenientes que acompañan a Swift.

Lenguaje Swift: ¿Qué debes saber sobre este idioma?

¿Cuáles son los riesgos involucrados en la construcción de una aplicación en lenguaje Swift?

Comenzamos con las ventajas que lo convierten en el favorito de los desarrolladores.

Ventajas de usar el lenguaje Swift para iOS Native Development

A menudo referido como “Objective-C, without the C”, el lenguaje Swift es en muchos aspectos superior a su predecesor. Para obtener una comparación detallada de Swift y Objective C.

Según el comunicado de prensa oficial , ” El lenguaje Swift combina el rendimiento y la eficiencia de los lenguajes compilados con la simplicidad y la interactividad de los lenguajes de script populares”.

Dejando a un lado los detalles de la tecnología y el marketing, veamos qué significa realmente desde una perspectiva empresarial.

  • Proceso de desarrollo rápido

Un lenguaje limpio y expresivo con una sintaxis y una gramática simplificadas. El lenguaje Swift es más fácil de leer y escribir. Es muy conciso, lo que significa que se requiere menos código para realizar la misma tarea en comparación con Objective-C.

ARC (Automatic Reference Counting) realiza todo el trabajo de seguimiento y administración del uso de la memoria de la aplicación. Por lo que los desarrolladores no necesitan dedicar tiempo y esfuerzo a hacerlo manualmente. En consecuencia, normalmente se tarda menos tiempo en construir aplicaciones iOS con Swift.

Un brillante ejemplo de esta ventaja es la nueva aplicación Lyft: la compañía reescribió completamente su aplicación iOS usando Swift .

Mientras que la antigua base de código consistía en aproximadamente 75,000 líneas de código. La versión Swift recreaba la misma funcionalidad con menos de un tercio de eso.

Además, la aplicación ahora presentaba un nuevo proceso de integración: mientras que la anterior demoraba más de un mes y varios ingenieros implementaban. La nueva incorporación a Swift se completó en una semana con solo un ingeniero.

  • Más fácil de escalar el producto y el equipo.

Además de tener un tiempo de desarrollo más rápido,  está preparado para el futuro y se puede ampliar con nuevas características según sea necesario. Por lo tanto, los proyectos Swift son típicamente más fáciles de escalar.

Además, el lenguaje Swift  permite agregar más desarrolladores a su equipo si es necesario: la incorporación es relativamente rápida debido a la simplicidad y la concisión de la base de código.

  • Mejora de la seguridad y el rendimiento

Como lo sugiere su nombre, el lenguaje Swift está hecho para ser … bueno, rápido. Con un enfoque en el rendimiento y la velocidad, el lenguaje inicialmente fue diseñado para superar a su predecesor.

A saber, la versión inicial afirmó un aumento del 40 por ciento en el rendimiento en comparación con Objective-C. A lo largo de los años, múltiples pruebas comparativas y pruebas realizadas por desarrolladores individuales lo han demostrado.

Además, hay muchas formas de optimizar el código Swift para un rendimiento aún mejor.

lenguaje swift Presentación de Apple WWDC 2014
Presentación de Apple WWDC 2014

Fuente de la imagen – AppleInsider Live Blog

Otra de las fortalezas del lenguaje Swift es su seguridad. Su sistema de escritura fuerte y su manejo de errores previenen bloqueos de código y errores productivos.

Por lo tanto, Swift tiene un ciclo de retroalimentación más corto, lo que le permite ver los errores en el código al instante y corregirlos sobre la marcha. Reduciendo en gran medida el tiempo y el esfuerzo necesarios para corregir errores y eliminando los riesgos de implementar código de baja calidad.

  • Disminución de la huella de memoria

Cuando crea una aplicación. Utiliza una gran cantidad de código de terceros: marcos o bibliotecas de código abierto reutilizables y, a menudo, de código abierto compilados en el código de su aplicación. Estas bibliotecas pueden ser estáticas y dinámicas (o compartidas).

El lenguaje Swift introdujo por primera vez las bibliotecas dinámicas en iOS cuando se lanzó. Probablemente pueda suponer que las bibliotecas estáticas están bloqueadas en el código en el momento en que las compiló. Formando parte de su archivo ejecutable. Aumentando así su tamaño y tiempo de carga.

Tampoco se pueden actualizar automáticamente ya que están bloqueados en la versión compilada.

Las bibliotecas dinámicas , por otro lado, existen fuera de su código y se cargan solo cuando es necesario. Las bibliotecas estáticas deben tener copias en todos los archivos de su programa. Mientras que las dinámicas solo necesitan solo una.

Aunque se necesita más tiempo para obtener el código dinámico desde afuera que para llamar cuando ya está incluido. Tiene la opción de seguir utilizando bibliotecas estáticas cuando desee aislar las aplicaciones que no deben compartirse.

  • Interoperabilidad con Objective-C

Como Jordan Morgan, desarrollador de iOS en Buffer, escribió :

[…] swift es el nuevo juguete y está marcado como el futuro. Objective-C está mostrando su edad y, con el tiempo, será mucho menos frecuente. Pero en el aquí y el ahora, los dos deben aprender a convivir en paz. 

En consecuencia, hay dos escenarios posibles para usar ambos en el mismo proyecto: o agrega nuevas características en Swift al código base de Objective-C existente. O usa elementos de Objective-C en su nuevo proyecto de Swift.

De cualquier manera, el lenguaje Swift es perfectamente compatible con Objective-C y puede usarse indistintamente dentro del mismo proyecto.

Esto es especialmente útil para proyectos grandes que se están extendiendo o actualizando: aún puede agregar más funciones con Swift. Aprovechando la base de código existente de Objective-C. Por lo tanto, el proceso de adaptación se vuelve más fácil y más libre de riesgos.

  • Gestión automática de la memoria

El lenguaje Swift usa el conteo automático de memoria (ARC), una tecnología destinada a agregar una función de recolector de basura que no se introdujo anteriomrente en iOS. Los lenguajes como Java, C # y Go usan recolectores de basura para eliminar instancias de clase que ya no se usan.

Son útiles para disminuir su huella de memoria, pero pueden agregar hasta un 20 por ciento a la CPU. Antes de ARC, los desarrolladores de iOS tenían que administrar la memoria manualmente y administrar constantemente los recuentos de cada clase.

El ARC de Swift determina qué instancias ya no están en uso y las elimina en su nombre. Le permite aumentar el rendimiento de su aplicación sin retrasar su memoria o CPU.

  • Potencial de apilamiento completo y compatibilidad con dispositivos cruzados

Impulsado activamente por IBM, la iniciativa de poner el lenguaje en la nube ha tenido bastante éxito hasta ahora. El lado del servidor Swift se integra con la mayoría de las tecnologías populares de back-end.

Al igual que en  el desarrollo de Javascript de pila completa , el uso del lenguaje Swift tanto en el backend como en el frontend de su aplicación permite compartir y reutilizar ampliamente el código, acelerando el proceso de desarrollo y reduciendo los esfuerzos de desarrollo.

Además, Swift brinda asistencia inmediata no solo para iPhones y iPad, sino para todos los dispositivos Apple, incluidos Apple TV, Apple Watch y Mac. Aparte de eso, ya hay soporte para Linux y la intención de portarlo oficialmente a la plataforma de Windows.

Incluso hubo algunos rumores de que Google abandonará Java a favor del lenguaje Swift como lenguaje de primera clase para el desarrollo de Android. Sin embargo, el reciente anuncio de Google I / O muestra que Kotlin es el futuro de Android .

  • Vibrante comunidad de código abierto y capacidad de aprendizaje.

El trabajo persistente de la compañía para hacer de Swift no solo el idioma principal para todos los dispositivos de Apple. Sino también para la creación de servidores web, Linux y aplicaciones de Android. Demuestra que se convertirá en una de las tecnologías más populares del mercado.

Craig Federighi, vicepresidente sénior de ingeniería de software de Apple, mencionó que:

” Consideramos que el abastecimiento abierto es un elemento crítico para que Swift alcance su potencial de ser el lenguaje, el idioma principal de los próximos 20 años de programación en nuestra industria”.

De hecho, con el sólido soporte corporativo de Apple e IBM, Swift ha ganado rápidamente una de las comunidades de código abierto más activas y vibrantes. Las tendencias de adopción, mencionadas anteriormente son el caso en cuestión.

Para un lenguaje tan joven Swift tiene una gran cantidad de recursos para ayudar a los desarrolladores a acelerar la adopción. Hay un montón de pautas comunitarias, podcasts, cursos en línea e incluso de la vida real , aplicaciones de terceros y, por supuesto, Swift Playgrounds , una experiencia de aprendizaje gamified de Apple.

"lenguajse

Fuente – github.com

 Lenguaje Swift: Los contras del lenguaje de programación Swift

Si bien parece haber tantas razones para amar a Swift el lenguaje aún está lejos de ser perfecto. Muchos desarrolladores y propietarios de negocios son demasiado cautelosos cuando se trata de cambiar al nuevo idioma. Hay varias razones para eso.

  • El lenguaje Swift todavía es bastante joven.

El lenguaje Swift puede ser el lenguaje más veloz y poderoso del mundo. Pero aún demasiado joven. Tiene muchos problemas que deben abordarse y experimentar. Después de todo, tres años es muy poco tiempo para que madure un idioma, incluso si es Swift.

Además, Swift todavía tiene un número muy limitado de bibliotecas y herramientas “nativas”: muchos de los recursos disponibles y herramientas dedicadas a versiones anteriores de Swift son inútiles con las nuevas versiones.

  • Swift es considerado un “objetivo en movimiento”

Dicho esto, se deduce que Swift a menudo se considera inestable debido a los grandes cambios que se introducen con cada nueva versión.

Uno de los problemas clave articulados por muchos desarrolladores es la falta de compatibilidad hacia atrás con las versiones de idiomas anteriores. En consecuencia, los desarrolladores se ven obligados a reescribir completamente sus proyectos si desean cambiar a la última versión de Swift.

Si bien Xcode proporciona una herramienta para ayudar a los desarrolladores a actualizar su código Swift a versiones más recientes, no soluciona todos los problemas.

Por lo tanto, llevar su proyecto a una versión Swift más nueva puede llevar mucho tiempo y ser costoso. También puede compilar cada destino por separado en caso de que algunas bibliotecas de terceros no se hayan actualizado todavía.

Aunque todavía tendrá que hacer algunas actualizaciones manuales a su código. El SDK de Apple también ha sufrido algunos cambios. Si tiene un proyecto muy grande o un proyecto que no planea actualizar con demasiada frecuencia. El lenguaje Swift podría no ser la mejor opción para usted al menos por ahora.

  • Grupo de talentos limitado

Si bien la comunidad Swift está creciendo rápidamente. Aún es significativamente más pequeña en comparación con cualquier otro lenguaje de código abierto.

De acuerdo con la última encuesta de desarrolladores de StackOverflow  solo el 8.1 por ciento de los 78,000 encuestados usan el lenguaje Swift.

Al mismo tiempo Upwork.com  un mercado global independiente. Encuentra que la demanda de programadores de Swift está creciendo. Lo que podría generar una brecha de talento.

Si bien no hay muchos desarrolladores Swift , incluso pocos de ellos tienen una experiencia práctica decente con el lenguaje. Probablemente hay una sola persona que tiene tanta experiencia con Swift. Pero Tesla ya tiene a ese jugador en su lista .

  • Interoperabilidad deficiente con herramientas de terceros e IDE.

En gran parte debido a las actualizaciones frecuentes y la falta de compatibilidad con versiones anteriores. Como se mencionó anteriormente. A menudo es difícil encontrar las herramientas adecuadas para ayudar con ciertas tareas.

Además, el IDE oficial de Apple, XCode, está rezagado en cuanto a herramientas y soporte para Swift. Los desarrolladores a menudo informan problemas con resaltado de sintaxis, autocompletar, herramientas de refactorización y compiladores.

  • Falta de soporte para versiones anteriores de iOS

Solo puede usar el lenguaje Swift en las aplicaciones que se dirigen a iOS7 y posteriores. Dicho esto, Swift no se puede usar para proyectos heredados que se ejecutan en versiones anteriores del sistema operativo.

Sin embargo, según investigaciones recientes, menos del 5% de los dispositivos de Apple se ejecutan actualmente en iOS6 o anterior.

tendencias ios
tendencias ios

Fuente – david-smith.org

IDEs para ser utilizado con el lenguaje Swift

IDE (Integrated Development Environment) es el punto principal de la interacción con el lenguaje. Aquí discutiremos IDE que pueden usarse para Swift.

Xcode. 

Como se mencionó anteriormente, trabajar con el lenguaje Swift utilizando el IDcode Xcode nativo de Apple no siempre es la mejor opción. En la mayoría de los casos, Xcode será suficiente para la ingeniería Swift.

Tiene una interfaz conveniente, soporte de autocompletado y muchas otras características que hacen que la ingeniería Swift sea suave.

Sin embargo, si también necesita utilizar HTML, CSS y JavaScript, Xcode se convertirá en un editor de texto simple que carece de instrumentos disponibles con Objective-C y Swift.

Atom. 

El editor de texto Atom y el IDE fueron creados por GitHub. Brilla si combina el desarrollo simple de iOS con otras plataformas e idiomas.

Si bien Atom es básico, tiene una gran cantidad de paquetes de código abierto creados por la comunidad GitHub que le permitirán personalizar el IDE para un desarrollo versátil y multiplataforma con autocompletado, navegación avanzada y otras características útiles.

AppCode.

 Este IDE para desarrolladores de iOS y macOS fue diseñado por JetBrains. El producto está dirigido a mejorar el rendimiento del desarrollo al proporcionar algunas herramientas de refactorización similares a las disponibles en Android Studio.

Y esta es quizás una de las razones principales por las que podría considerar AppCode sobre Xcode. Desafortunadamente, AppCode aún tiene una funcionalidad limitada con Swift en comparación con Xcode, carece de guiones gráficos.

La validación de la aplicación y el envío. Además de eso, AppCode viene con una cuota de suscripción.

Si bien también puede considerar Visual Studio y algunos otros IDE para Swift, estos tres están en la lista para verificar primero, ya que cada uno de ellos brinda beneficios únicos de trabajar con este idioma.

Objective-C vs Swift? Comparando casos de uso

Una gran parte de la elección entre los lenguajes de programación es la experiencia de su equipo y las preferencias de programación. Si tiene desarrolladores expertos en Objective-C, hacer que todos migren a Swift puede no ser una opción. Desempaquetemos en qué casos es posible que desee quedarse con Objective-C sobre Swift.

Compatibilidad con versiones anteriores

Al ser un nuevo idioma, el lenguaje Swift solo admite iOS 7 y macOS 10.9 o superior. Si tiene una razón para crear aplicaciones que deberían ejecutarse en versiones anteriores. No tiene otra opción que usar Objective-C.

Plazos ajustados

Aprender un idioma, incluso uno simple como Swift. Requiere tiempo y esfuerzo de los que faltan muchos proyectos. Si no puede darse el lujo de posponer el lanzamiento de su aplicación hasta que los miembros de su equipo se sientan cómodos con Swift. Debería considerar quedarse con Objective-C.

En caso de que el tiempo lo permita, aprender Swift definitivamente sería beneficioso a largo plazo. Considerando que Apple no planea detener su desarrollo.

Tamaño del proyecto grande

Swift es un lenguaje joven, por lo que las aplicaciones más pequeñas pueden moverse fácilmente. En la sección de contras, mencionamos que volver a escribir su programa con cada versión puede ser difícil. Por lo que hasta que este problema no se resuelva por completo, no querrá arriesgarse a tener largas listas de cambios.

Usando frameworks de terceros C o C ++

Al ser un superconjunto de C, Objective-C le permite usar de forma cómoda y sin problemas las bibliotecas de C y C ++. Si bien la necesidad de importar exclusivamente archivos C ++ es un caso raro. Debe tener en cuenta que Swift no tiene ese soporte.

¿Puede el lenguaje Swift ser el futuro del desarrollo de iOS?

A pesar de su corta edad y la controversia concomitante. Swift ya tiene una serie de historias de éxito prominentes.

Algunas de las compañías que eligieron el nuevo idioma son Lyft, LinkedIn, Coursera, Pandora, Vimeo, Twitter, Fitbit y Groupon. Además, se ha informado  que Facebook y Uber  han mostrado un interés significativo en Swift.

Con la nueva versión, supuestamente más estable. Que se lanzará a finales de este año, es de esperar que se solucionen muchos de los inconvenientes enumerados.

Por lo tanto, la adopción del lenguaje Swift continuará creciendo. Lo que pronto podría llevar a un desplazamiento completo de Objective-C como el lenguaje líder para el desarrollo de aplicaciones móviles iOS.

Para los dueños de negocios, es crucial estar preparado para cualquier cambio que el mercado pueda imponer. Por lo tanto, prepararse para cambiar al nuevo idioma con el mínimo esfuerzo y a un costo razonable debe ser una de las estrategias clave para el futuro cercano.

Dejá un comentario