Tu Primera Aplicación iOS — Objective-C o Swift?

(」゜ロ゜)」 learn. grow. succeed.

Este artículo está dedicado a aquellos programadores que están aún en el filo de la duda respecto a elegir tal o cual lenguaje y porqué no también para los que se están iniciando en este hermoso mundo de la programación.

TL;DR: Vuélvete un experto en Swift, y luego aprende los principios básicos de Objective-C.

La pregunta es: —¿Debo comenzar con ese viejo bicho raro de Apple  al que llaman Objective-C(!#@) o este moderno, innovador y fresco lenguaje de programación, Swift?

Creo que hay una mayoría que va a coincidir en que se tengan que aprender ambos al mismo tiempo, esto se debe a dos razones principales según mi perspectiva:

  1. Objective-C seguirá vigentes por unos años más.
  2. Alguna vez te va a tocar mantener algún proyecto o librería de algún otro colega.

Y del otro lado de la vereda, tenemos a ciertos programadores pregonando que debemos comenzar primero con el más viejo, para luego evolucionar al nuevo.

Inconcebible para mi mente por cierto, porque para cuando aprendas todas las mañas de Objective-C, Swift habrá evolucionado tanto que te tomaría cierto tiempo valioso para aprender también todas sus particularidades. Sí, lo sé, lo mencionado anteriormente puede que te ayude mucho en el campo laboral pero ese dependerá de la decisión de cada uno.

Yo propongo que: aprendas directamente Swift! Sin ningún tipo de remordimiento de no haber conocido la vieja escuela. Con esto no estoy diciendo que nunca aprendas Objective-C!

No te preocupes. Cuando seas un “Swift Ninja Zen Master” podrás aprender Objective-C.

Si aún así esto no te convence, paso a listarte mis razones del porqué, en términos de programación es mejor darle mayor énfasis a Swift:

1. Fácil de aprender.

Easy to play, hard to master — Unknown

Swift para mí es mucho más fácil de comprender, incluso para alguien nuevo en este rubro. Digo esto porque cuando yo comencé a programar para iOS4 (damn those [object release]) me fue muy difícil cambiarme del combo L/W/MAMP (Linux/Windows/Mac Apache, MySQL & PHP) a un lenguaje con un modelo de programación orientado a objetos el cual se basa en enviar mensajes a instancias de objetos, y no la tradicional llamada a métodos.

O también pudo haber sido simplemente que los [brackets] de este particular lenguaje me haya intimidado un poco.

Bello por donde se lo mire.

2. OpenSource.

Software is like sex, it’s better when it’s free — Linus Torvalds

Y no acoto eso porque Objective-C sea un lenguaje de pago (bue, casi casi lo era), el punto al cual hacía referencia era que Swift crece de manera exponencial en la comunidad, es bueno empezar con algo nuevo que ya tiene una posición sólida en el mercado y a la vez quiere evolucionar.

La cantidad de librerías hechas en Swift crece a pasos agigantados, puedes corroborarlos tú mismo haciendo una simple búsqueda en Google.

Lo bueno es que Apple nos deja a nuestra disposición las nuevas funciones que traerá Swift 3.

Swift—https://swift.org/

3. Veloz.

Time is money, money is power, power is pizza and pizza is knowledge. — April Ludgate

Swift fue diseñado específicamente para ser más rápido que su antecesor (según Apple, un 40% más rápido que Python), tal vez porque Objective-C fue creado como un conjunto aparte de C.

Apple Swift Introduction — https://www.youtube.com/watch?v=MO7Ta0DvEWA

4. Playground.

When you are a kid, it’s easy. You are not afraid to try, to dare. You do it. Just because you like it — Eric Cantona

Para finalizar, el exfutbolista francés acota: —So my advice to you is: Never grow up, my friends.

Y tiene mucha razón, puesto que una de las características más interesantes que Swift presenta es el Playground, un lugar de recreación que permite a los desarrolladores ver el resultado instantáneo de una porción de código, el cual es compilado en vivo mientras que escribes. También tienes la posibilidad de inspeccionar el contenido de tus variables en cada punto de la ejecución.

El Playground de Swift no solamente sirve para probar código, puedes usarlo para documentar tu proyecto agregando ejemplos, tutoriales y casos de uso comentando con sintaxis Markdown.

Los estilos disponibles son encabezados, negrita, cursiva, listas, viñetas, y enlaces a recursos externos o vinculados dentro del Playground, sí, puedes agregar imágenes y otros tipos de contenido dentro (para ello debes localizar el archivo del playground, darle click derecho y seleccionar Show Package Contents, ahí encontrarás una carpeta llamada Resources donde podrás añadir lo que desees).

Desde este link puedes descargar la demo actualizada del primer Playground que Apple nos ofrecía, en ella podrás observar como el programador puede desplegar una imagen y/o ver el resultado de una operación.

Para activar/desactivar el renderizado de los comentarios puedes hacer click en Editor » Show Raw/Rendered Markup.

Objective-C no poseía esta funcionalidad (Al menos no nativamente) — Interactive Playgrounds

5. Tuples.

We’ll make our own tuple class with blackjack and hookers — Bender Rodriguez

Tuples o tuplas en español, según las matemáticas son simplemente un conjunto finito de elementos ordenados, el cual en Swift nos sirven para agrupar múltiples valores de distintos tipos. Objective-C no posee un soporte directo para los Tuples. Se clasifican en dos tipos:

Basic Tuples

Para crear una Basic Tuple basta con agregar varios tipos de datos separados por coma dentro de un paréntesis.

En la segunda no necesitamos especificar el tipo de datos a recibir gracias a la inferencia de tipos.

Podemos acceder a los valores de dos formas:

  1. Mediante índices:
Nunca lo he visto en código en producción pero es interesante conocerlo.

2. Por descomposición:

Muy similar al constructor list() de PHP.

Named Tuples

Para acceder de manera más eficiente y rápida a los valores, podemos crear Named Tuples. La sintaxis es la siguiente

Y para acceder a los valores, lo hacemos de la siguiente manera:

La sintaxis es similar a un Struct y un Class.
Cuando creabas una función/método en Objective-C, si necesitabas retornar más de un valor, debías crear una clase entera con sus propios atributos.

… y puedo seguir explayándome con infinitos puntos acerca de este tema pero creo que es mejor limitarlo sólo a los que particularmente son más importantes para mí.

Conclusión

El objetivo de este artículo no es menospreciar a Objective-C, el cual me ha acompañado últimamente en mi carrera como programador. Al final no importa cual termines usando, el lenguaje es solo una parte de la ecuación. Lo fundamental aquí es aprenderse todos los frameworks que el SDK de iOS y OSX nos ofrece.

Pero como dije al inicio de este artículo mi recomendación final es: — Vuélvete un experto en Swift, y luego aprende los principios básicos de Objective-C.

“Stay hungry, stay foolish.” — Steve Jobs

Gracias por leer! Si este artículo fue de tu agrado no dudes en presionar el botón “Recommend” (El botón ❤) para que otras personas puedan leerlo también :)