El Lenguaje de Programación Swift

El Lenguaje de Programación Swift

En la WWDC de 2014 se introdujo el lenguaje de programación Swift, el nuevo lenguaje de programación de Apple. Multiparadigma y de propósito general, concebido con un enfoque moderno en la seguridad, el rendimiento y el diseño de estándares de software. Su desarrollo comenzó en el año 2010 de la mano del programador de software y ex-trabajador de Apple (abandonó la empresa en Enero de 2017) Ph.D. Chris Lattner, también conocido por ser el creador principal de LLVM y el compilador Clang.

¿Qué es un lenguaje de programación?

Hasta ahora todo bien pero ¿qué es un lenguaje de programación?

La programación es un arte mediante el cual creamos aplicaciones de software. La programación nos permite adentrarnos en un proceso creativo donde todos, como programadores, podemos tener el objetivo común de una aplicación determinada y al final todas surgen a través de nosotros pero ninguna es idéntica a la otra, pueden diferenciarse en tecnología y aún las similares se contrastan entre sí por algo que me gusta resumir en la siguiente frase:

La belleza de una aplicación reside en el equilibrio entre la idea final, el código y su optimización.

Tras esta introducción podemos decir que un lenguaje de programación es una colección de expresiones y reglas que nos sirven como herramientas en la creación de un software, estas nos ayudan a canalizar esa aplicación soñada que solamente existe en nuestra mente en un código donde podemos implementar funcionalidades, obtener y almacenar información, interactuar con eventos y responder a estos de una manera específica, dada por la naturaleza propia de nuestro programa. A grandes rasgos, luego de capturar en código toda la dinámica de nuestro software, este pasa por un proceso de depuración en busca de errores y en caso de todo estar bien pues un compilador interpreta y traduce el texto plano del código a un binario, a un ejecutable compatible con cierto sistema operativo y arquitectura de hardware. En este punto y dependiendo de varios factores ya tenemos nuestra aplicación lista para su fase de prueba o uso público.

Para los que les guste la explicación más académica o clásica y de acuerdo con Wikipedia:

Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación.

El Projecto Swift

Swift como el resto de lenguajes de programación existentes cuenta con características que lo distinguen. El objetivo detrás del lenguaje de programación de Apple es crear el mejor lenguaje disponible para usos que van desde la programación de sistemas, aplicaciones para móviles y de escritorio, llegando a servicios en la nube. Más importante aún, Swift está diseñado para hacer que la tarea de escribir y mantener programas sea más fácil para el desarrollador. Para lograr este objetivo, los desarrolladores de Apple y de la comunidad, han abogado porque el lenguaje Swift sea:

  • Seguro: La manera más obvia para escribir código también debe ser de una manera segura. Un comportamiento indefinido es el enemigo de la seguridad, y los errores del desarrollador deben ser detectados antes de que el software esté en producción. Optar por la seguridad significa que Swift en algunas ocasiones se sentirá estricto, pero la claridad ahorra tiempo a largo plazo.
  • Rápido: Swift está pensado como un reemplazo para los lenguajes basados en C (C, C ++ y Objective-C). Como tal, Swift debe ser comparado a estos lenguajes en el rendimiento que logra para la mayoría de tareas, un rendimiento similar y en algunas pruebas incluso hasta mejor. El rendimiento también debe ser predecible y consistente, hay un montón de lenguajes con características novedosas como Swift pero donde la rapidez  muchas veces no se logra, de hecho rara vez podemos contar con lenguajes comparables en este aspecto a los basados en C.
  • Expresivo: El lenguaje Swift se beneficia de décadas de avance en la ciencia de la computación y ofrece una sintaxis que es sin dudas todo un placer, con las características modernas que los desarrolladores de hoy en día esperan encontrar. Pero Swift se encuentra en constante desarrollo, bajo un estricto seguimiento de los avances que va teniendo el lenguaje, en una continua evolución para hacer Swift aún mejor.

Como es lógico las herramientas son una parte fundamental del ecosistema Swift. Por esto hay un esfuerzo más que vidente en la plena integración con las herramientas de desarrollo, permitiendo programar rápidamente, presentar excelentes diagnósticos y brindar una experiencia de desarrollo cada vez más interactiva.

Características del lenguaje

Swift incluye características que hacen mucho más fluida y fácil la lectura y escritura de código, mientras que el desarrollador mantiene el control necesario sobre un lenguaje de programación de sistemas verdadero. Swift admite tipos inferidos de datos para hacer el código más limpio y menos propenso a errores, y los módulos han eliminado los encabezados (headers) y proporcionan espacios de nombres (namespaces). El manejo de memoria se realiza de forma automática, y no es necesario escribir un punto y coma al final de cada línea.

Las características de Swift están diseñadas para trabajar juntas y crear así un lenguaje potente, pero divertido de usar. Algunas características adicionales de Swift serían:

  • Unificación de Closures con funciones punteros.
  • Tuplas y valores de retorno múltiples.
  • Genéricos.
  • Iteracción rápida y concisa sobre un rango o colección.
  • Estructuras con soporte para métodos, extensiones y protocolos.
  • Patrones de programación funcional, por ejemplo: map y filter.
  • Potente gestión de errores.
  • Control de flujo avanzado con las palabras claves do, guard, defer, y repeat.

Seguridad

Swift fue diseñado desde el principio para ser más seguro que los lenguajes basados en C. Las variables siempre se inicializan antes de ser usadas, los arreglos y los números enteros son comprobados para evitar desbordamiento, y como ya mencioné, la memoria se gestiona de forma automática.

Otra característica de seguridad es que por defecto los objetos en Swift nunca pueden ser nulo, y si tratáramos de hacer uso de un objeto nil (sería el equivalente a Void en otros lenguajes) resultaría en un error en tiempo de compilación. Esto hace que la escritura de código sea mucho más limpia y más segura, al mismo tiempo que evita una causa frecuente de errores en tiempo de ejecución. Sin embargo, hay casos en los que es apropiado el uso de nil, y para estas situaciones Swift tiene una característica innovadora conocida como Optional. Un valor opcional puede contener nil, pero la sintaxis del lenguaje Swift nos obliga a tratar de manera segura con este tipo de contenedor utilizando el caracter “?” para indicar al compilador que entendemos el comportamiento y que lo vamos a manejar con precaución.

Swift.org y el Open Source

El 3 de diciembre de 2015, el lenguaje de programación de Apple, las bibliotecas, el depurador y el gestor de paquetes se publicaron bajo la licencia Apache 2.0, al mismo tiempo que Swift.org fue creado para acoger el proyecto.

Swift OpenSource

El código fuente de Swift está alojado en GitHub donde es fácil para cualquier persona obtenerlo y compilarlo ellos mismos, e incluso crear pull requests para contribuir al proyecto. Según comentan los desarrolladores de Swift todo el mundo es bienvenido, aunque sólo sea para presentar un informe de error. Para esto cuentan con excelentes guías de como funciona la comunidad y como esta es administrada.

El proyecto se rige por un equipo de ingenieros encargados de la dirección estratégica del mismo, mediante el trabajo con la comunidad, y una colección responsable de códigos que gestionan el proyecto día a día. Los líderes técnicos muchas veces llegan a través de la comunidad de colaboradores ya que cualquiera puede ganarse el derecho a dirigir un área de Swift.

Proyectos

El lenguaje Swift se gestiona como un conjunto de proyectos, cada uno con sus propios repositorios. La lista actual de proyectos incluye:

Soporte de plataformas

Uno de los aspectos más interesantes del desarrollo en Swift, es saber que ahora es libre para ser portado a una amplia gama de plataformas y dispositivos.

Apple Products

El objetivo es proporcionar compatibilidad a nivel de código fuente en todas las plataformas, incluso cuando los mecanismos implementados difieren de una a otra. El ejemplo principal en este sentido sería que la plataforma Apple incluye el runtime de Objective-C, que es requerido para acceder a los frameworks de Apple como UIKit y AppKit, mientras que en otras plataformas, tales como Linux, el runtime de Objective-C no está presente, ya que no es necesario.

El proyecto de bibliotecas del núcleo de Swift tiene como objetivo ampliar las capacidades multi-plataforma de Swift, proporcionando implementaciones portátiles de los frameworks de Apple (como el Fundation) sin la dependencia del runtime de Objective-C. Aunque las bibliotecas del núcleo están en una etapa temprana de desarrollo, con el tiempo proporcionarán una compatibilidad fuente mejorada en todas las plataformas.

Sistemas Linux

Desde que Swift es Open Source puede ser usado en Linux para desarrollar librerías y aplicaciones. Los binarios disponibles tanto en el sitio oficial como en las distintas distribuciones nos ofrecen el compilador y las librerías estándar, el Swift REPL (en otras palabras lo que vendría a ser la línea de comandos de Swift), también el depurador LLDB y las librerías del núcleo tal que sea posible luego de instalado comenzar a programar de inmediato.

¿Cómo aprender a programar en Swift?

Si has llegado hasta este punto asumo que te has propuesto aprender a programar en Swift, de ser así este Blog te servirá de gran ayuda, una referencia para temas concretos con un alto valor agregado. Aquí encontrarás tutoriales de programación básica en Swift como de programación avanzada en Swift, un contenido bien curado que muchas veces solamente se encuentra en libros bastante caros. Pero asumiendo que te guste leer libros físicos aquí te dejo una selección de libros para aprender a programar en Swift / iOS. Estos muy buenos ejemplares constituyen un camino por donde los autores te llevarán de la mano a travez de todo cuanto tienes que dominar. Progresivamente irás abriendo los ojos frente a un mundo hasta ese momento desconocido, desde un nivel básico del lenguaje y aplicaciones sencillas en el caso de iOS, hasta abordar temas avanzados y desarrollar aplicaciones más complejas. Una colección de lujo que sin lugar a dudas conforman nuestro top de libros recomendados de programación en Swift.