swift vs objectivec aprender ios

Una de las preguntas que más me han hecho desde que inicié con este proyecto, y que comencé a participar en comunidades de desarrolladores iOS en línea es: “¿debería aprender Objective-C o Swift si voy iniciando mi carrera como desarrollador iOS?”

En este post te voy a describir los puntos por los cuales creo que en este momento, si no sabes nada de desarrollo para iOS, te conviene comenzar directamente con Swift.

1Objective-C es un lenguaje complicado

Además de ser complejo, Objective-C es un lenguaje complicado, con una sintaxis que puede desalentarte si no le tienes la suficiente paciencia.

Si ya sabes algún lenguaje como Ruby, o Python, estarás acostumbrado a leer código que se parece mucho a esto:

def fact(n)
  if n == 0
    1
  else
    n * fact(n-1)
  end
end

puts fact(ARGV[0].to_i)

Una de las características de Ruby, por ejemplo, es que puedes leer código como si leyeras prosa. Su sintaxis es bastante sencilla, por lo que no se necesita que sepas el lenguaje para que comprendas lo que está pasando.

Mientras tanto, en Objective-C no es raro encontrarse definiciones de métodos como el siguiente

- (void)uploadFile:(File *)fileToUpload parameters:(NSDictionary<NSString *, NSString *> *)parameters withCompletionBlock:(void (^)(NSError **) __nullable)completionBlock;

Y ese es solamente el nombre del método, excluyendo definición e implementación de la clase como tal.

Dominar tan solo la sintaxis de Objetive-C te llevará algo de práctica. Incluso los que llevamos años trabajando con el lenguaje tenemos que recurrir a acordeones de vez en cuando.

Por otro lado, Swift, aunque siendo un lenguaje igual de (o más) complejo que Objective-C, está diseñado para ser amigable para el programador.

func upload(file: File, with parameters: [String:String], completion block: (NSError) -> Void) 

El anterior sería el equivalente de la definición del método de Objective-C en Swift. Sin duda, mucho más entendible, sin tantos artefactos que distraen.

2Soporte de la comunidad

Cuando recién salió a la luz Swift, en Junio del 2014, la comunidad de desarrolladores se encontró con un dilema: tomar en serio este nuevo lenguaje de Apple o no.

En aquel entonces no sabíamos que Apple planeaba hacer que Swift fuera completamente de código libre, así que, naturalmente, todos nos preguntamos qué tan serio tomaría Apple este esfuerzo de introducir un nuevo lenguaje de alto nivel para programar para sus plataformas.

Afortunadamente, dos años después, Swift se ha convertido en uno de los lenguajes con mayor adopción en los últimos años no en poca medida gracias a la gran comunidad que tiene detrás.

En los repositorios oficiales de Apple encuentras todo el código fuente de Swift y de sus proyectos adyacentes (Swift Package Manager, Clang, swift-corelibs-foundation). Además, en los mailing lists oficiales puedes estar al tanto del desarrollo del lenguaje.

Herramientas para desarrolladores, como CocoaPods, incluso ya ofrecen soporte para proyectos hechos en Swift. Otras herramientas, como Carthage, están hechas con el mismo lenguaje.

La comunidad de desarrolladores de Swift es una de las más activas en el medio, así que nunca estarás solo si te atoras en alguna cuestión.

3Ejemplos de código

Hoy en día, casi el 100% de las preguntas relacionadas con desarrollo de iOS/macOS/watchOS que se publican en StackOverflow usan código en Swift.

Incluso Apple, en sus slides del WWDC, usan Swift para demostrar la mayoría de sus nuevos APIs.

Esto debería de reconfortarte, pues habla de la popularidad del lenguaje. Mientras más personas usen una tecnología, es más probable que alguien se tope con los grandes y difíciles problemas antes que tú, lo que significa que el camino difícil estará andado por ti.

Cuando busques algún ejemplo de código Swift, seguro lo encontrarás en línea. (Esto no significa que puedas copiar y pegar ?).

4Soporte multiplataforma

El proyecto de código abierto de Swift fue originalmente liberado con soporte para macOS y para Ubuntu.

Gracias a la vibrante comunidad al rededor de este lenguaje, ahora ya incluso tiene soporte para Raspberry Pi, Android, y una cantidad de distribuciones de Linux, entre otros.

Otros actores del medio se han dedicado a crear frameworks que habilitarán el desarrollo de aplicaciones web con Swift, incluso. Vapor, Perfect, y hasta IBM con su propio framework, Kitura, han hecho tanto ruido en la comunidad, que Apple decidió crear un grupo de desarrollo interno al proyecto para agregar soporte a tecnologías web a Swift a nivel de lenguaje.

No es descabellado pensar que en un futuro no muy lejano (hablo de uno a dos años), podamos crear todo un sistema, incluyendo backend y clientes, con un solo lenguaje de programación.

5Conclusiones

En los puntos anteriores hablé mucho sobre Swift como lenguaje. La razón por la que no toqué puntos específicos relacionados con desarrollo para iOS, es que Swift (y Objective-C) es solo un lenguaje.

iOS es un sistema operativo bastante complejo, y para poder crear aplicaciones que corran en el, debemos de usar un lenguaje de programación e interactuar con los APIs apropiados.

Saber Swift no es saber programar para iOS.

La verdadera magia ocurre cuando se interactúa con los frameworks del sistema, como son UIKit, AVFoundation, Foundation, CoreFoundation, etc. Apple se encarga de desarrollar estos frameworks y crear los APIs que podemos usar desde Objective-C o Swift.

Si bien no creo que sea estrictamente necesario aprender Objective-C en 2016 para comenzar a desarrollar para iOS, sí puede ser útil de vez en cuando, cuando tengas que utilizar el debugger para encontrar un error, o integrar una librería que no tenga soporte oficial para Swift (aunque, en mi experiencia, las grandes siempre están actualizadas adecuadamente).

Al momento de que escribo este artículo, puedo decir con confianza que si te preocupan los comentarios que hay en internet haciendo referencia a que Swift es un lenguaje inmaduro que cambia muy rápidamente, puedes estar tranquilo. El camino a partir de Swift 3.0 se ve bastante despejado.

Aprender Swift el día de hoy, y aprenderlo bien, te traerá una serie de recompensas dentro de unos años — de las cuales, la menos será que también habrás aprendido un lenguaje para desarrollar aplicaciones web.

6Recursos

A continuación te dejo una serie de enlaces a recursos que te pueden ayudar a comenzar tu camino para aprender Swift:

 

DEJA UNA RESPUESTA

Please enter your comment!
Please enter your name here