Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

¿Objective-C o Swift? Qué lenguaje aprender para programar en iOS

Objective-C-contra-SwiftComo dice el viejo chiste: "¿Cómo te comerías un elefante?... Pues trocito a trocito, claro. "

Aprender a programar en un nuevo sistema operativo es como comerse un elefante: no puedes hacerlo de golpe y si quieres tener éxito debes ir poco a poco, quemando etapas.

Uno de los principales mitos del desarrollo para iOS es que es difícil por culpa de Objective-C, un lenguaje críptico y propenso a errores que no perdona los fallos. Y el mito moderno derivado de este es que Swift, por el contrario, facilita mucho las cosas ya que su sintaxis es más sencilla y directa. 

Sin embargo la realidad es que la verdadera barrera para aprender a programar para iOS es ¡dominar Cocoa Touch!. Cocoa Touch es la API para programar aplicaciones para el sistema operativo de la manzana, y ofrece una capa de abstracción por encima de iOS:

Arquitectura-Cocoa-Touch

Es una API enorme que incluye también la creación de interfaces de usuario e interacciones, y que además tiene multitud de paradigmas propios que pueden resultar extraños a muchos programadores que vienen de otros entornos.

Objective-C y Swift son el pegamento que une todo lo que ofrece Cocoa Touch. Es decir, Cocoa Touch es la base que utilizan tanto Objective-C como Swift.

Por ello, aprender un lenguaje o el otro realmente es una cuestión casi "estética" y de preferencia, puesto que lo verdaderamente importante es aprender lo que hay debajo de ambos.

Pros y contras

Dado que Swift es el nuevo y moderno lenguaje que está impulsando Apple, ¿merece la pena aprender también Objective-C o vamos directamente a por Swift?

Sin duda Swift es el futuro y además es un lenguaje moderno que ofrece muchas ventajas frente a Objective-C:

  • Código más conciso, claro y limpio que facilita la escritura y la comprensión
  • Ofrece tipado fuerte de datos, inferencia de tipos, sobrecarga de operadores...
  • Elimina los punteros, controla el desbordamiento de variables
  • Gestión automática de la memoria
  • Genéricos
  • Estructuras con métodos, extensiones y protocolos
  • Facilita mucho la depuración
  • Facilita el uso de patrones de programación funcional
  • Etc...

Por el contrario Objective-C es mucho menos transigente con los errores, tiene una sintaxis complicada y además ofrece ciertos conceptos que resultan complejos para programadores que vienen de otros lenguajes, como:

  • Protocolos
  • Categorías y selectores (aunque estos últimos se usan en Swift también tienen mucha más fricción)
  • Dispatch dinámico
  • First responders
  • Bloques
  • Etc...

Ante este panorama, claramente, parece que lo inteligente sería aprender directamente Swift ¿no?

Objective-C-contra-Swift

La realidad es que, aunque Swift resulte más fácil para un programador que viene de otras plataformas, Objective-C se puede aprender en cuestión de unas pocas horas también, aunque parezca mentira.

Dado que ambos deben utilizar Cocoa Touch por debajo y esta API está escrita en su totalidad con Objective-C, aunque programes en Swift no te puedes librar de conocer igualmente los conceptos avanzados propios del otro lenguaje, como los principios de orientación a objetos de Objective-C, punteros, protocolos, delegados, montones, pilas.... simplemente para poder usar la base. Es decir, aunque programes en Swift debes jugar con las reglas de Objective-C. Vamos, es como aquel famoso anuncio de los 90 del juego Scatergoris Winking smile.

Por ello, en mi opinión lo más interesante es aprender los dos lenguajes. Swift es el futuro  pero Objective-C es la base.

Conocer Objective-C además de Swift es bueno porque:

  • Cocoa Touch está basado en este lenguaje y conocerlo te ayudará a comprender mejor sus paradigmas.
  • Las principales bibliotecas para iOS están escritas con Objective-C.
  • Existen infinidad de aplicaciones creadas desde 2007 a 2014-2015 en Objective-C. Si lo quieres para crear aplicaciones nuevas solamente, esto no te importará demasiado, pero si vas a trabajar para empresas te tocará mantener y retocar código anterior, para lo cual es indispensable conocer el lenguaje.
  • Es mucho más fácil visualizar la ejecución de tus programas a bajo nivel y detectar problemas de memoria o CPU cuando trabajas en Objective-C que con Swift.
  • Mucha de la documentación que existe para Swift parte de la base de que ya conoces Objective-C.
  • No son excluyentes: ambos pueden trabajar en equipo, pudiendo crear programas con partes escritas con los dos.

De esta forma aunque luego en el día a día programes con Swift, en aquellas ocasiones en las que necesites sacar de tu chistera los conocimientos de Objective-C verás que te resultan indispensables y tenerlos marcará la diferencia.

 

Gracias a Eduard Tomàs por darle un repaso a este texto antes de su publicación.

Posts relacionados que te pueden interesar:

José M. Alarcón Aguín Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Gracias, me sirvió de mucho para tomar una mejor decisión.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.